From 1bf77b3ec3a8365cda651bd3979deb486fad908b Mon Sep 17 00:00:00 2001 From: Michael Kapelko Date: Wed, 16 Oct 2019 18:51:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=BA=D0=BE=D0=BD=D0=BA=D0=B8=20=D0=BB?= =?UTF-8?q?=D0=B8=D1=88=D1=8C=20=D1=81=20=D0=B4=D0=B8=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BD=D1=86=D0=B8=D0=BE=D0=BD=D0=BD=D1=8B=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- муром_1.2.0.html | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/муром_1.2.0.html b/муром_1.2.0.html index b30f6fc..f832cc3 100644 --- a/муром_1.2.0.html +++ b/муром_1.2.0.html @@ -37,6 +37,34 @@ var murom = муром; {"status":true} ], + +[ +"uikit.min.css_3.2.0", +"LyohIFVJa2l0IDMuMi4wIHwgaHR0cDovL3d3dy5nZXR1aWtpdC5jb20gfCAoYykgMjAxNCAtIDIwMTkgWU9PdGhlbWUgfCBNSVQgTGljZW5zZSAqL2h0bWx7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixSb2JvdG8sIkhlbHZldGljYSBOZXVlIixBcmlhbCwiTm90byBTYW5zIixzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIiwiTm90byBDb2xvciBFbW9qaSI7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzY2Nn1ib2R5e21hcmdpbjowfWE6YWN0aXZlLGE6aG92ZXJ7b3V0bGluZTowfS51ay1saW5rLGF7Y29sb3I6IzFlODdmMDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0udWstbGluay10b2dnbGU6Zm9jdXMgLnVrLWxpbmssLnVrLWxpbmstdG9nZ2xlOmhvdmVyIC51ay1saW5rLC51ay1saW5rOmhvdmVyLGE6aG92ZXJ7Y29sb3I6IzBmNmVjZDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWFiYnJbdGl0bGVde3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkOy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXN0eWxlOmRvdHRlZH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9Om5vdChwcmUpPmNvZGUsOm5vdChwcmUpPmtiZCw6bm90KHByZSk+c2FtcHtmb250LWZhbWlseTpDb25zb2xhcyxtb25hY28sbW9ub3NwYWNlO2ZvbnQtc2l6ZTouODc1cmVtO2NvbG9yOiNmMDUwNmU7d2hpdGUtc3BhY2U6bm93cmFwO3BhZGRpbmc6MnB4IDZweDtiYWNrZ3JvdW5kOiNmOGY4Zjh9ZW17Y29sb3I6I2YwNTA2ZX1pbnN7YmFja2dyb3VuZDojZmZkO2NvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmV9bWFya3tiYWNrZ3JvdW5kOiNmZmQ7Y29sb3I6IzY2Nn1xe2ZvbnQtc3R5bGU6aXRhbGljfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3Vwe3RvcDotLjVlbX1zdWJ7Ym90dG9tOi0uMjVlbX1hdWRpbyxjYW52YXMsaWZyYW1lLGltZyxzdmcsdmlkZW97dmVydGljYWwtYWxpZ246bWlkZGxlfWNhbnZhcyxpbWcsdmlkZW97bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG87Ym94LXNpemluZzpib3JkZXItYm94fUBzdXBwb3J0cyAoZGlzcGxheTpibG9jayl7c3Zne21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveH19c3ZnOm5vdCg6cm9vdCl7b3ZlcmZsb3c6aGlkZGVufWltZzpub3QoW3NyY10pe21pbi13aWR0aDoxcHg7dmlzaWJpbGl0eTpoaWRkZW59aWZyYW1le2JvcmRlcjowfWFkZHJlc3MsZGwsZmllbGRzZXQsZmlndXJlLG9sLHAscHJlLHVse21hcmdpbjowIDAgMjBweCAwfSorYWRkcmVzcywqK2RsLCorZmllbGRzZXQsKitmaWd1cmUsKitvbCwqK3AsKitwcmUsKit1bHttYXJnaW4tdG9wOjIwcHh9LnVrLWgxLC51ay1oMiwudWstaDMsLnVrLWg0LC51ay1oNSwudWstaDYsLnVrLWhlYWRpbmctMnhsYXJnZSwudWstaGVhZGluZy1sYXJnZSwudWstaGVhZGluZy1tZWRpdW0sLnVrLWhlYWRpbmctc21hbGwsLnVrLWhlYWRpbmcteGxhcmdlLGgxLGgyLGgzLGg0LGg1LGg2e21hcmdpbjowIDAgMjBweCAwO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsUm9ib3RvLCJIZWx2ZXRpY2EgTmV1ZSIsQXJpYWwsIk5vdG8gU2FucyIsc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIlNlZ29lIFVJIFN5bWJvbCIsIk5vdG8gQ29sb3IgRW1vamkiO2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojMzMzO3RleHQtdHJhbnNmb3JtOm5vbmV9KisudWstaDEsKisudWstaDIsKisudWstaDMsKisudWstaDQsKisudWstaDUsKisudWstaDYsKisudWstaGVhZGluZy0yeGxhcmdlLCorLnVrLWhlYWRpbmctbGFyZ2UsKisudWstaGVhZGluZy1tZWRpdW0sKisudWstaGVhZGluZy1zbWFsbCwqKy51ay1oZWFkaW5nLXhsYXJnZSwqK2gxLCoraDIsKitoMywqK2g0LCoraDUsKitoNnttYXJnaW4tdG9wOjQwcHh9LnVrLWgxLGgxe2ZvbnQtc2l6ZToyLjIzMTI1cmVtO2xpbmUtaGVpZ2h0OjEuMn0udWstaDIsaDJ7Zm9udC1zaXplOjEuN3JlbTtsaW5lLWhlaWdodDoxLjN9LnVrLWgzLGgze2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MS40fS51ay1oNCxoNHtmb250LXNpemU6MS4yNXJlbTtsaW5lLWhlaWdodDoxLjR9LnVrLWg1LGg1e2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuNH0udWstaDYsaDZ7Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS40fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstaDEsaDF7Zm9udC1zaXplOjIuNjI1cmVtfS51ay1oMixoMntmb250LXNpemU6MnJlbX19b2wsdWx7cGFkZGluZy1sZWZ0OjMwcHh9b2w+bGk+b2wsb2w+bGk+dWwsdWw+bGk+b2wsdWw+bGk+dWx7bWFyZ2luOjB9ZHR7Zm9udC13ZWlnaHQ6NzAwfWRke21hcmdpbi1sZWZ0OjB9LnVrLWhyLGhye292ZXJmbG93OnZpc2libGU7dGV4dC1hbGlnbjppbmhlcml0O21hcmdpbjowIDAgMjBweCAwO2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNWU1ZTV9KisudWstaHIsKitocnttYXJnaW4tdG9wOjIwcHh9YWRkcmVzc3tmb250LXN0eWxlOm5vcm1hbH1ibG9ja3F1b3Rle21hcmdpbjowIDAgMjBweCAwO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjEuNTtmb250LXN0eWxlOml0YWxpYztjb2xvcjojMzMzfSorYmxvY2txdW90ZXttYXJnaW4tdG9wOjIwcHh9YmxvY2txdW90ZSBwOmxhc3Qtb2YtdHlwZXttYXJnaW4tYm90dG9tOjB9YmxvY2txdW90ZSBmb290ZXJ7bWFyZ2luLXRvcDoxMHB4O2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojNjY2fWJsb2NrcXVvdGUgZm9vdGVyOjpiZWZvcmV7Y29udGVudDoi0YLQkNCkICJ9cHJle2ZvbnQ6Ljg3NXJlbS8xLjUgQ29uc29sYXMsbW9uYWNvLG1vbm9zcGFjZTtjb2xvcjojNjY2Oy1tb3otdGFiLXNpemU6NDt0YWItc2l6ZTo0O292ZXJmbG93OmF1dG87cGFkZGluZzoxMHB4O2JvcmRlcjoxcHggc29saWQgI2U1ZTVlNTtib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kOiNmZmZ9cHJlIGNvZGV7Zm9udC1mYW1pbHk6Q29uc29sYXMsbW9uYWNvLG1vbm9zcGFjZX06OnNlbGVjdGlvbntiYWNrZ3JvdW5kOiMzOWY7Y29sb3I6I2ZmZjt0ZXh0LXNoYWRvdzpub25lfWRldGFpbHMsbWFpbntkaXNwbGF5OmJsb2NrfXN1bW1hcnl7ZGlzcGxheTpsaXN0LWl0ZW19dGVtcGxhdGV7ZGlzcGxheTpub25lfS51ay1icmVha3BvaW50LXM6OmJlZm9yZXtjb250ZW50Oic2NDBweCd9LnVrLWJyZWFrcG9pbnQtbTo6YmVmb3Jle2NvbnRlbnQ6Jzk2MHB4J30udWstYnJlYWtwb2ludC1sOjpiZWZvcmV7Y29udGVudDonMTIwMHB4J30udWstYnJlYWtwb2ludC14bDo6YmVmb3Jle2NvbnRlbnQ6JzE2MDBweCd9OnJvb3R7LS11ay1icmVha3BvaW50LXM6NjQwcHg7LS11ay1icmVha3BvaW50LW06OTYwcHg7LS11ay1icmVha3BvaW50LWw6MTIwMHB4Oy0tdWstYnJlYWtwb2ludC14bDoxNjAwcHh9LnVrLWxpbmstbXV0ZWQgYSxhLnVrLWxpbmstbXV0ZWR7Y29sb3I6Izk5OX0udWstbGluay1tdXRlZCBhOmhvdmVyLC51ay1saW5rLXRvZ2dsZTpmb2N1cyAudWstbGluay1tdXRlZCwudWstbGluay10b2dnbGU6aG92ZXIgLnVrLWxpbmstbXV0ZWQsYS51ay1saW5rLW11dGVkOmhvdmVye2NvbG9yOiM2NjZ9LnVrLWxpbmstdGV4dCBhLGEudWstbGluay10ZXh0e2NvbG9yOmluaGVyaXR9LnVrLWxpbmstdGV4dCBhOmhvdmVyLC51ay1saW5rLXRvZ2dsZTpmb2N1cyAudWstbGluay10ZXh0LC51ay1saW5rLXRvZ2dsZTpob3ZlciAudWstbGluay10ZXh0LGEudWstbGluay10ZXh0OmhvdmVye2NvbG9yOiM5OTl9LnVrLWxpbmstaGVhZGluZyBhLGEudWstbGluay1oZWFkaW5ne2NvbG9yOmluaGVyaXR9LnVrLWxpbmstaGVhZGluZyBhOmhvdmVyLC51ay1saW5rLXRvZ2dsZTpmb2N1cyAudWstbGluay1oZWFkaW5nLC51ay1saW5rLXRvZ2dsZTpob3ZlciAudWstbGluay1oZWFkaW5nLGEudWstbGluay1oZWFkaW5nOmhvdmVye2NvbG9yOiMxZTg3ZjA7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVrLWxpbmstcmVzZXQgYSxhLnVrLWxpbmstcmVzZXR7Y29sb3I6aW5oZXJpdCFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50fS51ay1saW5rLXRvZ2dsZXtjb2xvcjppbmhlcml0IWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnR9LnVrLWxpbmstdG9nZ2xlOmZvY3Vze291dGxpbmU6MH0udWstaGVhZGluZy1zbWFsbHtmb250LXNpemU6Mi42cmVtO2xpbmUtaGVpZ2h0OjEuMn0udWstaGVhZGluZy1tZWRpdW17Zm9udC1zaXplOjIuODg3NXJlbTtsaW5lLWhlaWdodDoxLjF9LnVrLWhlYWRpbmctbGFyZ2V7Zm9udC1zaXplOjMuNHJlbTtsaW5lLWhlaWdodDoxLjF9LnVrLWhlYWRpbmcteGxhcmdle2ZvbnQtc2l6ZTo0cmVtO2xpbmUtaGVpZ2h0OjF9LnVrLWhlYWRpbmctMnhsYXJnZXtmb250LXNpemU6NnJlbTtsaW5lLWhlaWdodDoxfUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstaGVhZGluZy1zbWFsbHtmb250LXNpemU6My4yNXJlbX0udWstaGVhZGluZy1tZWRpdW17Zm9udC1zaXplOjMuNXJlbX0udWstaGVhZGluZy1sYXJnZXtmb250LXNpemU6NHJlbX0udWstaGVhZGluZy14bGFyZ2V7Zm9udC1zaXplOjZyZW19LnVrLWhlYWRpbmctMnhsYXJnZXtmb250LXNpemU6OHJlbX19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstaGVhZGluZy1tZWRpdW17Zm9udC1zaXplOjRyZW19LnVrLWhlYWRpbmctbGFyZ2V7Zm9udC1zaXplOjZyZW19LnVrLWhlYWRpbmcteGxhcmdle2ZvbnQtc2l6ZTo4cmVtfS51ay1oZWFkaW5nLTJ4bGFyZ2V7Zm9udC1zaXplOjExcmVtfX0udWstaGVhZGluZy1kaXZpZGVye3BhZGRpbmctYm90dG9tOmNhbGMoNXB4ICsgLjFlbSk7Ym9yZGVyLWJvdHRvbTpjYWxjKC4ycHggKyAuMDVlbSkgc29saWQgI2U1ZTVlNX0udWstaGVhZGluZy1idWxsZXR7cG9zaXRpb246cmVsYXRpdmV9LnVrLWhlYWRpbmctYnVsbGV0OjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6Y2FsYygtLjEgKiAxZW0pO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtoZWlnaHQ6Y2FsYyg0cHggKyAuN2VtKTttYXJnaW4tcmlnaHQ6Y2FsYyg1cHggKyAuMmVtKTtib3JkZXItbGVmdDpjYWxjKDVweCArIC4xZW0pIHNvbGlkICNlNWU1ZTV9LnVrLWhlYWRpbmctbGluZXtvdmVyZmxvdzpoaWRkZW59LnVrLWhlYWRpbmctbGluZT4qe2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1oZWFkaW5nLWxpbmU+OjphZnRlciwudWstaGVhZGluZy1saW5lPjo6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoNTAlIC0gKCguMnB4ICsgLjA1ZW0pLyAyKSk7d2lkdGg6MjAwMHB4O2JvcmRlci1ib3R0b206Y2FsYyguMnB4ICsgLjA1ZW0pIHNvbGlkICNlNWU1ZTV9LnVrLWhlYWRpbmctbGluZT46OmJlZm9yZXtyaWdodDoxMDAlO21hcmdpbi1yaWdodDpjYWxjKDVweCArIC4zZW0pfS51ay1oZWFkaW5nLWxpbmU+OjphZnRlcntsZWZ0OjEwMCU7bWFyZ2luLWxlZnQ6Y2FsYyg1cHggKyAuM2VtKX1bY2xhc3MqPXVrLWRpdmlkZXJde2JvcmRlcjpub25lO21hcmdpbi1ib3R0b206MjBweH0qK1tjbGFzcyo9dWstZGl2aWRlcl17bWFyZ2luLXRvcDoyMHB4fS51ay1kaXZpZGVyLWljb257cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjIwcHg7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMjAlMjIlMjBoZWlnaHQlM0QlMjIyMCUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDIwJTIwMjAlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2NpcmNsZSUyMGZpbGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNEJTIyJTIzZTVlNWU1JTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMiUyMiUyMGN4JTNEJTIyMTAlMjIlMjBjeSUzRCUyMjEwJTIyJTIwciUzRCUyMjclMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEiKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCUgNTAlfS51ay1kaXZpZGVyLWljb246OmFmdGVyLC51ay1kaXZpZGVyLWljb246OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bWF4LXdpZHRoOmNhbGMoNTAlIC0gKDUwcHggLyAyKSk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNX0udWstZGl2aWRlci1pY29uOjpiZWZvcmV7cmlnaHQ6Y2FsYyg1MCUgKyAoNTBweCAvIDIpKTt3aWR0aDoxMDAlfS51ay1kaXZpZGVyLWljb246OmFmdGVye2xlZnQ6Y2FsYyg1MCUgKyAoNTBweCAvIDIpKTt3aWR0aDoxMDAlfS51ay1kaXZpZGVyLXNtYWxse2xpbmUtaGVpZ2h0OjB9LnVrLWRpdmlkZXItc21hbGw6OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwcHg7bWF4LXdpZHRoOjEwMCU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNTt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnVrLWRpdmlkZXItdmVydGljYWx7d2lkdGg6MXB4O2hlaWdodDoxMDBweDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZTVlNWU1fS51ay1saXN0e3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9LnVrLWxpc3Q+bGk6OmFmdGVyLC51ay1saXN0PmxpOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlfS51ay1saXN0PmxpOjphZnRlcntjbGVhcjpib3RofS51ay1saXN0PmxpPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWstbGlzdCB1bHttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MzBweDtsaXN0LXN0eWxlOm5vbmV9LnVrLWxpc3Q+bGk6bnRoLWNoaWxkKG4rMiksLnVrLWxpc3Q+bGk+dWx7bWFyZ2luLXRvcDoxMHB4fS51ay1saXN0LWRpdmlkZXI+bGk6bnRoLWNoaWxkKG4rMil7bWFyZ2luLXRvcDoxMHB4O3BhZGRpbmctdG9wOjEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNX0udWstbGlzdC1zdHJpcGVkPmxpe3BhZGRpbmc6MTBweCAxMHB4fS51ay1saXN0LXN0cmlwZWQ+bGk6bnRoLW9mLXR5cGUob2RkKXtib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTV9LnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpe2JhY2tncm91bmQ6I2Y4ZjhmOH0udWstbGlzdC1zdHJpcGVkPmxpOm50aC1jaGlsZChuKzIpe21hcmdpbi10b3A6MH0udWstbGlzdC1idWxsZXQ+bGl7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1sZWZ0OmNhbGMoMS41ZW0gKyAxMHB4KX0udWstbGlzdC1idWxsZXQ+bGk6OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxLjVlbTtoZWlnaHQ6MS41ZW07YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyNiUyMiUyMGhlaWdodCUzRCUyMjYlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjA2JTIwNiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDY2lyY2xlJTIwZmlsbCUzRCUyMiUyMzY2NiUyMiUyMGN4JTNEJTIyMyUyMiUyMGN5JTNEJTIyMyUyMiUyMHIlM0QlMjIzJTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIik7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246NTAlIDUwJTtkaXNwbGF5OmJsb2NrfS51ay1saXN0LWxhcmdlPmxpOm50aC1jaGlsZChuKzIpLC51ay1saXN0LWxhcmdlPmxpPnVse21hcmdpbi10b3A6MjBweH0udWstbGlzdC1sYXJnZS51ay1saXN0LWRpdmlkZXI+bGk6bnRoLWNoaWxkKG4rMil7bWFyZ2luLXRvcDoyMHB4O3BhZGRpbmctdG9wOjIwcHh9LnVrLWxpc3QtbGFyZ2UudWstbGlzdC1zdHJpcGVkPmxpe3BhZGRpbmc6MjBweCAxMHB4fS51ay1saXN0LWxhcmdlLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpe2JvcmRlci10b3A6MXB4IHNvbGlkICNlNWU1ZTU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNX0udWstbGlzdC1sYXJnZS51ay1saXN0LXN0cmlwZWQ+bGk6bnRoLWNoaWxkKG4rMil7bWFyZ2luLXRvcDowfS51ay1kZXNjcmlwdGlvbi1saXN0PmR0e2NvbG9yOiMzMzM7Zm9udC1zaXplOi44NzVyZW07Zm9udC13ZWlnaHQ6NDAwO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0udWstZGVzY3JpcHRpb24tbGlzdD5kdDpudGgtY2hpbGQobisyKXttYXJnaW4tdG9wOjIwcHh9LnVrLWRlc2NyaXB0aW9uLWxpc3QtZGl2aWRlcj5kdDpudGgtY2hpbGQobisyKXttYXJnaW4tdG9wOjIwcHg7cGFkZGluZy10b3A6MjBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS51ay10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ym9yZGVyLXNwYWNpbmc6MDt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MjBweH0qKy51ay10YWJsZXttYXJnaW4tdG9wOjIwcHh9LnVrLXRhYmxlIHRoe3BhZGRpbmc6MTZweCAxMnB4O3RleHQtYWxpZ246bGVmdDt2ZXJ0aWNhbC1hbGlnbjpib3R0b207Zm9udC1zaXplOi44NzVyZW07Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM5OTk7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS51ay10YWJsZSB0ZHtwYWRkaW5nOjE2cHggMTJweDt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnVrLXRhYmxlIHRkPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWstdGFibGUgdGZvb3R7Zm9udC1zaXplOi44NzVyZW19LnVrLXRhYmxlIGNhcHRpb257Zm9udC1zaXplOi44NzVyZW07dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiM5OTl9LnVrLXRhYmxlLW1pZGRsZSwudWstdGFibGUtbWlkZGxlIHRke3ZlcnRpY2FsLWFsaWduOm1pZGRsZSFpbXBvcnRhbnR9LnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay10YWJsZS1kaXZpZGVyPjpub3QoOmZpcnN0LWNoaWxkKT50ciwudWstdGFibGUtZGl2aWRlcj50cjpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS51ay10YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCksLnVrLXRhYmxlLXN0cmlwZWQ+dHI6bnRoLW9mLXR5cGUob2RkKXtiYWNrZ3JvdW5kOiNmOGY4Zjg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1fS51ay10YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciwudWstdGFibGUtaG92ZXI+dHI6aG92ZXJ7YmFja2dyb3VuZDojZmZkfS51ay10YWJsZSB0Ym9keSB0ci51ay1hY3RpdmUsLnVrLXRhYmxlPnRyLnVrLWFjdGl2ZXtiYWNrZ3JvdW5kOiNmZmR9LnVrLXRhYmxlLXNtYWxsIHRkLC51ay10YWJsZS1zbWFsbCB0aHtwYWRkaW5nOjEwcHggMTJweH0udWstdGFibGUtbGFyZ2UgdGQsLnVrLXRhYmxlLWxhcmdlIHRoe3BhZGRpbmc6MjJweCAxMnB4fS51ay10YWJsZS1qdXN0aWZ5IHRkOmZpcnN0LWNoaWxkLC51ay10YWJsZS1qdXN0aWZ5IHRoOmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDowfS51ay10YWJsZS1qdXN0aWZ5IHRkOmxhc3QtY2hpbGQsLnVrLXRhYmxlLWp1c3RpZnkgdGg6bGFzdC1jaGlsZHtwYWRkaW5nLXJpZ2h0OjB9LnVrLXRhYmxlLXNocmlua3t3aWR0aDoxcHh9LnVrLXRhYmxlLWV4cGFuZHttaW4td2lkdGg6MTUwcHh9LnVrLXRhYmxlLWxpbmt7cGFkZGluZzowIWltcG9ydGFudH0udWstdGFibGUtbGluaz5he2Rpc3BsYXk6YmxvY2s7cGFkZGluZzoxNnB4IDEycHh9LnVrLXRhYmxlLXNtYWxsIC51ay10YWJsZS1saW5rPmF7cGFkZGluZzoxMHB4IDEycHh9QG1lZGlhIChtYXgtd2lkdGg6OTU5cHgpey51ay10YWJsZS1yZXNwb25zaXZlLC51ay10YWJsZS1yZXNwb25zaXZlIHRib2R5LC51ay10YWJsZS1yZXNwb25zaXZlIHRkLC51ay10YWJsZS1yZXNwb25zaXZlIHRoLC51ay10YWJsZS1yZXNwb25zaXZlIHRye2Rpc3BsYXk6YmxvY2t9LnVrLXRhYmxlLXJlc3BvbnNpdmUgdGhlYWR7ZGlzcGxheTpub25lfS51ay10YWJsZS1yZXNwb25zaXZlIHRkLC51ay10YWJsZS1yZXNwb25zaXZlIHRoe3dpZHRoOmF1dG8haW1wb3J0YW50O21heC13aWR0aDpub25lIWltcG9ydGFudDttaW4td2lkdGg6MCFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7d2hpdGUtc3BhY2U6bm9ybWFsIWltcG9ydGFudH0udWstdGFibGUtcmVzcG9uc2l2ZSAudWstdGFibGUtbGluazpub3QoOmZpcnN0LWNoaWxkKT5hLC51ay10YWJsZS1yZXNwb25zaXZlIHRkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCgudWstdGFibGUtbGluayksLnVrLXRhYmxlLXJlc3BvbnNpdmUgdGg6bm90KDpmaXJzdC1jaGlsZCk6bm90KC51ay10YWJsZS1saW5rKXtwYWRkaW5nLXRvcDo1cHghaW1wb3J0YW50fS51ay10YWJsZS1yZXNwb25zaXZlIC51ay10YWJsZS1saW5rOm5vdCg6bGFzdC1jaGlsZCk+YSwudWstdGFibGUtcmVzcG9uc2l2ZSB0ZDpub3QoOmxhc3QtY2hpbGQpOm5vdCgudWstdGFibGUtbGluayksLnVrLXRhYmxlLXJlc3BvbnNpdmUgdGg6bm90KDpsYXN0LWNoaWxkKTpub3QoLnVrLXRhYmxlLWxpbmspe3BhZGRpbmctYm90dG9tOjVweCFpbXBvcnRhbnR9LnVrLXRhYmxlLWp1c3RpZnkudWstdGFibGUtcmVzcG9uc2l2ZSB0ZCwudWstdGFibGUtanVzdGlmeS51ay10YWJsZS1yZXNwb25zaXZlIHRoe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MH19LnVrLXRhYmxlIHRib2R5IHRye3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMXMgbGluZWFyfS51ay1pY29ue21hcmdpbjowO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MDtvdmVyZmxvdzp2aXNpYmxlO2ZvbnQ6aW5oZXJpdDtjb2xvcjppbmhlcml0O3RleHQtdHJhbnNmb3JtOm5vbmU7cGFkZGluZzowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Y29sb3I7bGluZS1oZWlnaHQ6MH1idXR0b24udWstaWNvbjpub3QoOmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn0udWstaWNvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MDtwYWRkaW5nOjB9LnVrLWljb246bm90KC51ay1wcmVzZXJ2ZSkgW2ZpbGwqPScjJ106bm90KC51ay1wcmVzZXJ2ZSl7ZmlsbDpjdXJyZW50Y29sb3J9LnVrLWljb246bm90KC51ay1wcmVzZXJ2ZSkgW3N0cm9rZSo9JyMnXTpub3QoLnVrLXByZXNlcnZlKXtzdHJva2U6Y3VycmVudGNvbG9yfS51ay1pY29uPip7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfS51ay1pY29uLWltYWdle3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCUgNTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnVrLWljb24tbGlua3tjb2xvcjojOTk5fS51ay1pY29uLWxpbms6Zm9jdXMsLnVrLWljb24tbGluazpob3Zlcntjb2xvcjojNjY2O291dGxpbmU6MH0udWstYWN0aXZlPi51ay1pY29uLWxpbmssLnVrLWljb24tbGluazphY3RpdmV7Y29sb3I6IzU5NTk1OX0udWstaWNvbi1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjM2cHg7aGVpZ2h0OjM2cHg7Ym9yZGVyLXJhZGl1czo1MDBweDtiYWNrZ3JvdW5kOiNmOGY4Zjg7Y29sb3I6Izk5OTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt0cmFuc2l0aW9uOi4xcyBlYXNlLWluLW91dDt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3J9LnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1pY29uLWJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlYmViZWI7Y29sb3I6IzY2NjtvdXRsaW5lOjB9LnVrLWFjdGl2ZT4udWstaWNvbi1idXR0b24sLnVrLWljb24tYnV0dG9uOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNkZmRmZGY7Y29sb3I6IzY2Nn0udWstcmFuZ2V7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQ6MCAwO3BhZGRpbmc6MH0udWstcmFuZ2U6Zm9jdXN7b3V0bGluZTowfS51ay1yYW5nZTo6LW1vei1mb2N1cy1vdXRlcntib3JkZXI6bm9uZX0udWstcmFuZ2U6Oi1tcy10cmFja3toZWlnaHQ6MTVweDtiYWNrZ3JvdW5kOjAgMDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6dHJhbnNwYXJlbnR9LnVrLXJhbmdlOm5vdCg6ZGlzYWJsZWQpOjotd2Via2l0LXNsaWRlci10aHVtYntjdXJzb3I6cG9pbnRlcn0udWstcmFuZ2U6bm90KDpkaXNhYmxlZCk6Oi1tb3otcmFuZ2UtdGh1bWJ7Y3Vyc29yOnBvaW50ZXJ9LnVrLXJhbmdlOm5vdCg6ZGlzYWJsZWQpOjotbXMtdGh1bWJ7Y3Vyc29yOnBvaW50ZXJ9LnVrLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW4tdG9wOi03cHg7aGVpZ2h0OjE1cHg7d2lkdGg6MTVweDtib3JkZXItcmFkaXVzOjUwMHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNjY2N9LnVrLXJhbmdlOjotbW96LXJhbmdlLXRodW1ie2JvcmRlcjpub25lO2hlaWdodDoxNXB4O3dpZHRoOjE1cHg7Ym9yZGVyLXJhZGl1czo1MDBweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2NjfS51ay1yYW5nZTo6LW1zLXRodW1ie21hcmdpbi10b3A6MH0udWstcmFuZ2U6Oi1tcy10aHVtYntib3JkZXI6bm9uZTtoZWlnaHQ6MTVweDt3aWR0aDoxNXB4O2JvcmRlci1yYWRpdXM6NTAwcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2NjY30udWstcmFuZ2U6Oi1tcy10b29sdGlwe2Rpc3BsYXk6bm9uZX0udWstcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNre2hlaWdodDozcHg7YmFja2dyb3VuZDojZWJlYmViO2JvcmRlci1yYWRpdXM6NTAwcHh9LnVrLXJhbmdlOmFjdGl2ZTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2ssLnVrLXJhbmdlOmZvY3VzOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFja3tiYWNrZ3JvdW5kOiNkMmQyZDJ9LnVrLXJhbmdlOjotbW96LXJhbmdlLXRyYWNre2hlaWdodDozcHg7YmFja2dyb3VuZDojZWJlYmViO2JvcmRlci1yYWRpdXM6NTAwcHh9LnVrLXJhbmdlOmZvY3VzOjotbW96LXJhbmdlLXRyYWNre2JhY2tncm91bmQ6I2QyZDJkMn0udWstcmFuZ2U6Oi1tcy1maWxsLWxvd2VyLC51ay1yYW5nZTo6LW1zLWZpbGwtdXBwZXJ7aGVpZ2h0OjNweDtiYWNrZ3JvdW5kOiNlYmViZWI7Ym9yZGVyLXJhZGl1czo1MDBweH0udWstcmFuZ2U6Zm9jdXM6Oi1tcy1maWxsLWxvd2VyLC51ay1yYW5nZTpmb2N1czo6LW1zLWZpbGwtdXBwZXJ7YmFja2dyb3VuZDojZDJkMmQyfS51ay1jaGVja2JveCwudWstaW5wdXQsLnVrLXJhZGlvLC51ay1zZWxlY3QsLnVrLXRleHRhcmVhe2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW46MDtib3JkZXItcmFkaXVzOjA7Zm9udDppbmhlcml0fS51ay1pbnB1dHtvdmVyZmxvdzp2aXNpYmxlfS51ay1zZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX0udWstc2VsZWN0IG9wdGdyb3Vwe2ZvbnQ6aW5oZXJpdDtmb250LXdlaWdodDo3MDB9LnVrLXRleHRhcmVhe292ZXJmbG93OmF1dG99LnVrLWlucHV0W3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwudWstaW5wdXRbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS51ay1pbnB1dFt0eXBlPW51bWJlcl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLnVrLWlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b30udWstaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIsLnVrLXRleHRhcmVhOjotbW96LXBsYWNlaG9sZGVye29wYWNpdHk6MX0udWstY2hlY2tib3g6bm90KDpkaXNhYmxlZCksLnVrLXJhZGlvOm5vdCg6ZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfS51ay1maWVsZHNldHtib3JkZXI6bm9uZTttYXJnaW46MDtwYWRkaW5nOjB9LnVrLWlucHV0LC51ay10ZXh0YXJlYXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udWstaW5wdXQsLnVrLXNlbGVjdCwudWstdGV4dGFyZWF7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJTtib3JkZXI6MCBub25lO3BhZGRpbmc6MCAxMHB4O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojNjY2O2JvcmRlcjoxcHggc29saWQgI2U1ZTVlNTt0cmFuc2l0aW9uOi4ycyBlYXNlLWluLW91dDt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyfS51ay1pbnB1dCwudWstc2VsZWN0Om5vdChbbXVsdGlwbGVdKTpub3QoW3NpemVdKXtoZWlnaHQ6NDBweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LnVrLWlucHV0Om5vdChpbnB1dCksLnVrLXNlbGVjdDpub3Qoc2VsZWN0KXtsaW5lLWhlaWdodDozOHB4fS51ay1zZWxlY3RbbXVsdGlwbGVdLC51ay1zZWxlY3Rbc2l6ZV0sLnVrLXRleHRhcmVhe3BhZGRpbmctdG9wOjRweDtwYWRkaW5nLWJvdHRvbTo0cHg7dmVydGljYWwtYWxpZ246dG9wfS51ay1pbnB1dDpmb2N1cywudWstc2VsZWN0OmZvY3VzLC51ay10ZXh0YXJlYTpmb2N1c3tvdXRsaW5lOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOiMxZTg3ZjB9LnVrLWlucHV0OmRpc2FibGVkLC51ay1zZWxlY3Q6ZGlzYWJsZWQsLnVrLXRleHRhcmVhOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmODtjb2xvcjojOTk5O2JvcmRlci1jb2xvcjojZTVlNWU1fS51ay1pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM5OTkhaW1wb3J0YW50fS51ay1pbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6Izk5OX0udWstdGV4dGFyZWE6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojOTk5IWltcG9ydGFudH0udWstdGV4dGFyZWE6OnBsYWNlaG9sZGVye2NvbG9yOiM5OTl9LnVrLWZvcm0tc21hbGx7Zm9udC1zaXplOi44NzVyZW19LnVrLWZvcm0tc21hbGw6bm90KHRleHRhcmVhKTpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSl7aGVpZ2h0OjMwcHg7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjhweH0udWstZm9ybS1zbWFsbDpub3Qoc2VsZWN0KTpub3QoaW5wdXQpOm5vdCh0ZXh0YXJlYSl7bGluZS1oZWlnaHQ6MjhweH0udWstZm9ybS1sYXJnZXtmb250LXNpemU6MS4yNXJlbX0udWstZm9ybS1sYXJnZTpub3QodGV4dGFyZWEpOm5vdChbbXVsdGlwbGVdKTpub3QoW3NpemVdKXtoZWlnaHQ6NTVweDtwYWRkaW5nLWxlZnQ6MTJweDtwYWRkaW5nLXJpZ2h0OjEycHh9LnVrLWZvcm0tbGFyZ2U6bm90KHNlbGVjdCk6bm90KGlucHV0KTpub3QodGV4dGFyZWEpe2xpbmUtaGVpZ2h0OjUzcHh9LnVrLWZvcm0tZGFuZ2VyLC51ay1mb3JtLWRhbmdlcjpmb2N1c3tjb2xvcjojZjA1MDZlO2JvcmRlci1jb2xvcjojZjA1MDZlfS51ay1mb3JtLXN1Y2Nlc3MsLnVrLWZvcm0tc3VjY2Vzczpmb2N1c3tjb2xvcjojMzJkMjk2O2JvcmRlci1jb2xvcjojMzJkMjk2fS51ay1mb3JtLWJsYW5re2JhY2tncm91bmQ6MCAwO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0udWstZm9ybS1ibGFuazpmb2N1c3tib3JkZXItY29sb3I6I2U1ZTVlNTtib3JkZXItc3R5bGU6ZGFzaGVkfWlucHV0LnVrLWZvcm0td2lkdGgteHNtYWxse3dpZHRoOjUwcHh9c2VsZWN0LnVrLWZvcm0td2lkdGgteHNtYWxse3dpZHRoOjc1cHh9LnVrLWZvcm0td2lkdGgtc21hbGx7d2lkdGg6MTMwcHh9LnVrLWZvcm0td2lkdGgtbWVkaXVte3dpZHRoOjIwMHB4fS51ay1mb3JtLXdpZHRoLWxhcmdle3dpZHRoOjUwMHB4fS51ay1zZWxlY3Q6bm90KFttdWx0aXBsZV0pOm5vdChbc2l6ZV0pey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO3BhZGRpbmctcmlnaHQ6MjBweDtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIyNCUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMjQlMjAxNiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2NjYlMjIlMjBwb2ludHMlM0QlMjIxMiUyMDElMjA5JTIwNiUyMDE1JTIwNiUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNjY2JTIyJTIwcG9pbnRzJTNEJTIyMTIlMjAxMyUyMDklMjA4JTIwMTUlMjA4JTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIik7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246MTAwJSA1MCV9LnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSk6Oi1tcy1leHBhbmR7ZGlzcGxheTpub25lfS51ay1zZWxlY3Q6bm90KFttdWx0aXBsZV0pOm5vdChbc2l6ZV0pIG9wdGlvbntjb2xvcjojNDQ0fS51ay1zZWxlY3Q6bm90KFttdWx0aXBsZV0pOm5vdChbc2l6ZV0pOmRpc2FibGVke2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjI0JTIyJTIwaGVpZ2h0JTNEJTIyMTYlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAyNCUyMDE2JTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk5OSUyMiUyMHBvaW50cyUzRCUyMjEyJTIwMSUyMDklMjA2JTIwMTUlMjA2JTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5OTklMjIlMjBwb2ludHMlM0QlMjIxMiUyMDEzJTIwOSUyMDglMjAxNSUyMDglMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEiKX0udWstaW5wdXRbbGlzdF17cGFkZGluZy1yaWdodDoyMHB4O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwMCUgNTAlfS51ay1pbnB1dFtsaXN0XTpmb2N1cywudWstaW5wdXRbbGlzdF06aG92ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMjQlMjIlMjBoZWlnaHQlM0QlMjIxNiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDI0JTIwMTYlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNjY2JTIyJTIwcG9pbnRzJTNEJTIyMTIlMjAxMiUyMDglMjA2JTIwMTYlMjA2JTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIil9LnVrLWlucHV0W2xpc3RdOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7ZGlzcGxheTpub25lfS51ay1jaGVja2JveCwudWstcmFkaW97ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE2cHg7d2lkdGg6MTZweDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luLXRvcDotNHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJSA1MCU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO3RyYW5zaXRpb246LjJzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb24tcHJvcGVydHk6YmFja2dyb3VuZC1jb2xvcixib3JkZXJ9LnVrLXJhZGlve2JvcmRlci1yYWRpdXM6NTAlfS51ay1jaGVja2JveDpmb2N1cywudWstcmFkaW86Zm9jdXN7b3V0bGluZTowO2JvcmRlci1jb2xvcjojMWU4N2YwfS51ay1jaGVja2JveDpjaGVja2VkLC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1yYWRpbzpjaGVja2Vke2JhY2tncm91bmQtY29sb3I6IzFlODdmMDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWNoZWNrYm94OmNoZWNrZWQ6Zm9jdXMsLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGU6Zm9jdXMsLnVrLXJhZGlvOmNoZWNrZWQ6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojMGU2ZGNkfS51ay1yYWRpbzpjaGVja2Vke2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjE2JTIyJTIwaGVpZ2h0JTNEJTIyMTYlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxNiUyMDE2JTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NjaXJjbGUlMjBmaWxsJTNEJTIyJTIzZmZmJTIyJTIwY3glM0QlMjI4JTIyJTIwY3klM0QlMjI4JTIyJTIwciUzRCUyMjIlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UiKX0udWstY2hlY2tib3g6Y2hlY2tlZHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNCUyMiUyMGhlaWdodCUzRCUyMjExJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTQlMjAxMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNmZmYlMjIlMjBwb2ludHMlM0QlMjIxMiUyMDElMjA1JTIwNy41JTIwMiUyMDUlMjAxJTIwNS41JTIwNSUyMDEwJTIwMTMlMjAxLjUlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEiKX0udWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTYlMjAxNiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjNmZmYlMjIlMjB4JTNEJTIyMyUyMiUyMHklM0QlMjI4JTIyJTIwd2lkdGglM0QlMjIxMCUyMiUyMGhlaWdodCUzRCUyMjElMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UiKX0udWstY2hlY2tib3g6ZGlzYWJsZWQsLnVrLXJhZGlvOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmODtib3JkZXItY29sb3I6I2U1ZTVlNX0udWstcmFkaW86ZGlzYWJsZWQ6Y2hlY2tlZHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTYlMjAxNiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDY2lyY2xlJTIwZmlsbCUzRCUyMiUyMzk5OSUyMiUyMGN4JTNEJTIyOCUyMiUyMGN5JTNEJTIyOCUyMiUyMHIlM0QlMjIyJTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIil9LnVrLWNoZWNrYm94OmRpc2FibGVkOmNoZWNrZWR7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTQlMjIlMjBoZWlnaHQlM0QlMjIxMSUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE0JTIwMTElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTk5JTIyJTIwcG9pbnRzJTNEJTIyMTIlMjAxJTIwNSUyMDcuNSUyMDIlMjA1JTIwMSUyMDUuNSUyMDUlMjAxMCUyMDEzJTIwMS41JTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIil9LnVrLWNoZWNrYm94OmRpc2FibGVkOmluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTYlMjIlMjBoZWlnaHQlM0QlMjIxNiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE2JTIwMTYlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzOTk5JTIyJTIweCUzRCUyMjMlMjIlMjB5JTNEJTIyOCUyMiUyMHdpZHRoJTNEJTIyMTAlMjIlMjBoZWlnaHQlM0QlMjIxJTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIil9LnVrLWxlZ2VuZHt3aWR0aDoxMDAlO2NvbG9yOmluaGVyaXQ7cGFkZGluZzowO2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MS40fS51ay1mb3JtLWN1c3RvbXtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnVrLWZvcm0tY3VzdG9tIGlucHV0W3R5cGU9ZmlsZV0sLnVrLWZvcm0tY3VzdG9tIHNlbGVjdHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt6LWluZGV4OjE7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtsZWZ0OjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7b3BhY2l0eTowO2N1cnNvcjpwb2ludGVyfS51ay1mb3JtLWN1c3RvbSBpbnB1dFt0eXBlPWZpbGVde2ZvbnQtc2l6ZTo1MDBweDtvdmVyZmxvdzpoaWRkZW59LnVrLWZvcm0tbGFiZWx7Y29sb3I6IzMzMztmb250LXNpemU6Ljg3NXJlbX0udWstZm9ybS1zdGFja2VkIC51ay1mb3JtLWxhYmVse2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo1cHh9QG1lZGlhIChtYXgtd2lkdGg6OTU5cHgpey51ay1mb3JtLWhvcml6b250YWwgLnVrLWZvcm0tbGFiZWx7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjVweH19QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1mb3JtLWhvcml6b250YWwgLnVrLWZvcm0tbGFiZWx7d2lkdGg6MjAwcHg7bWFyZ2luLXRvcDo3cHg7ZmxvYXQ6bGVmdH0udWstZm9ybS1ob3Jpem9udGFsIC51ay1mb3JtLWNvbnRyb2xze21hcmdpbi1sZWZ0OjIxNXB4fS51ay1mb3JtLWhvcml6b250YWwgLnVrLWZvcm0tY29udHJvbHMtdGV4dHtwYWRkaW5nLXRvcDo3cHh9fS51ay1mb3JtLWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjQwcHg7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojOTk5fS51ay1mb3JtLWljb246aG92ZXJ7Y29sb3I6IzY2Nn0udWstZm9ybS1pY29uOm5vdChhKTpub3QoYnV0dG9uKTpub3QoaW5wdXQpe3BvaW50ZXItZXZlbnRzOm5vbmV9LnVrLWZvcm0taWNvbjpub3QoLnVrLWZvcm0taWNvbi1mbGlwKX4udWstaW5wdXR7cGFkZGluZy1sZWZ0OjQwcHghaW1wb3J0YW50fS51ay1mb3JtLWljb24tZmxpcHtyaWdodDowO2xlZnQ6YXV0b30udWstZm9ybS1pY29uLWZsaXB+LnVrLWlucHV0e3BhZGRpbmctcmlnaHQ6NDBweCFpbXBvcnRhbnR9LnVrLWJ1dHRvbnttYXJnaW46MDtib3JkZXI6bm9uZTtvdmVyZmxvdzp2aXNpYmxlO2ZvbnQ6aW5oZXJpdDtjb2xvcjppbmhlcml0O3RleHQtdHJhbnNmb3JtOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MCAzMHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmb250LXNpemU6Ljg3NXJlbTtsaW5lLWhlaWdodDozOHB4O3RleHQtYWxpZ246Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt0cmFuc2l0aW9uOi4xcyBlYXNlLWluLW91dDt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yfS51ay1idXR0b246bm90KDpkaXNhYmxlZCl7Y3Vyc29yOnBvaW50ZXJ9LnVrLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MDtwYWRkaW5nOjB9LnVrLWJ1dHRvbjpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0udWstYnV0dG9uOmZvY3Vze291dGxpbmU6MH0udWstYnV0dG9uLWRlZmF1bHR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojMzMzO2JvcmRlcjoxcHggc29saWQgI2U1ZTVlNX0udWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLWJ1dHRvbi1kZWZhdWx0OmhvdmVye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzMzMztib3JkZXItY29sb3I6I2IyYjJiMn0udWstYnV0dG9uLWRlZmF1bHQudWstYWN0aXZlLC51ay1idXR0b24tZGVmYXVsdDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojMzMzO2JvcmRlci1jb2xvcjojOTk5fS51ay1idXR0b24tcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiMxZTg3ZjA7Y29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50fS51ay1idXR0b24tcHJpbWFyeTpmb2N1cywudWstYnV0dG9uLXByaW1hcnk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMGY3YWU1O2NvbG9yOiNmZmZ9LnVrLWJ1dHRvbi1wcmltYXJ5LnVrLWFjdGl2ZSwudWstYnV0dG9uLXByaW1hcnk6YWN0aXZle2JhY2tncm91bmQtY29sb3I6IzBlNmRjZDtjb2xvcjojZmZmfS51ay1idXR0b24tc2Vjb25kYXJ5e2JhY2tncm91bmQtY29sb3I6IzIyMjtjb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnR9LnVrLWJ1dHRvbi1zZWNvbmRhcnk6Zm9jdXMsLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMTUxNTE1O2NvbG9yOiNmZmZ9LnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiMwODA4MDg7Y29sb3I6I2ZmZn0udWstYnV0dG9uLWRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOiNmMDUwNmU7Y29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50fS51ay1idXR0b24tZGFuZ2VyOmZvY3VzLC51ay1idXR0b24tZGFuZ2VyOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VlMzk1Yjtjb2xvcjojZmZmfS51ay1idXR0b24tZGFuZ2VyLnVrLWFjdGl2ZSwudWstYnV0dG9uLWRhbmdlcjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZWMyMTQ3O2NvbG9yOiNmZmZ9LnVrLWJ1dHRvbi1kYW5nZXI6ZGlzYWJsZWQsLnVrLWJ1dHRvbi1kZWZhdWx0OmRpc2FibGVkLC51ay1idXR0b24tcHJpbWFyeTpkaXNhYmxlZCwudWstYnV0dG9uLXNlY29uZGFyeTpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiM5OTk7Ym9yZGVyLWNvbG9yOiNlNWU1ZTV9LnVrLWJ1dHRvbi1zbWFsbHtwYWRkaW5nOjAgMTVweDtsaW5lLWhlaWdodDoyOHB4O2ZvbnQtc2l6ZTouODc1cmVtfS51ay1idXR0b24tbGFyZ2V7cGFkZGluZzowIDQwcHg7bGluZS1oZWlnaHQ6NTNweDtmb250LXNpemU6Ljg3NXJlbX0udWstYnV0dG9uLXRleHR7cGFkZGluZzowO2xpbmUtaGVpZ2h0OjEuNTtiYWNrZ3JvdW5kOjAgMDtjb2xvcjojMzMzO3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1idXR0b24tdGV4dDo6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjEwMCU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzMzMzt0cmFuc2l0aW9uOnJpZ2h0IC4zcyBlYXNlLW91dH0udWstYnV0dG9uLXRleHQ6Zm9jdXMsLnVrLWJ1dHRvbi10ZXh0OmhvdmVye2NvbG9yOiMzMzN9LnVrLWJ1dHRvbi10ZXh0OmZvY3VzOjpiZWZvcmUsLnVrLWJ1dHRvbi10ZXh0OmhvdmVyOjpiZWZvcmV7cmlnaHQ6MH0udWstYnV0dG9uLXRleHQ6ZGlzYWJsZWR7Y29sb3I6Izk5OX0udWstYnV0dG9uLXRleHQ6ZGlzYWJsZWQ6OmJlZm9yZXtkaXNwbGF5Om5vbmV9LnVrLWJ1dHRvbi1saW5re3BhZGRpbmc6MDtsaW5lLWhlaWdodDoxLjU7YmFja2dyb3VuZDowIDA7Y29sb3I6IzFlODdmMH0udWstYnV0dG9uLWxpbms6Zm9jdXMsLnVrLWJ1dHRvbi1saW5rOmhvdmVye2NvbG9yOiMwZjZlY2Q7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0udWstYnV0dG9uLWxpbms6ZGlzYWJsZWR7Y29sb3I6Izk5OTt0ZXh0LWRlY29yYXRpb246bm9uZX0udWstYnV0dG9uLWdyb3Vwe2Rpc3BsYXk6aW5saW5lLWZsZXg7dmVydGljYWwtYWxpZ246bWlkZGxlO3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1idXR0b24tZ3JvdXA+LnVrLWJ1dHRvbjpudGgtY2hpbGQobisyKSwudWstYnV0dG9uLWdyb3VwPmRpdjpudGgtY2hpbGQobisyKSAudWstYnV0dG9ue21hcmdpbi1sZWZ0Oi0xcHh9LnVrLWJ1dHRvbi1ncm91cCAudWstYnV0dG9uLnVrLWFjdGl2ZSwudWstYnV0dG9uLWdyb3VwIC51ay1idXR0b246YWN0aXZlLC51ay1idXR0b24tZ3JvdXAgLnVrLWJ1dHRvbjpmb2N1cywudWstYnV0dG9uLWdyb3VwIC51ay1idXR0b246aG92ZXJ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxfS51ay1zZWN0aW9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nLXRvcDo0MHB4O3BhZGRpbmctYm90dG9tOjQwcHh9QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1zZWN0aW9ue3BhZGRpbmctdG9wOjcwcHg7cGFkZGluZy1ib3R0b206NzBweH19LnVrLXNlY3Rpb246OmFmdGVyLC51ay1zZWN0aW9uOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlfS51ay1zZWN0aW9uOjphZnRlcntjbGVhcjpib3RofS51ay1zZWN0aW9uPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWstc2VjdGlvbi14c21hbGx7cGFkZGluZy10b3A6MjBweDtwYWRkaW5nLWJvdHRvbToyMHB4fS51ay1zZWN0aW9uLXNtYWxse3BhZGRpbmctdG9wOjQwcHg7cGFkZGluZy1ib3R0b206NDBweH0udWstc2VjdGlvbi1sYXJnZXtwYWRkaW5nLXRvcDo3MHB4O3BhZGRpbmctYm90dG9tOjcwcHh9QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1zZWN0aW9uLWxhcmdle3BhZGRpbmctdG9wOjE0MHB4O3BhZGRpbmctYm90dG9tOjE0MHB4fX0udWstc2VjdGlvbi14bGFyZ2V7cGFkZGluZy10b3A6MTQwcHg7cGFkZGluZy1ib3R0b206MTQwcHh9QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1zZWN0aW9uLXhsYXJnZXtwYWRkaW5nLXRvcDoyMTBweDtwYWRkaW5nLWJvdHRvbToyMTBweH19LnVrLXNlY3Rpb24tZGVmYXVsdHtiYWNrZ3JvdW5kOiNmZmZ9LnVrLXNlY3Rpb24tbXV0ZWR7YmFja2dyb3VuZDojZjhmOGY4fS51ay1zZWN0aW9uLXByaW1hcnl7YmFja2dyb3VuZDojMWU4N2YwfS51ay1zZWN0aW9uLXNlY29uZGFyeXtiYWNrZ3JvdW5kOiMyMjJ9LnVrLWNvbnRhaW5lcntib3gtc2l6aW5nOmNvbnRlbnQtYm94O21heC13aWR0aDoxMjAwcHg7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bztwYWRkaW5nLWxlZnQ6MTVweDtwYWRkaW5nLXJpZ2h0OjE1cHh9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1jb250YWluZXJ7cGFkZGluZy1sZWZ0OjMwcHg7cGFkZGluZy1yaWdodDozMHB4fX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWNvbnRhaW5lcntwYWRkaW5nLWxlZnQ6NDBweDtwYWRkaW5nLXJpZ2h0OjQwcHh9fS51ay1jb250YWluZXI6OmFmdGVyLC51ay1jb250YWluZXI6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6dGFibGV9LnVrLWNvbnRhaW5lcjo6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWstY29udGFpbmVyPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWstY29udGFpbmVyIC51ay1jb250YWluZXJ7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS51ay1jb250YWluZXIteHNtYWxse21heC13aWR0aDo3NTBweH0udWstY29udGFpbmVyLXNtYWxse21heC13aWR0aDo5MDBweH0udWstY29udGFpbmVyLWxhcmdle21heC13aWR0aDoxNjAwcHh9LnVrLWNvbnRhaW5lci1leHBhbmR7bWF4LXdpZHRoOm5vbmV9LnVrLWNvbnRhaW5lci1leHBhbmQtbGVmdHttYXJnaW4tbGVmdDowfS51ay1jb250YWluZXItZXhwYW5kLXJpZ2h0e21hcmdpbi1yaWdodDowfUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsudWstY29udGFpbmVyLWV4cGFuZC1sZWZ0LnVrLWNvbnRhaW5lci14c21hbGwsLnVrLWNvbnRhaW5lci1leHBhbmQtcmlnaHQudWstY29udGFpbmVyLXhzbWFsbHttYXgtd2lkdGg6Y2FsYyg1MCUgKyAoNzUwcHggLyAyKSAtIDMwcHgpfS51ay1jb250YWluZXItZXhwYW5kLWxlZnQudWstY29udGFpbmVyLXNtYWxsLC51ay1jb250YWluZXItZXhwYW5kLXJpZ2h0LnVrLWNvbnRhaW5lci1zbWFsbHttYXgtd2lkdGg6Y2FsYyg1MCUgKyAoOTAwcHggLyAyKSAtIDMwcHgpfX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWNvbnRhaW5lci1leHBhbmQtbGVmdCwudWstY29udGFpbmVyLWV4cGFuZC1yaWdodHttYXgtd2lkdGg6Y2FsYyg1MCUgKyAoMTIwMHB4IC8gMikgLSA0MHB4KX0udWstY29udGFpbmVyLWV4cGFuZC1sZWZ0LnVrLWNvbnRhaW5lci14c21hbGwsLnVrLWNvbnRhaW5lci1leHBhbmQtcmlnaHQudWstY29udGFpbmVyLXhzbWFsbHttYXgtd2lkdGg6Y2FsYyg1MCUgKyAoNzUwcHggLyAyKSAtIDQwcHgpfS51ay1jb250YWluZXItZXhwYW5kLWxlZnQudWstY29udGFpbmVyLXNtYWxsLC51ay1jb250YWluZXItZXhwYW5kLXJpZ2h0LnVrLWNvbnRhaW5lci1zbWFsbHttYXgtd2lkdGg6Y2FsYyg1MCUgKyAoOTAwcHggLyAyKSAtIDQwcHgpfS51ay1jb250YWluZXItZXhwYW5kLWxlZnQudWstY29udGFpbmVyLWxhcmdlLC51ay1jb250YWluZXItZXhwYW5kLXJpZ2h0LnVrLWNvbnRhaW5lci1sYXJnZXttYXgtd2lkdGg6Y2FsYyg1MCUgKyAoMTYwMHB4IC8gMikgLSA0MHB4KX19LnVrLWNvbnRhaW5lci1pdGVtLXBhZGRpbmctcmVtb3ZlLWxlZnQsLnVrLWNvbnRhaW5lci1pdGVtLXBhZGRpbmctcmVtb3ZlLXJpZ2h0e3dpZHRoOmNhbGMoMTAwJSArIDE1cHgpfS51ay1jb250YWluZXItaXRlbS1wYWRkaW5nLXJlbW92ZS1sZWZ0e21hcmdpbi1sZWZ0Oi0xNXB4fS51ay1jb250YWluZXItaXRlbS1wYWRkaW5nLXJlbW92ZS1yaWdodHttYXJnaW4tcmlnaHQ6LTE1cHh9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1jb250YWluZXItaXRlbS1wYWRkaW5nLXJlbW92ZS1sZWZ0LC51ay1jb250YWluZXItaXRlbS1wYWRkaW5nLXJlbW92ZS1yaWdodHt3aWR0aDpjYWxjKDEwMCUgKyAzMHB4KX0udWstY29udGFpbmVyLWl0ZW0tcGFkZGluZy1yZW1vdmUtbGVmdHttYXJnaW4tbGVmdDotMzBweH0udWstY29udGFpbmVyLWl0ZW0tcGFkZGluZy1yZW1vdmUtcmlnaHR7bWFyZ2luLXJpZ2h0Oi0zMHB4fX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWNvbnRhaW5lci1pdGVtLXBhZGRpbmctcmVtb3ZlLWxlZnQsLnVrLWNvbnRhaW5lci1pdGVtLXBhZGRpbmctcmVtb3ZlLXJpZ2h0e3dpZHRoOmNhbGMoMTAwJSArIDQwcHgpfS51ay1jb250YWluZXItaXRlbS1wYWRkaW5nLXJlbW92ZS1sZWZ0e21hcmdpbi1sZWZ0Oi00MHB4fS51ay1jb250YWluZXItaXRlbS1wYWRkaW5nLXJlbW92ZS1yaWdodHttYXJnaW4tcmlnaHQ6LTQwcHh9fS51ay1ncmlke2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS51ay1ncmlkPip7bWFyZ2luOjB9LnVrLWdyaWQ+Kj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWdyaWR7bWFyZ2luLWxlZnQ6LTMwcHh9LnVrLWdyaWQ+KntwYWRkaW5nLWxlZnQ6MzBweH0qKy51ay1ncmlkLW1hcmdpbiwudWstZ3JpZCsudWstZ3JpZCwudWstZ3JpZD4udWstZ3JpZC1tYXJnaW57bWFyZ2luLXRvcDozMHB4fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LnVrLWdyaWR7bWFyZ2luLWxlZnQ6LTQwcHh9LnVrLWdyaWQ+KntwYWRkaW5nLWxlZnQ6NDBweH0qKy51ay1ncmlkLW1hcmdpbiwudWstZ3JpZCsudWstZ3JpZCwudWstZ3JpZD4udWstZ3JpZC1tYXJnaW57bWFyZ2luLXRvcDo0MHB4fX0udWstZ3JpZC1jb2x1bW4tc21hbGwsLnVrLWdyaWQtc21hbGx7bWFyZ2luLWxlZnQ6LTE1cHh9LnVrLWdyaWQtY29sdW1uLXNtYWxsPiosLnVrLWdyaWQtc21hbGw+KntwYWRkaW5nLWxlZnQ6MTVweH0qKy51ay1ncmlkLW1hcmdpbi1zbWFsbCwudWstZ3JpZCsudWstZ3JpZC1yb3ctc21hbGwsLnVrLWdyaWQrLnVrLWdyaWQtc21hbGwsLnVrLWdyaWQtcm93LXNtYWxsPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1zbWFsbD4udWstZ3JpZC1tYXJnaW57bWFyZ2luLXRvcDoxNXB4fS51ay1ncmlkLWNvbHVtbi1tZWRpdW0sLnVrLWdyaWQtbWVkaXVte21hcmdpbi1sZWZ0Oi0zMHB4fS51ay1ncmlkLWNvbHVtbi1tZWRpdW0+KiwudWstZ3JpZC1tZWRpdW0+KntwYWRkaW5nLWxlZnQ6MzBweH0qKy51ay1ncmlkLW1hcmdpbi1tZWRpdW0sLnVrLWdyaWQrLnVrLWdyaWQtbWVkaXVtLC51ay1ncmlkKy51ay1ncmlkLXJvdy1tZWRpdW0sLnVrLWdyaWQtbWVkaXVtPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1yb3ctbWVkaXVtPi51ay1ncmlkLW1hcmdpbnttYXJnaW4tdG9wOjMwcHh9LnVrLWdyaWQtY29sdW1uLWxhcmdlLC51ay1ncmlkLWxhcmdle21hcmdpbi1sZWZ0Oi00MHB4fS51ay1ncmlkLWNvbHVtbi1sYXJnZT4qLC51ay1ncmlkLWxhcmdlPip7cGFkZGluZy1sZWZ0OjQwcHh9KisudWstZ3JpZC1tYXJnaW4tbGFyZ2UsLnVrLWdyaWQrLnVrLWdyaWQtbGFyZ2UsLnVrLWdyaWQrLnVrLWdyaWQtcm93LWxhcmdlLC51ay1ncmlkLWxhcmdlPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1yb3ctbGFyZ2U+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6NDBweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1ncmlkLWNvbHVtbi1sYXJnZSwudWstZ3JpZC1sYXJnZXttYXJnaW4tbGVmdDotNzBweH0udWstZ3JpZC1jb2x1bW4tbGFyZ2U+KiwudWstZ3JpZC1sYXJnZT4qe3BhZGRpbmctbGVmdDo3MHB4fSorLnVrLWdyaWQtbWFyZ2luLWxhcmdlLC51ay1ncmlkKy51ay1ncmlkLWxhcmdlLC51ay1ncmlkKy51ay1ncmlkLXJvdy1sYXJnZSwudWstZ3JpZC1sYXJnZT4udWstZ3JpZC1tYXJnaW4sLnVrLWdyaWQtcm93LWxhcmdlPi51ay1ncmlkLW1hcmdpbnttYXJnaW4tdG9wOjcwcHh9fS51ay1ncmlkLWNvbGxhcHNlLC51ay1ncmlkLWNvbHVtbi1jb2xsYXBzZXttYXJnaW4tbGVmdDowfS51ay1ncmlkLWNvbGxhcHNlPiosLnVrLWdyaWQtY29sdW1uLWNvbGxhcHNlPip7cGFkZGluZy1sZWZ0OjB9LnVrLWdyaWQrLnVrLWdyaWQtY29sbGFwc2UsLnVrLWdyaWQrLnVrLWdyaWQtcm93LWNvbGxhcHNlLC51ay1ncmlkLWNvbGxhcHNlPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1yb3ctY29sbGFwc2U+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6MH0udWstZ3JpZC1kaXZpZGVyPip7cG9zaXRpb246cmVsYXRpdmV9LnVrLWdyaWQtZGl2aWRlcj46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtib3JkZXItbGVmdDoxcHggc29saWQgI2U1ZTVlNX0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7cmlnaHQ6MDtib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS51ay1ncmlkLWRpdmlkZXJ7bWFyZ2luLWxlZnQ6LTYwcHh9LnVrLWdyaWQtZGl2aWRlcj4qe3BhZGRpbmctbGVmdDo2MHB4fS51ay1ncmlkLWRpdmlkZXI+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3Jle2xlZnQ6MzBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6NjBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmV7dG9wOi0zMHB4O2xlZnQ6NjBweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1ncmlkLWRpdmlkZXJ7bWFyZ2luLWxlZnQ6LTgwcHh9LnVrLWdyaWQtZGl2aWRlcj4qe3BhZGRpbmctbGVmdDo4MHB4fS51ay1ncmlkLWRpdmlkZXI+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3Jle2xlZnQ6NDBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6ODBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmV7dG9wOi00MHB4O2xlZnQ6ODBweH19LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1zbWFsbCwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc21hbGx7bWFyZ2luLWxlZnQ6LTMwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1zbWFsbD4qLC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zbWFsbD4qe3BhZGRpbmctbGVmdDozMHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1jb2x1bW4tc21hbGw+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zbWFsbD46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmV7bGVmdDoxNXB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1yb3ctc21hbGwudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW4sLnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLXNtYWxsLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6MzBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc21hbGwudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZXt0b3A6LTE1cHg7bGVmdDozMHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1yb3ctc21hbGwudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZXt0b3A6LTE1cHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1zbWFsbC51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbjo6YmVmb3Jle2xlZnQ6MzBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtY29sdW1uLW1lZGl1bSwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtbWVkaXVte21hcmdpbi1sZWZ0Oi02MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1jb2x1bW4tbWVkaXVtPiosLnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLW1lZGl1bT4qe3BhZGRpbmctbGVmdDo2MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1jb2x1bW4tbWVkaXVtPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtbWVkaXVtPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZXtsZWZ0OjMwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLW1lZGl1bS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtcm93LW1lZGl1bS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbnttYXJnaW4tdG9wOjYwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLW1lZGl1bS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbjo6YmVmb3Jle3RvcDotMzBweDtsZWZ0OjYwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLXJvdy1tZWRpdW0udWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZXt0b3A6LTMwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1tZWRpdW0udWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZXtsZWZ0OjYwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1sYXJnZSwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtbGFyZ2V7bWFyZ2luLWxlZnQ6LTgwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1sYXJnZT4qLC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1sYXJnZT4qe3BhZGRpbmctbGVmdDo4MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1jb2x1bW4tbGFyZ2U+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1sYXJnZT46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmV7bGVmdDo0MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1sYXJnZS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtcm93LWxhcmdlLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6ODBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtbGFyZ2UudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZXt0b3A6LTQwcHg7bGVmdDo4MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1yb3ctbGFyZ2UudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZXt0b3A6LTQwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWNvbHVtbi1sYXJnZS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbjo6YmVmb3Jle2xlZnQ6ODBweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1jb2x1bW4tbGFyZ2UsLnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWxhcmdle21hcmdpbi1sZWZ0Oi0xNDBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtY29sdW1uLWxhcmdlPiosLnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWxhcmdlPip7cGFkZGluZy1sZWZ0OjE0MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1jb2x1bW4tbGFyZ2U+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1sYXJnZT46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmV7bGVmdDo3MHB4fS51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1sYXJnZS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbiwudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtcm93LWxhcmdlLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6MTQwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLWxhcmdlLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmV7dG9wOi03MHB4O2xlZnQ6MTQwcHh9LnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLXJvdy1sYXJnZS51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbjo6YmVmb3Jle3RvcDotNzBweH0udWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtY29sdW1uLWxhcmdlLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmV7bGVmdDoxNDBweH19LnVrLWdyaWQtaXRlbS1tYXRjaCwudWstZ3JpZC1tYXRjaD4qe2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcH0udWstZ3JpZC1pdGVtLW1hdGNoPjpub3QoW2NsYXNzKj11ay13aWR0aF0pLC51ay1ncmlkLW1hdGNoPio+Om5vdChbY2xhc3MqPXVrLXdpZHRoXSl7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCU7ZmxleDphdXRvfS51ay10aWxle3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nLWxlZnQ6MTVweDtwYWRkaW5nLXJpZ2h0OjE1cHg7cGFkZGluZy10b3A6NDBweDtwYWRkaW5nLWJvdHRvbTo0MHB4fUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsudWstdGlsZXtwYWRkaW5nLWxlZnQ6MzBweDtwYWRkaW5nLXJpZ2h0OjMwcHh9fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstdGlsZXtwYWRkaW5nLWxlZnQ6NDBweDtwYWRkaW5nLXJpZ2h0OjQwcHg7cGFkZGluZy10b3A6NzBweDtwYWRkaW5nLWJvdHRvbTo3MHB4fX0udWstdGlsZTo6YWZ0ZXIsLnVrLXRpbGU6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6dGFibGV9LnVrLXRpbGU6OmFmdGVye2NsZWFyOmJvdGh9LnVrLXRpbGU+Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS51ay10aWxlLXhzbWFsbHtwYWRkaW5nLXRvcDoyMHB4O3BhZGRpbmctYm90dG9tOjIwcHh9LnVrLXRpbGUtc21hbGx7cGFkZGluZy10b3A6NDBweDtwYWRkaW5nLWJvdHRvbTo0MHB4fS51ay10aWxlLWxhcmdle3BhZGRpbmctdG9wOjcwcHg7cGFkZGluZy1ib3R0b206NzBweH1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLXRpbGUtbGFyZ2V7cGFkZGluZy10b3A6MTQwcHg7cGFkZGluZy1ib3R0b206MTQwcHh9fS51ay10aWxlLXhsYXJnZXtwYWRkaW5nLXRvcDoxNDBweDtwYWRkaW5nLWJvdHRvbToxNDBweH1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLXRpbGUteGxhcmdle3BhZGRpbmctdG9wOjIxMHB4O3BhZGRpbmctYm90dG9tOjIxMHB4fX0udWstdGlsZS1kZWZhdWx0e2JhY2tncm91bmQ6I2ZmZn0udWstdGlsZS1tdXRlZHtiYWNrZ3JvdW5kOiNmOGY4Zjh9LnVrLXRpbGUtcHJpbWFyeXtiYWNrZ3JvdW5kOiMxZTg3ZjB9LnVrLXRpbGUtc2Vjb25kYXJ5e2JhY2tncm91bmQ6IzIyMn0udWstY2FyZHtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7dHJhbnNpdGlvbjpib3gtc2hhZG93IC4xcyBlYXNlLWluLW91dH0udWstY2FyZC1ib2R5e3BhZGRpbmc6MzBweCAzMHB4fS51ay1jYXJkLWhlYWRlcntwYWRkaW5nOjE1cHggMzBweH0udWstY2FyZC1mb290ZXJ7cGFkZGluZzoxNXB4IDMwcHh9QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstY2FyZC1ib2R5e3BhZGRpbmc6NDBweCA0MHB4fS51ay1jYXJkLWhlYWRlcntwYWRkaW5nOjIwcHggNDBweH0udWstY2FyZC1mb290ZXJ7cGFkZGluZzoyMHB4IDQwcHh9fS51ay1jYXJkLWJvZHk6OmFmdGVyLC51ay1jYXJkLWJvZHk6OmJlZm9yZSwudWstY2FyZC1mb290ZXI6OmFmdGVyLC51ay1jYXJkLWZvb3Rlcjo6YmVmb3JlLC51ay1jYXJkLWhlYWRlcjo6YWZ0ZXIsLnVrLWNhcmQtaGVhZGVyOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlfS51ay1jYXJkLWJvZHk6OmFmdGVyLC51ay1jYXJkLWZvb3Rlcjo6YWZ0ZXIsLnVrLWNhcmQtaGVhZGVyOjphZnRlcntjbGVhcjpib3RofS51ay1jYXJkLWJvZHk+Omxhc3QtY2hpbGQsLnVrLWNhcmQtZm9vdGVyPjpsYXN0LWNoaWxkLC51ay1jYXJkLWhlYWRlcj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWNhcmQtdGl0bGV7Zm9udC1zaXplOjEuNXJlbTtsaW5lLWhlaWdodDoxLjR9LnVrLWNhcmQtYmFkZ2V7cG9zaXRpb246YWJzb2x1dGU7dG9wOjMwcHg7cmlnaHQ6MzBweDt6LWluZGV4OjF9LnVrLWNhcmQtYmFkZ2U6Zmlyc3QtY2hpbGQrKnttYXJnaW4tdG9wOjB9LnVrLWNhcmQtaG92ZXI6bm90KC51ay1jYXJkLWRlZmF1bHQpOm5vdCgudWstY2FyZC1wcmltYXJ5KTpub3QoLnVrLWNhcmQtc2Vjb25kYXJ5KTpob3ZlcntiYWNrZ3JvdW5kOiNmZmY7Ym94LXNoYWRvdzowIDE0cHggMjVweCByZ2JhKDAsMCwwLC4xNil9LnVrLWNhcmQtZGVmYXVsdHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzY2Njtib3gtc2hhZG93OjAgNXB4IDE1cHggcmdiYSgwLDAsMCwuMDgpfS51ay1jYXJkLWRlZmF1bHQgLnVrLWNhcmQtdGl0bGV7Y29sb3I6IzMzM30udWstY2FyZC1kZWZhdWx0LnVrLWNhcmQtaG92ZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JveC1zaGFkb3c6MCAxNHB4IDI1cHggcmdiYSgwLDAsMCwuMTYpfS51ay1jYXJkLWRlZmF1bHQgLnVrLWNhcmQtaGVhZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTV9LnVrLWNhcmQtZGVmYXVsdCAudWstY2FyZC1mb290ZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNX0udWstY2FyZC1wcmltYXJ5e2JhY2tncm91bmQ6IzFlODdmMDtjb2xvcjojZmZmO2JveC1zaGFkb3c6MCA1cHggMTVweCByZ2JhKDAsMCwwLC4wOCl9LnVrLWNhcmQtcHJpbWFyeSAudWstY2FyZC10aXRsZXtjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ob3Zlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMxZTg3ZjA7Ym94LXNoYWRvdzowIDE0cHggMjVweCByZ2JhKDAsMCwwLC4xNil9LnVrLWNhcmQtc2Vjb25kYXJ5e2JhY2tncm91bmQ6IzIyMjtjb2xvcjojZmZmO2JveC1zaGFkb3c6MCA1cHggMTVweCByZ2JhKDAsMCwwLC4wOCl9LnVrLWNhcmQtc2Vjb25kYXJ5IC51ay1jYXJkLXRpdGxle2NvbG9yOiNmZmZ9LnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtaG92ZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMjIyO2JveC1zaGFkb3c6MCAxNHB4IDI1cHggcmdiYSgwLDAsMCwuMTYpfS51ay1jYXJkLXNtYWxsIC51ay1jYXJkLWJvZHksLnVrLWNhcmQtc21hbGwudWstY2FyZC1ib2R5e3BhZGRpbmc6MjBweCAyMHB4fS51ay1jYXJkLXNtYWxsIC51ay1jYXJkLWhlYWRlcntwYWRkaW5nOjEzcHggMjBweH0udWstY2FyZC1zbWFsbCAudWstY2FyZC1mb290ZXJ7cGFkZGluZzoxM3B4IDIwcHh9QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstY2FyZC1sYXJnZSAudWstY2FyZC1ib2R5LC51ay1jYXJkLWxhcmdlLnVrLWNhcmQtYm9keXtwYWRkaW5nOjcwcHggNzBweH0udWstY2FyZC1sYXJnZSAudWstY2FyZC1oZWFkZXJ7cGFkZGluZzozNXB4IDcwcHh9LnVrLWNhcmQtbGFyZ2UgLnVrLWNhcmQtZm9vdGVye3BhZGRpbmc6MzVweCA3MHB4fX0udWstY2FyZC1ib2R5Pi51ay1uYXYtZGVmYXVsdHttYXJnaW4tbGVmdDotMzBweDttYXJnaW4tcmlnaHQ6LTMwcHh9LnVrLWNhcmQtYm9keT4udWstbmF2LWRlZmF1bHQ6b25seS1jaGlsZHttYXJnaW4tdG9wOi0xNXB4O21hcmdpbi1ib3R0b206LTE1cHh9LnVrLWNhcmQtYm9keSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1kaXZpZGVyLC51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtaGVhZGVyLC51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0PmxpPmF7cGFkZGluZy1sZWZ0OjMwcHg7cGFkZGluZy1yaWdodDozMHB4fS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3Vie3BhZGRpbmctbGVmdDo0NXB4fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LnVrLWNhcmQtYm9keT4udWstbmF2LWRlZmF1bHR7bWFyZ2luLWxlZnQ6LTQwcHg7bWFyZ2luLXJpZ2h0Oi00MHB4fS51ay1jYXJkLWJvZHk+LnVrLW5hdi1kZWZhdWx0Om9ubHktY2hpbGR7bWFyZ2luLXRvcDotMjVweDttYXJnaW4tYm90dG9tOi0yNXB4fS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWhlYWRlciwudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saT5he3BhZGRpbmctbGVmdDo0MHB4O3BhZGRpbmctcmlnaHQ6NDBweH0udWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YntwYWRkaW5nLWxlZnQ6NTVweH19LnVrLWNhcmQtc21hbGw+LnVrLW5hdi1kZWZhdWx0e21hcmdpbi1sZWZ0Oi0yMHB4O21hcmdpbi1yaWdodDotMjBweH0udWstY2FyZC1zbWFsbD4udWstbmF2LWRlZmF1bHQ6b25seS1jaGlsZHttYXJnaW4tdG9wOi01cHg7bWFyZ2luLWJvdHRvbTotNXB4fS51ay1jYXJkLXNtYWxsIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWRpdmlkZXIsLnVrLWNhcmQtc21hbGwgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtaGVhZGVyLC51ay1jYXJkLXNtYWxsIC51ay1uYXYtZGVmYXVsdD5saT5he3BhZGRpbmctbGVmdDoyMHB4O3BhZGRpbmctcmlnaHQ6MjBweH0udWstY2FyZC1zbWFsbCAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWJ7cGFkZGluZy1sZWZ0OjM1cHh9QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstY2FyZC1sYXJnZT4udWstbmF2LWRlZmF1bHR7bWFyZ2luOjB9LnVrLWNhcmQtbGFyZ2U+LnVrLW5hdi1kZWZhdWx0Om9ubHktY2hpbGR7bWFyZ2luOjB9LnVrLWNhcmQtbGFyZ2UgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstY2FyZC1sYXJnZSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1oZWFkZXIsLnVrLWNhcmQtbGFyZ2UgLnVrLW5hdi1kZWZhdWx0PmxpPmF7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS51ay1jYXJkLWxhcmdlIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YntwYWRkaW5nLWxlZnQ6MTVweH19LnVrLWNsb3Nle2NvbG9yOiM5OTk7dHJhbnNpdGlvbjouMXMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixvcGFjaXR5fS51ay1jbG9zZTpmb2N1cywudWstY2xvc2U6aG92ZXJ7Y29sb3I6IzY2NjtvdXRsaW5lOjB9LnVrLXNwaW5uZXI+KnthbmltYXRpb246dWstc3Bpbm5lci1yb3RhdGUgMS40cyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyB1ay1zcGlubmVyLXJvdGF0ZXswJXt0cmFuc2Zvcm06cm90YXRlKDApfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfX0udWstc3Bpbm5lcj4qPip7c3Ryb2tlLWRhc2hhcnJheTo4OHB4O3N0cm9rZS1kYXNob2Zmc2V0OjA7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7YW5pbWF0aW9uOnVrLXNwaW5uZXItZGFzaCAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOnJvdW5kfUBrZXlmcmFtZXMgdWstc3Bpbm5lci1kYXNoezAle3N0cm9rZS1kYXNob2Zmc2V0Ojg4cHh9NTAle3N0cm9rZS1kYXNob2Zmc2V0OjIycHg7dHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6ODhweDt0cmFuc2Zvcm06cm90YXRlKDQ1MGRlZyl9fS51ay10b3RvcHtwYWRkaW5nOjVweDtjb2xvcjojOTk5O3RyYW5zaXRpb246Y29sb3IgLjFzIGVhc2UtaW4tb3V0fS51ay10b3RvcDpmb2N1cywudWstdG90b3A6aG92ZXJ7Y29sb3I6IzY2NjtvdXRsaW5lOjB9LnVrLXRvdG9wOmFjdGl2ZXtjb2xvcjojMzMzfS51ay1tYXJrZXJ7cGFkZGluZzo1cHg7YmFja2dyb3VuZDojMjIyO2NvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czo1MDBweH0udWstbWFya2VyOmZvY3VzLC51ay1tYXJrZXI6aG92ZXJ7Y29sb3I6I2ZmZjtvdXRsaW5lOjB9LnVrLWFsZXJ0e3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi1ib3R0b206MjBweDtwYWRkaW5nOjE1cHggMjlweCAxNXB4IDE1cHg7YmFja2dyb3VuZDojZjhmOGY4O2NvbG9yOiM2NjZ9KisudWstYWxlcnR7bWFyZ2luLXRvcDoyMHB4fS51ay1hbGVydD46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWFsZXJ0LWNsb3Nle3Bvc2l0aW9uOmFic29sdXRlO3RvcDoyMHB4O3JpZ2h0OjE1cHg7Y29sb3I6aW5oZXJpdDtvcGFjaXR5Oi40fS51ay1hbGVydC1jbG9zZTpmaXJzdC1jaGlsZCsqe21hcmdpbi10b3A6MH0udWstYWxlcnQtY2xvc2U6Zm9jdXMsLnVrLWFsZXJ0LWNsb3NlOmhvdmVye2NvbG9yOmluaGVyaXQ7b3BhY2l0eTouOH0udWstYWxlcnQtcHJpbWFyeXtiYWNrZ3JvdW5kOiNkOGVhZmM7Y29sb3I6IzFlODdmMH0udWstYWxlcnQtc3VjY2Vzc3tiYWNrZ3JvdW5kOiNlZGZiZjY7Y29sb3I6IzMyZDI5Nn0udWstYWxlcnQtd2FybmluZ3tiYWNrZ3JvdW5kOiNmZmY2ZWU7Y29sb3I6I2ZhYTA1YX0udWstYWxlcnQtZGFuZ2Vye2JhY2tncm91bmQ6I2ZlZjRmNjtjb2xvcjojZjA1MDZlfS51ay1hbGVydCBoMSwudWstYWxlcnQgaDIsLnVrLWFsZXJ0IGgzLC51ay1hbGVydCBoNCwudWstYWxlcnQgaDUsLnVrLWFsZXJ0IGg2e2NvbG9yOmluaGVyaXR9LnVrLWFsZXJ0IGE6bm90KFtjbGFzc10pe2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0udWstYWxlcnQgYTpub3QoW2NsYXNzXSk6aG92ZXJ7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS51ay1iYWRnZXtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLXdpZHRoOjIycHg7aGVpZ2h0OjIycHg7cGFkZGluZzowIDVweDtib3JkZXItcmFkaXVzOjUwMHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtiYWNrZ3JvdW5kOiMxZTg3ZjA7Y29sb3I6I2ZmZjtmb250LXNpemU6Ljg3NXJlbTtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS51ay1iYWRnZTpmb2N1cywudWstYmFkZ2U6aG92ZXJ7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtvdXRsaW5lOjB9LnVrLWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MCAxMHB4O2JhY2tncm91bmQ6IzFlODdmMDtsaW5lLWhlaWdodDoxLjU7Zm9udC1zaXplOi44NzVyZW07Y29sb3I6I2ZmZjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwO2JvcmRlci1yYWRpdXM6MnB4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0udWstbGFiZWwtc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiMzMmQyOTY7Y29sb3I6I2ZmZn0udWstbGFiZWwtd2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmYWEwNWE7Y29sb3I6I2ZmZn0udWstbGFiZWwtZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2YwNTA2ZTtjb2xvcjojZmZmfS51ay1vdmVybGF5e3BhZGRpbmc6MzBweCAzMHB4fS51ay1vdmVybGF5PjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWstb3ZlcmxheS1kZWZhdWx0e2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOCl9LnVrLW92ZXJsYXktcHJpbWFyeXtiYWNrZ3JvdW5kOnJnYmEoMzQsMzQsMzQsLjgpfS51ay1hcnRpY2xlOjphZnRlciwudWstYXJ0aWNsZTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZX0udWstYXJ0aWNsZTo6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWstYXJ0aWNsZT46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWFydGljbGUrLnVrLWFydGljbGV7bWFyZ2luLXRvcDo3MHB4fS51ay1hcnRpY2xlLXRpdGxle2ZvbnQtc2l6ZToyLjIzMTI1cmVtO2xpbmUtaGVpZ2h0OjEuMn1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWFydGljbGUtdGl0bGV7Zm9udC1zaXplOjIuNjI1cmVtfX0udWstYXJ0aWNsZS1tZXRhe2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuNDtjb2xvcjojOTk5fS51ay1hcnRpY2xlLW1ldGEgYXtjb2xvcjojOTk5fS51ay1hcnRpY2xlLW1ldGEgYTpob3Zlcntjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lfS51ay1jb21tZW50LWJvZHl7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkO3dvcmQtd3JhcDpicmVhay13b3JkfS51ay1jb21tZW50LWhlYWRlcnttYXJnaW4tYm90dG9tOjIwcHh9LnVrLWNvbW1lbnQtYm9keTo6YWZ0ZXIsLnVrLWNvbW1lbnQtYm9keTo6YmVmb3JlLC51ay1jb21tZW50LWhlYWRlcjo6YWZ0ZXIsLnVrLWNvbW1lbnQtaGVhZGVyOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlfS51ay1jb21tZW50LWJvZHk6OmFmdGVyLC51ay1jb21tZW50LWhlYWRlcjo6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWstY29tbWVudC1ib2R5PjpsYXN0LWNoaWxkLC51ay1jb21tZW50LWhlYWRlcj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWNvbW1lbnQtdGl0bGV7Zm9udC1zaXplOjEuMjVyZW07bGluZS1oZWlnaHQ6MS40fS51ay1jb21tZW50LW1ldGF7Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS40O2NvbG9yOiM5OTl9LnVrLWNvbW1lbnQtbGlzdHtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS51ay1jb21tZW50LWxpc3Q+Om50aC1jaGlsZChuKzIpe21hcmdpbi10b3A6NzBweH0udWstY29tbWVudC1saXN0IC51ay1jb21tZW50fnVse21hcmdpbjo3MHB4IDAgMCAwO3BhZGRpbmctbGVmdDozMHB4O2xpc3Qtc3R5bGU6bm9uZX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWNvbW1lbnQtbGlzdCAudWstY29tbWVudH51bHtwYWRkaW5nLWxlZnQ6MTAwcHh9fS51ay1jb21tZW50LWxpc3QgLnVrLWNvbW1lbnR+dWw+Om50aC1jaGlsZChuKzIpe21hcmdpbi10b3A6NzBweH0udWstY29tbWVudC1wcmltYXJ5e3BhZGRpbmc6MzBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjh9LnVrLXNlYXJjaHtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTttYXgtd2lkdGg6MTAwJTttYXJnaW46MH0udWstc2VhcmNoLWlucHV0Ojotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC51ay1zZWFyY2gtaW5wdXQ6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LnVrLXNlYXJjaC1pbnB1dDo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjF9LnVrLXNlYXJjaC1pbnB1dHtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7Ym9yZGVyLXJhZGl1czowO2ZvbnQ6aW5oZXJpdDtvdmVyZmxvdzp2aXNpYmxlOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoxMDAlO2JvcmRlcjpub25lO2NvbG9yOiM2NjZ9LnVrLXNlYXJjaC1pbnB1dDpmb2N1c3tvdXRsaW5lOjB9LnVrLXNlYXJjaC1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OSFpbXBvcnRhbnR9LnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6Izk5OX0udWstc2VhcmNoLWljb246Zm9jdXN7b3V0bGluZTowfS51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOiM5OTl9LnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXJ7Y29sb3I6Izk5OX0udWstc2VhcmNoIC51ay1zZWFyY2gtaWNvbjpub3QoYSk6bm90KGJ1dHRvbik6bm90KGlucHV0KXtwb2ludGVyLWV2ZW50czpub25lfS51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uLWZsaXB7cmlnaHQ6MDtsZWZ0OmF1dG99LnVrLXNlYXJjaC1kZWZhdWx0e3dpZHRoOjE4MHB4fS51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0e2hlaWdodDo0MHB4O3BhZGRpbmctbGVmdDo2cHg7cGFkZGluZy1yaWdodDo2cHg7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjFweCBzb2xpZCAjZTVlNWU1fS51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0OmZvY3Vze2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaWNvbnt3aWR0aDo0MHB4fS51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWljb246bm90KC51ay1zZWFyY2gtaWNvbi1mbGlwKX4udWstc2VhcmNoLWlucHV0e3BhZGRpbmctbGVmdDo0MHB4fS51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWljb24tZmxpcH4udWstc2VhcmNoLWlucHV0e3BhZGRpbmctcmlnaHQ6NDBweH0udWstc2VhcmNoLW5hdmJhcnt3aWR0aDo0MDBweH0udWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWlucHV0e2hlaWdodDo0MHB4O2JhY2tncm91bmQ6MCAwO2ZvbnQtc2l6ZToxLjVyZW19LnVrLXNlYXJjaC1uYXZiYXIgLnVrLXNlYXJjaC1pY29ue3dpZHRoOjQwcHh9LnVrLXNlYXJjaC1uYXZiYXIgLnVrLXNlYXJjaC1pY29uOm5vdCgudWstc2VhcmNoLWljb24tZmxpcCl+LnVrLXNlYXJjaC1pbnB1dHtwYWRkaW5nLWxlZnQ6NDBweH0udWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWljb24tZmxpcH4udWstc2VhcmNoLWlucHV0e3BhZGRpbmctcmlnaHQ6NDBweH0udWstc2VhcmNoLWxhcmdle3dpZHRoOjUwMHB4fS51ay1zZWFyY2gtbGFyZ2UgLnVrLXNlYXJjaC1pbnB1dHtoZWlnaHQ6ODBweDtiYWNrZ3JvdW5kOjAgMDtmb250LXNpemU6Mi42MjVyZW19LnVrLXNlYXJjaC1sYXJnZSAudWstc2VhcmNoLWljb257d2lkdGg6ODBweH0udWstc2VhcmNoLWxhcmdlIC51ay1zZWFyY2gtaWNvbjpub3QoLnVrLXNlYXJjaC1pY29uLWZsaXApfi51ay1zZWFyY2gtaW5wdXR7cGFkZGluZy1sZWZ0OjgwcHh9LnVrLXNlYXJjaC1sYXJnZSAudWstc2VhcmNoLWljb24tZmxpcH4udWstc2VhcmNoLWlucHV0e3BhZGRpbmctcmlnaHQ6ODBweH0udWstc2VhcmNoLXRvZ2dsZXtjb2xvcjojOTk5fS51ay1zZWFyY2gtdG9nZ2xlOmZvY3VzLC51ay1zZWFyY2gtdG9nZ2xlOmhvdmVye2NvbG9yOiM2NjZ9LnVrLW5hdiwudWstbmF2IHVse21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9LnVrLW5hdiBsaT5he2Rpc3BsYXk6YmxvY2s7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVrLW5hdiBsaT5hOmZvY3Vze291dGxpbmU6MH0udWstbmF2PmxpPmF7cGFkZGluZzo1cHggMH11bC51ay1uYXYtc3Vie3BhZGRpbmc6NXB4IDAgNXB4IDE1cHh9LnVrLW5hdi1zdWIgdWx7cGFkZGluZy1sZWZ0OjE1cHh9LnVrLW5hdi1zdWIgYXtwYWRkaW5nOjJweCAwfS51ay1uYXYtcGFyZW50LWljb24+LnVrLXBhcmVudD5hOjphZnRlcntjb250ZW50OiIiO3dpZHRoOjEuNWVtO2hlaWdodDoxLjVlbTtmbG9hdDpyaWdodDtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNCUyMiUyMGhlaWdodCUzRCUyMjE0JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTQlMjAxNCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWxpbmUlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHN0cm9rZSUzRCUyMiUyMzY2NiUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjEuMSUyMiUyMHBvaW50cyUzRCUyMjEwJTIwMSUyMDQlMjA3JTIwMTAlMjAxMyUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSIpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJSA1MCV9LnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50LnVrLW9wZW4+YTo6YWZ0ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTQlMjIlMjBoZWlnaHQlM0QlMjIxNCUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE0JTIwMTQlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlsaW5lJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBzdHJva2UlM0QlMjIlMjM2NjYlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIxLjElMjIlMjBwb2ludHMlM0QlMjIxJTIwNCUyMDclMjAxMCUyMDEzJTIwNCUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSIpfS51ay1uYXYtaGVhZGVye3BhZGRpbmc6NXB4IDA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtc2l6ZTouODc1cmVtfS51ay1uYXYtaGVhZGVyOm5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi10b3A6MjBweH0udWstbmF2LWRpdmlkZXJ7bWFyZ2luOjVweCAwfS51ay1uYXYtZGVmYXVsdHtmb250LXNpemU6Ljg3NXJlbX0udWstbmF2LWRlZmF1bHQ+bGk+YXtjb2xvcjojOTk5fS51ay1uYXYtZGVmYXVsdD5saT5hOmZvY3VzLC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVye2NvbG9yOiM2NjZ9LnVrLW5hdi1kZWZhdWx0PmxpLnVrLWFjdGl2ZT5he2NvbG9yOiMzMzN9LnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtaGVhZGVye2NvbG9yOiMzMzN9LnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhe2NvbG9yOiM5OTl9LnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXJ7Y29sb3I6IzY2Nn0udWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmF7Y29sb3I6IzMzM30udWstbmF2LXByaW1hcnk+bGk+YXtmb250LXNpemU6MS41cmVtO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojOTk5fS51ay1uYXYtcHJpbWFyeT5saT5hOmZvY3VzLC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVye2NvbG9yOiM2NjZ9LnVrLW5hdi1wcmltYXJ5PmxpLnVrLWFjdGl2ZT5he2NvbG9yOiMzMzN9LnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtaGVhZGVye2NvbG9yOiMzMzN9LnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtZGl2aWRlcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhe2NvbG9yOiM5OTl9LnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXJ7Y29sb3I6IzY2Nn0udWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmF7Y29sb3I6IzMzM30udWstbmF2LWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0udWstbmF2LWNlbnRlciAudWstbmF2LXN1YiwudWstbmF2LWNlbnRlciAudWstbmF2LXN1YiB1bHtwYWRkaW5nLWxlZnQ6MH0udWstbmF2LWNlbnRlci51ay1uYXYtcGFyZW50LWljb24+LnVrLXBhcmVudD5hOjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZX0udWstbmF2YmFye2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZX0udWstbmF2YmFyLWNvbnRhaW5lcjpub3QoLnVrLW5hdmJhci10cmFuc3BhcmVudCl7YmFja2dyb3VuZDojZjhmOGY4fS51ay1uYXZiYXItY29udGFpbmVyPjo6YWZ0ZXIsLnVrLW5hdmJhci1jb250YWluZXI+OjpiZWZvcmV7ZGlzcGxheTpub25lIWltcG9ydGFudH0udWstbmF2YmFyLWNlbnRlciwudWstbmF2YmFyLWNlbnRlci1sZWZ0PiosLnVrLW5hdmJhci1jZW50ZXItcmlnaHQ+KiwudWstbmF2YmFyLWxlZnQsLnVrLW5hdmJhci1yaWdodHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS51ay1uYXZiYXItcmlnaHR7bWFyZ2luLWxlZnQ6YXV0b30udWstbmF2YmFyLWNlbnRlcjpvbmx5LWNoaWxke21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87cG9zaXRpb246cmVsYXRpdmV9LnVrLW5hdmJhci1jZW50ZXI6bm90KDpvbmx5LWNoaWxkKXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt3aWR0aDptYXgtY29udGVudDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDo5OTB9LnVrLW5hdmJhci1jZW50ZXItbGVmdCwudWstbmF2YmFyLWNlbnRlci1yaWdodHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH0udWstbmF2YmFyLWNlbnRlci1sZWZ0e3JpZ2h0OjEwMCV9LnVrLW5hdmJhci1jZW50ZXItcmlnaHR7bGVmdDoxMDAlfVtjbGFzcyo9dWstbmF2YmFyLWNlbnRlci1de3dpZHRoOm1heC1jb250ZW50O2JveC1zaXppbmc6Ym9yZGVyLWJveH0udWstbmF2YmFyLW5hdntkaXNwbGF5OmZsZXg7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0udWstbmF2YmFyLWNlbnRlcjpvbmx5LWNoaWxkLC51ay1uYXZiYXItbGVmdCwudWstbmF2YmFyLXJpZ2h0e2ZsZXgtd3JhcDp3cmFwfS51ay1uYXZiYXItaXRlbSwudWstbmF2YmFyLW5hdj5saT5hLC51ay1uYXZiYXItdG9nZ2xle2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLWhlaWdodDo4MHB4O3BhZGRpbmc6MCAxNXB4O2ZvbnQtc2l6ZTouODc1cmVtO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsUm9ib3RvLCJIZWx2ZXRpY2EgTmV1ZSIsQXJpYWwsIk5vdG8gU2FucyIsc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIlNlZ29lIFVJIFN5bWJvbCIsIk5vdG8gQ29sb3IgRW1vamkiO3RleHQtZGVjb3JhdGlvbjpub25lfS51ay1uYXZiYXItbmF2PmxpPmF7Y29sb3I6Izk5OTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7dHJhbnNpdGlvbjouMXMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yfS51ay1uYXZiYXItbmF2PmxpOmhvdmVyPmEsLnVrLW5hdmJhci1uYXY+bGk+YS51ay1vcGVuLC51ay1uYXZiYXItbmF2PmxpPmE6Zm9jdXN7Y29sb3I6IzY2NjtvdXRsaW5lOjB9LnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmV7Y29sb3I6IzMzM30udWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YXtjb2xvcjojMzMzfS51ay1uYXZiYXItaXRlbXtjb2xvcjojNjY2fS51ay1uYXZiYXItdG9nZ2xle2NvbG9yOiM5OTl9LnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstbmF2YmFyLXRvZ2dsZTpmb2N1cywudWstbmF2YmFyLXRvZ2dsZTpob3Zlcntjb2xvcjojNjY2O291dGxpbmU6MDt0ZXh0LWRlY29yYXRpb246bm9uZX0udWstbmF2YmFyLXN1YnRpdGxle2ZvbnQtc2l6ZTouODc1cmVtfS51ay1uYXZiYXItZHJvcGRvd257ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAyMDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MjAwcHg7cGFkZGluZzoyNXB4O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojNjY2O2JveC1zaGFkb3c6MCA1cHggMTJweCByZ2JhKDAsMCwwLC4xNSl9LnVrLW5hdmJhci1kcm9wZG93bi51ay1vcGVue2Rpc3BsYXk6YmxvY2t9W2NsYXNzKj11ay1uYXZiYXItZHJvcGRvd24tdG9wXXttYXJnaW4tdG9wOi0xNXB4fVtjbGFzcyo9dWstbmF2YmFyLWRyb3Bkb3duLWJvdHRvbV17bWFyZ2luLXRvcDoxNXB4fVtjbGFzcyo9dWstbmF2YmFyLWRyb3Bkb3duLWxlZnRde21hcmdpbi1sZWZ0Oi0xNXB4fVtjbGFzcyo9dWstbmF2YmFyLWRyb3Bkb3duLXJpZ2h0XXttYXJnaW4tbGVmdDoxNXB4fS51ay1uYXZiYXItZHJvcGRvd24tZ3JpZHttYXJnaW4tbGVmdDotNTBweH0udWstbmF2YmFyLWRyb3Bkb3duLWdyaWQ+KntwYWRkaW5nLWxlZnQ6NTBweH0udWstbmF2YmFyLWRyb3Bkb3duLWdyaWQ+LnVrLWdyaWQtbWFyZ2lue21hcmdpbi10b3A6NTBweH0udWstbmF2YmFyLWRyb3Bkb3duLXN0YWNrIC51ay1uYXZiYXItZHJvcGRvd24tZ3JpZD4qe3dpZHRoOjEwMCUhaW1wb3J0YW50fS51ay1uYXZiYXItZHJvcGRvd24td2lkdGgtMjpub3QoLnVrLW5hdmJhci1kcm9wZG93bi1zdGFjayl7d2lkdGg6NDAwcHh9LnVrLW5hdmJhci1kcm9wZG93bi13aWR0aC0zOm5vdCgudWstbmF2YmFyLWRyb3Bkb3duLXN0YWNrKXt3aWR0aDo2MDBweH0udWstbmF2YmFyLWRyb3Bkb3duLXdpZHRoLTQ6bm90KC51ay1uYXZiYXItZHJvcGRvd24tc3RhY2spe3dpZHRoOjgwMHB4fS51ay1uYXZiYXItZHJvcGRvd24td2lkdGgtNTpub3QoLnVrLW5hdmJhci1kcm9wZG93bi1zdGFjayl7d2lkdGg6MTAwMHB4fS51ay1uYXZiYXItZHJvcGRvd24tZHJvcGJhcnttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2JveC1zaGFkb3c6bm9uZX0udWstbmF2YmFyLWRyb3Bkb3duLW5hdntmb250LXNpemU6Ljg3NXJlbX0udWstbmF2YmFyLWRyb3Bkb3duLW5hdj5saT5he2NvbG9yOiM5OTl9LnVrLW5hdmJhci1kcm9wZG93bi1uYXY+bGk+YTpmb2N1cywudWstbmF2YmFyLWRyb3Bkb3duLW5hdj5saT5hOmhvdmVye2NvbG9yOiM2NjZ9LnVrLW5hdmJhci1kcm9wZG93bi1uYXY+bGkudWstYWN0aXZlPmF7Y29sb3I6IzMzM30udWstbmF2YmFyLWRyb3Bkb3duLW5hdiAudWstbmF2LWhlYWRlcntjb2xvcjojMzMzfS51ay1uYXZiYXItZHJvcGRvd24tbmF2IC51ay1uYXYtZGl2aWRlcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1fS51ay1uYXZiYXItZHJvcGRvd24tbmF2IC51ay1uYXYtc3ViIGF7Y29sb3I6Izk5OX0udWstbmF2YmFyLWRyb3Bkb3duLW5hdiAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1uYXZiYXItZHJvcGRvd24tbmF2IC51ay1uYXYtc3ViIGE6aG92ZXJ7Y29sb3I6IzY2Nn0udWstbmF2YmFyLWRyb3Bkb3duLW5hdiAudWstbmF2LXN1YiBsaS51ay1hY3RpdmU+YXtjb2xvcjojMzMzfS51ay1uYXZiYXItZHJvcGJhcntiYWNrZ3JvdW5kOiNmZmZ9LnVrLW5hdmJhci1kcm9wYmFyLXNsaWRle3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTgwO2xlZnQ6MDtyaWdodDowO2JveC1zaGFkb3c6MCA1cHggN3B4IHJnYmEoMCwwLDAsLjA1KX0udWstbmF2YmFyLWNvbnRhaW5lcj4udWstY29udGFpbmVyIC51ay1uYXZiYXItbGVmdHttYXJnaW4tbGVmdDotMTVweDttYXJnaW4tcmlnaHQ6LTE1cHh9LnVrLW5hdmJhci1jb250YWluZXI+LnVrLWNvbnRhaW5lciAudWstbmF2YmFyLXJpZ2h0e21hcmdpbi1yaWdodDotMTVweH0udWstbmF2YmFyLWRyb3Bkb3duLWdyaWQ+Kntwb3NpdGlvbjpyZWxhdGl2ZX0udWstbmF2YmFyLWRyb3Bkb3duLWdyaWQ+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDoyNXB4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZTVlNWU1fS51ay1uYXZiYXItZHJvcGRvd24tZ3JpZC51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbjo6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0yNXB4O2xlZnQ6NTBweDtyaWdodDowO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNWU1ZTV9LnVrLXN1Ym5hdntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWxlZnQ6LTIwcHg7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0udWstc3VibmF2Pip7ZmxleDpub25lO3BhZGRpbmctbGVmdDoyMHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1zdWJuYXY+Kj46Zmlyc3QtY2hpbGR7ZGlzcGxheTpibG9jaztjb2xvcjojOTk5O2ZvbnQtc2l6ZTouODc1cmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt0cmFuc2l0aW9uOi4xcyBlYXNlLWluLW91dDt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3J9LnVrLXN1Ym5hdj4qPmE6Zm9jdXMsLnVrLXN1Ym5hdj4qPmE6aG92ZXJ7Y29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZTtvdXRsaW5lOjB9LnVrLXN1Ym5hdj4udWstYWN0aXZlPmF7Y29sb3I6IzMzM30udWstc3VibmF2LWRpdmlkZXI+KntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS51ay1zdWJuYXYtZGl2aWRlcj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmV7Y29udGVudDoiIjtoZWlnaHQ6MS41ZW07bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MjBweDtib3JkZXItbGVmdDoxcHggc29saWQgI2U1ZTVlNX0udWstc3VibmF2LXBpbGw+Kj46Zmlyc3QtY2hpbGR7cGFkZGluZzo1cHggMTBweDtiYWNrZ3JvdW5kOjAgMDtjb2xvcjojOTk5fS51ay1zdWJuYXYtcGlsbD4qPmE6Zm9jdXMsLnVrLXN1Ym5hdi1waWxsPio+YTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjg7Y29sb3I6IzY2Nn0udWstc3VibmF2LXBpbGw+Kj5hOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjg7Y29sb3I6IzY2Nn0udWstc3VibmF2LXBpbGw+LnVrLWFjdGl2ZT5he2JhY2tncm91bmQtY29sb3I6IzFlODdmMDtjb2xvcjojZmZmfS51ay1zdWJuYXY+LnVrLWRpc2FibGVkPmF7Y29sb3I6Izk5OX0udWstYnJlYWRjcnVtYntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0udWstYnJlYWRjcnVtYj4qe2ZsZXg6bm9uZX0udWstYnJlYWRjcnVtYj4qPip7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOi44NzVyZW07Y29sb3I6Izk5OX0udWstYnJlYWRjcnVtYj4qPjpmb2N1cywudWstYnJlYWRjcnVtYj4qPjpob3Zlcntjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lfS51ay1icmVhZGNydW1iPjpsYXN0LWNoaWxkPip7Y29sb3I6IzY2Nn0udWstYnJlYWRjcnVtYj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmV7Y29udGVudDoiLyI7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjAgMjBweDtjb2xvcjojOTk5fS51ay1wYWdpbmF0aW9ue2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tbGVmdDotMjBweDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS51ay1wYWdpbmF0aW9uPip7ZmxleDpub25lO3BhZGRpbmctbGVmdDoyMHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1wYWdpbmF0aW9uPio+KntkaXNwbGF5OmJsb2NrO2NvbG9yOiM5OTk7dHJhbnNpdGlvbjpjb2xvciAuMXMgZWFzZS1pbi1vdXR9LnVrLXBhZ2luYXRpb24+Kj46Zm9jdXMsLnVrLXBhZ2luYXRpb24+Kj46aG92ZXJ7Y29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZX0udWstcGFnaW5hdGlvbj4udWstYWN0aXZlPip7Y29sb3I6IzY2Nn0udWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+Kntjb2xvcjojOTk5fS51ay10YWJ7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1sZWZ0Oi0yMHB4O3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7cG9zaXRpb246cmVsYXRpdmV9LnVrLXRhYjo6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDoyMHB4O3JpZ2h0OjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNX0udWstdGFiPip7ZmxleDpub25lO3BhZGRpbmctbGVmdDoyMHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS51ay10YWI+Kj5he2Rpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo1cHggMTBweDtjb2xvcjojOTk5O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHRyYW5zcGFyZW50O2ZvbnQtc2l6ZTouODc1cmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt0cmFuc2l0aW9uOmNvbG9yIC4xcyBlYXNlLWluLW91dH0udWstdGFiPio+YTpmb2N1cywudWstdGFiPio+YTpob3Zlcntjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lfS51ay10YWI+LnVrLWFjdGl2ZT5he2NvbG9yOiMzMzM7Ym9yZGVyLWNvbG9yOiMxZTg3ZjB9LnVrLXRhYj4udWstZGlzYWJsZWQ+YXtjb2xvcjojOTk5fS51ay10YWItYm90dG9tOjpiZWZvcmV7dG9wOjA7Ym90dG9tOmF1dG99LnVrLXRhYi1ib3R0b20+Kj5he2JvcmRlci10b3A6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206bm9uZX0udWstdGFiLWxlZnQsLnVrLXRhYi1yaWdodHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2luLWxlZnQ6MH0udWstdGFiLWxlZnQ+KiwudWstdGFiLXJpZ2h0Pip7cGFkZGluZy1sZWZ0OjB9LnVrLXRhYi1sZWZ0OjpiZWZvcmV7dG9wOjA7Ym90dG9tOjA7bGVmdDphdXRvO3JpZ2h0OjA7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlNWU1ZTU7Ym9yZGVyLWJvdHRvbTpub25lfS51ay10YWItcmlnaHQ6OmJlZm9yZXt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6YXV0bztib3JkZXItbGVmdDoxcHggc29saWQgI2U1ZTVlNTtib3JkZXItYm90dG9tOm5vbmV9LnVrLXRhYi1sZWZ0Pio+YXt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOm5vbmV9LnVrLXRhYi1yaWdodD4qPmF7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci1sZWZ0OjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOm5vbmV9LnVrLXRhYiAudWstZHJvcGRvd257bWFyZ2luLWxlZnQ6MzBweH0udWstc2xpZGVuYXZ7cGFkZGluZzo1cHggMTBweDtjb2xvcjpyZ2JhKDEwMiwxMDIsMTAyLC41KTt0cmFuc2l0aW9uOmNvbG9yIC4xcyBlYXNlLWluLW91dH0udWstc2xpZGVuYXY6Zm9jdXMsLnVrLXNsaWRlbmF2OmhvdmVye2NvbG9yOnJnYmEoMTAyLDEwMiwxMDIsLjkpO291dGxpbmU6MH0udWstc2xpZGVuYXY6YWN0aXZle2NvbG9yOnJnYmEoMTAyLDEwMiwxMDIsLjUpfS51ay1zbGlkZW5hdi1sYXJnZXtwYWRkaW5nOjEwcHggMTBweH0udWstc2xpZGVuYXYtY29udGFpbmVye2Rpc3BsYXk6ZmxleH0udWstZG90bmF2e2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO21hcmdpbi1sZWZ0Oi0xMnB4fS51ay1kb3RuYXY+KntmbGV4Om5vbmU7cGFkZGluZy1sZWZ0OjEycHh9LnVrLWRvdG5hdj4qPip7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOjAgMDt0ZXh0LWluZGVudDoxMDAlO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDEwMiwxMDIsMTAyLC40KTt0cmFuc2l0aW9uOi4ycyBlYXNlLWluLW91dDt0cmFuc2l0aW9uLXByb3BlcnR5OmJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yfS51ay1kb3RuYXY+Kj46Zm9jdXMsLnVrLWRvdG5hdj4qPjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTAyLDEwMiwxMDIsLjYpO291dGxpbmU6MDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWRvdG5hdj4qPjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEwMiwxMDIsMTAyLC4yKTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWRvdG5hdj4udWstYWN0aXZlPip7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEwMiwxMDIsMTAyLC42KTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWRvdG5hdi12ZXJ0aWNhbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2luLWxlZnQ6MDttYXJnaW4tdG9wOi0xMnB4fS51ay1kb3RuYXYtdmVydGljYWw+KntwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXRvcDoxMnB4fS51ay10aHVtYm5hdntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTttYXJnaW4tbGVmdDotMTVweH0udWstdGh1bWJuYXY+KntwYWRkaW5nLWxlZnQ6MTVweH0udWstdGh1bWJuYXY+Kj4qe2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS51ay10aHVtYm5hdj4qPjo6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjQpO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMXMgZWFzZS1pbi1vdXR9LnVrLXRodW1ibmF2Pio+OmZvY3VzLC51ay10aHVtYm5hdj4qPjpob3ZlcntvdXRsaW5lOjB9LnVrLXRodW1ibmF2Pio+OmZvY3VzOjphZnRlciwudWstdGh1bWJuYXY+Kj46aG92ZXI6OmFmdGVye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnVrLXRodW1ibmF2Pi51ay1hY3RpdmU+OjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS51ay10aHVtYm5hdi12ZXJ0aWNhbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2luLWxlZnQ6MDttYXJnaW4tdG9wOi0xNXB4fS51ay10aHVtYm5hdi12ZXJ0aWNhbD4qe3BhZGRpbmctbGVmdDowO3BhZGRpbmctdG9wOjE1cHh9LnVrLWFjY29yZGlvbntwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS51ay1hY2NvcmRpb24+Om50aC1jaGlsZChuKzIpe21hcmdpbi10b3A6MjBweH0udWstYWNjb3JkaW9uLXRpdGxle2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEuMjVyZW07bGluZS1oZWlnaHQ6MS40O2NvbG9yOiMzMzM7b3ZlcmZsb3c6aGlkZGVufS51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZXtjb250ZW50OiIiO3dpZHRoOjEuNGVtO2hlaWdodDoxLjRlbTttYXJnaW4tbGVmdDoxMHB4O2Zsb2F0OnJpZ2h0O2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjEzJTIyJTIwaGVpZ2h0JTNEJTIyMTMlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMyUyMDEzJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzY2NiUyMiUyMHdpZHRoJTNEJTIyMTMlMjIlMjBoZWlnaHQlM0QlMjIxJTIyJTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyNiUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzNjY2JTIyJTIwd2lkdGglM0QlMjIxJTIyJTIwaGVpZ2h0JTNEJTIyMTMlMjIlMjB4JTNEJTIyNiUyMiUyMHklM0QlMjIwJTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIik7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246NTAlIDUwJX0udWstb3Blbj4udWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTMlMjIlMjBoZWlnaHQlM0QlMjIxMyUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEzJTIwMTMlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzNjY2JTIyJTIwd2lkdGglM0QlMjIxMyUyMiUyMGhlaWdodCUzRCUyMjElMjIlMjB4JTNEJTIyMCUyMiUyMHklM0QlMjI2JTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIil9LnVrLWFjY29yZGlvbi10aXRsZTpmb2N1cywudWstYWNjb3JkaW9uLXRpdGxlOmhvdmVye2NvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7b3V0bGluZTowfS51ay1hY2NvcmRpb24tY29udGVudHttYXJnaW4tdG9wOjIwcHh9LnVrLWFjY29yZGlvbi1jb250ZW50OjphZnRlciwudWstYWNjb3JkaW9uLWNvbnRlbnQ6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6dGFibGV9LnVrLWFjY29yZGlvbi1jb250ZW50OjphZnRlcntjbGVhcjpib3RofS51ay1hY2NvcmRpb24tY29udGVudD46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWRyb3B7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAyMDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MzAwcHh9LnVrLWRyb3AudWstb3BlbntkaXNwbGF5OmJsb2NrfVtjbGFzcyo9dWstZHJvcC10b3Bde21hcmdpbi10b3A6LTIwcHh9W2NsYXNzKj11ay1kcm9wLWJvdHRvbV17bWFyZ2luLXRvcDoyMHB4fVtjbGFzcyo9dWstZHJvcC1sZWZ0XXttYXJnaW4tbGVmdDotMjBweH1bY2xhc3MqPXVrLWRyb3AtcmlnaHRde21hcmdpbi1sZWZ0OjIwcHh9LnVrLWRyb3Atc3RhY2sgLnVrLWRyb3AtZ3JpZD4qe3dpZHRoOjEwMCUhaW1wb3J0YW50fS51ay1kcm9wZG93bntkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDIwO2JveC1zaXppbmc6Ym9yZGVyLWJveDttaW4td2lkdGg6MjAwcHg7cGFkZGluZzoyNXB4O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojNjY2O2JveC1zaGFkb3c6MCA1cHggMTJweCByZ2JhKDAsMCwwLC4xNSl9LnVrLWRyb3Bkb3duLnVrLW9wZW57ZGlzcGxheTpibG9ja30udWstZHJvcGRvd24tbmF2e3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXNpemU6Ljg3NXJlbX0udWstZHJvcGRvd24tbmF2PmxpPmF7Y29sb3I6Izk5OX0udWstZHJvcGRvd24tbmF2PmxpLnVrLWFjdGl2ZT5hLC51ay1kcm9wZG93bi1uYXY+bGk+YTpmb2N1cywudWstZHJvcGRvd24tbmF2PmxpPmE6aG92ZXJ7Y29sb3I6IzY2Nn0udWstZHJvcGRvd24tbmF2IC51ay1uYXYtaGVhZGVye2NvbG9yOiMzMzN9LnVrLWRyb3Bkb3duLW5hdiAudWstbmF2LWRpdmlkZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNX0udWstZHJvcGRvd24tbmF2IC51ay1uYXYtc3ViIGF7Y29sb3I6Izk5OX0udWstZHJvcGRvd24tbmF2IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLWRyb3Bkb3duLW5hdiAudWstbmF2LXN1YiBhOmhvdmVyLC51ay1kcm9wZG93bi1uYXYgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmF7Y29sb3I6IzY2Nn1bY2xhc3MqPXVrLWRyb3Bkb3duLXRvcF17bWFyZ2luLXRvcDotMTBweH1bY2xhc3MqPXVrLWRyb3Bkb3duLWJvdHRvbV17bWFyZ2luLXRvcDoxMHB4fVtjbGFzcyo9dWstZHJvcGRvd24tbGVmdF17bWFyZ2luLWxlZnQ6LTEwcHh9W2NsYXNzKj11ay1kcm9wZG93bi1yaWdodF17bWFyZ2luLWxlZnQ6MTBweH0udWstZHJvcGRvd24tc3RhY2sgLnVrLWRyb3Bkb3duLWdyaWQ+Knt3aWR0aDoxMDAlIWltcG9ydGFudH0udWstbW9kYWx7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO3otaW5kZXg6MTAxMDtvdmVyZmxvdy15OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cGFkZGluZzoxNXB4IDE1cHg7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC42KTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgbGluZWFyfUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsudWstbW9kYWx7cGFkZGluZzo1MHB4IDMwcHh9fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstbW9kYWx7cGFkZGluZy1sZWZ0OjQwcHg7cGFkZGluZy1yaWdodDo0MHB4fX0udWstbW9kYWwudWstb3BlbntvcGFjaXR5OjF9LnVrLW1vZGFsLXBhZ2V7b3ZlcmZsb3c6aGlkZGVufS51ay1tb2RhbC1kaWFsb2d7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowIGF1dG87d2lkdGg6NjAwcHg7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIC4wMXB4KSFpbXBvcnRhbnQ7YmFja2dyb3VuZDojZmZmO29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwcHgpO3RyYW5zaXRpb246LjNzIGxpbmVhcjt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtfS51ay1vcGVuPi51ay1tb2RhbC1kaWFsb2d7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfS51ay1tb2RhbC1jb250YWluZXIgLnVrLW1vZGFsLWRpYWxvZ3t3aWR0aDoxMjAwcHh9LnVrLW1vZGFsLWZ1bGx7cGFkZGluZzowO2JhY2tncm91bmQ6MCAwfS51ay1tb2RhbC1mdWxsIC51ay1tb2RhbC1kaWFsb2d7bWFyZ2luOjA7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX0udWstbW9kYWwtYm9keXtwYWRkaW5nOjMwcHggMzBweH0udWstbW9kYWwtaGVhZGVye3BhZGRpbmc6MTVweCAzMHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1fS51ay1tb2RhbC1mb290ZXJ7cGFkZGluZzoxNXB4IDMwcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNWU1ZTV9LnVrLW1vZGFsLWJvZHk6OmFmdGVyLC51ay1tb2RhbC1ib2R5OjpiZWZvcmUsLnVrLW1vZGFsLWZvb3Rlcjo6YWZ0ZXIsLnVrLW1vZGFsLWZvb3Rlcjo6YmVmb3JlLC51ay1tb2RhbC1oZWFkZXI6OmFmdGVyLC51ay1tb2RhbC1oZWFkZXI6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6dGFibGV9LnVrLW1vZGFsLWJvZHk6OmFmdGVyLC51ay1tb2RhbC1mb290ZXI6OmFmdGVyLC51ay1tb2RhbC1oZWFkZXI6OmFmdGVye2NsZWFyOmJvdGh9LnVrLW1vZGFsLWJvZHk+Omxhc3QtY2hpbGQsLnVrLW1vZGFsLWZvb3Rlcj46bGFzdC1jaGlsZCwudWstbW9kYWwtaGVhZGVyPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWstbW9kYWwtdGl0bGV7Zm9udC1zaXplOjJyZW07bGluZS1oZWlnaHQ6MS4zfVtjbGFzcyo9dWstbW9kYWwtY2xvc2UtXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMTA7dG9wOjEwcHg7cmlnaHQ6MTBweDtwYWRkaW5nOjVweH1bY2xhc3MqPXVrLW1vZGFsLWNsb3NlLV06Zmlyc3QtY2hpbGQrKnttYXJnaW4tdG9wOjB9LnVrLW1vZGFsLWNsb3NlLW91dHNpZGV7dG9wOjA7cmlnaHQ6LTVweDt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTEwMCUpO2NvbG9yOiNmZmZ9LnVrLW1vZGFsLWNsb3NlLW91dHNpZGU6aG92ZXJ7Y29sb3I6I2ZmZn1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLW1vZGFsLWNsb3NlLW91dHNpZGV7cmlnaHQ6MDt0cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUsLTEwMCUpfX0udWstbW9kYWwtY2xvc2UtZnVsbHt0b3A6MDtyaWdodDowO3BhZGRpbmc6MjBweDtiYWNrZ3JvdW5kOiNmZmZ9LnVrLWxpZ2h0Ym94e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4OjEwMTA7YmFja2dyb3VuZDojMDAwO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyBsaW5lYXJ9LnVrLWxpZ2h0Ym94LnVrLW9wZW57ZGlzcGxheTpibG9jaztvcGFjaXR5OjF9LnVrLWxpZ2h0Ym94LXBhZ2V7b3ZlcmZsb3c6aGlkZGVufS51ay1saWdodGJveC1pdGVtcz4qe3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO2Rpc3BsYXk6bm9uZTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTt3aWxsLWNoYW5nZTp0cmFuc2Zvcm0sb3BhY2l0eX0udWstbGlnaHRib3gtaXRlbXM+Kj4qe21heC13aWR0aDoxMDB2dzttYXgtaGVpZ2h0OjEwMHZofS51ay1saWdodGJveC1pdGVtcz46Zm9jdXN7b3V0bGluZTowfS51ay1saWdodGJveC1pdGVtcz4qPjpub3QoaWZyYW1lKXt3aWR0aDphdXRvO2hlaWdodDphdXRvfS51ay1saWdodGJveC1pdGVtcz4udWstYWN0aXZle2Rpc3BsYXk6ZmxleH0udWstbGlnaHRib3gtdG9vbGJhcntwYWRkaW5nOjEwcHggMTBweDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMpO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1saWdodGJveC10b29sYmFyPip7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWxpZ2h0Ym94LXRvb2xiYXItaWNvbntwYWRkaW5nOjVweDtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstbGlnaHRib3gtdG9vbGJhci1pY29uOmhvdmVye2NvbG9yOiNmZmZ9LnVrLWxpZ2h0Ym94LWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6NTBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMpO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9LnVrLWxpZ2h0Ym94LWJ1dHRvbjpob3Zlcntjb2xvcjojZmZmfS51ay1saWdodGJveC1pZnJhbWV7d2lkdGg6ODAlO2hlaWdodDo4MCV9LnVrLXNsaWRlc2hvd3std2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9LnVrLXNsaWRlc2hvdy1pdGVtc3twb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjA7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmV9LnVrLXNsaWRlc2hvdy1pdGVtcz4qe3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO292ZXJmbG93OmhpZGRlbjt3aWxsLWNoYW5nZTp0cmFuc2Zvcm0sb3BhY2l0eTt0b3VjaC1hY3Rpb246cGFuLXl9LnVrLXNsaWRlc2hvdy1pdGVtcz46Zm9jdXN7b3V0bGluZTowfS51ay1zbGlkZXNob3ctaXRlbXM+Om5vdCgudWstYWN0aXZlKXtkaXNwbGF5Om5vbmV9LnVrLXNsaWRlcnstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9LnVrLXNsaWRlci1jb250YWluZXJ7b3ZlcmZsb3c6aGlkZGVufS51ay1zbGlkZXItaXRlbXN7d2lsbC1jaGFuZ2U6dHJhbnNmb3JtO3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1zbGlkZXItaXRlbXM6bm90KC51ay1ncmlkKXtkaXNwbGF5OmZsZXg7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZX0udWstc2xpZGVyLWl0ZW1zLnVrLWdyaWR7ZmxleC13cmFwOm5vd3JhcH0udWstc2xpZGVyLWl0ZW1zPip7ZmxleDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO3RvdWNoLWFjdGlvbjpwYW4teX0udWstc2xpZGVyLWl0ZW1zPjpmb2N1c3tvdXRsaW5lOjB9LnVrLXN0aWNreS1maXhlZHt6LWluZGV4Ojk4MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjAhaW1wb3J0YW50Oy13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW59LnVrLXN0aWNreVtjbGFzcyo9dWstYW5pbWF0aW9uLV17YW5pbWF0aW9uLWR1cmF0aW9uOi4yc30udWstc3RpY2t5LnVrLWFuaW1hdGlvbi1yZXZlcnNle2FuaW1hdGlvbi1kdXJhdGlvbjouMnN9LnVrLW9mZmNhbnZhc3tkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3otaW5kZXg6MTAwMH0udWstb2ZmY2FudmFzLWZsaXAgLnVrLW9mZmNhbnZhc3tyaWdodDowO2xlZnQ6YXV0b30udWstb2ZmY2FudmFzLWJhcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0Oi0yNzBweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MjcwcHg7cGFkZGluZzoyMHB4IDIwcHg7YmFja2dyb3VuZDojMjIyO292ZXJmbG93LXk6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLW9mZmNhbnZhcy1iYXJ7bGVmdDotMzUwcHg7d2lkdGg6MzUwcHg7cGFkZGluZzo0MHB4IDQwcHh9fS51ay1vZmZjYW52YXMtZmxpcCAudWstb2ZmY2FudmFzLWJhcntsZWZ0OmF1dG87cmlnaHQ6LTI3MHB4fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstb2ZmY2FudmFzLWZsaXAgLnVrLW9mZmNhbnZhcy1iYXJ7cmlnaHQ6LTM1MHB4fX0udWstb3Blbj4udWstb2ZmY2FudmFzLWJhcntsZWZ0OjB9LnVrLW9mZmNhbnZhcy1mbGlwIC51ay1vcGVuPi51ay1vZmZjYW52YXMtYmFye2xlZnQ6YXV0bztyaWdodDowfS51ay1vZmZjYW52YXMtYmFyLWFuaW1hdGlvbnt0cmFuc2l0aW9uOmxlZnQgLjNzIGVhc2Utb3V0fS51ay1vZmZjYW52YXMtZmxpcCAudWstb2ZmY2FudmFzLWJhci1hbmltYXRpb257dHJhbnNpdGlvbi1wcm9wZXJ0eTpyaWdodH0udWstb2ZmY2FudmFzLXJldmVhbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7d2lkdGg6MDtvdmVyZmxvdzpoaWRkZW47dHJhbnNpdGlvbjp3aWR0aCAuM3MgZWFzZS1vdXR9LnVrLW9mZmNhbnZhcy1yZXZlYWwgLnVrLW9mZmNhbnZhcy1iYXJ7bGVmdDowfS51ay1vZmZjYW52YXMtZmxpcCAudWstb2ZmY2FudmFzLXJldmVhbCAudWstb2ZmY2FudmFzLWJhcntsZWZ0OmF1dG87cmlnaHQ6MH0udWstb3Blbj4udWstb2ZmY2FudmFzLXJldmVhbHt3aWR0aDoyNzBweH1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLW9wZW4+LnVrLW9mZmNhbnZhcy1yZXZlYWx7d2lkdGg6MzUwcHh9fS51ay1vZmZjYW52YXMtZmxpcCAudWstb2ZmY2FudmFzLXJldmVhbHtyaWdodDowO2xlZnQ6YXV0b30udWstb2ZmY2FudmFzLWNsb3Nle3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDt0b3A6MjBweDtyaWdodDoyMHB4O3BhZGRpbmc6NXB4fS51ay1vZmZjYW52YXMtb3ZlcmxheXt3aWR0aDoxMDB2dzt0b3VjaC1hY3Rpb246bm9uZX0udWstb2ZmY2FudmFzLW92ZXJsYXk6OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMSk7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGxpbmVhcn0udWstb2ZmY2FudmFzLW92ZXJsYXkudWstb3Blbjo6YmVmb3Jle29wYWNpdHk6MX0udWstb2ZmY2FudmFzLWNvbnRhaW5lciwudWstb2ZmY2FudmFzLXBhZ2V7b3ZlcmZsb3cteDpoaWRkZW59LnVrLW9mZmNhbnZhcy1jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDowO3RyYW5zaXRpb246bGVmdCAuM3MgZWFzZS1vdXQ7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCV9Om5vdCgudWstb2ZmY2FudmFzLWZsaXApLnVrLW9mZmNhbnZhcy1jb250YWluZXItYW5pbWF0aW9ue2xlZnQ6MjcwcHh9LnVrLW9mZmNhbnZhcy1mbGlwLnVrLW9mZmNhbnZhcy1jb250YWluZXItYW5pbWF0aW9ue2xlZnQ6LTI3MHB4fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXs6bm90KC51ay1vZmZjYW52YXMtZmxpcCkudWstb2ZmY2FudmFzLWNvbnRhaW5lci1hbmltYXRpb257bGVmdDozNTBweH0udWstb2ZmY2FudmFzLWZsaXAudWstb2ZmY2FudmFzLWNvbnRhaW5lci1hbmltYXRpb257bGVmdDotMzUwcHh9fS51ay1zd2l0Y2hlcnttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS51ay1zd2l0Y2hlcj46bm90KC51ay1hY3RpdmUpe2Rpc3BsYXk6bm9uZX0udWstc3dpdGNoZXI+Kj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLWxlYWRlcntvdmVyZmxvdzpoaWRkZW59LnVrLWxlYWRlci1maWxsOjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tbGVmdDoxNXB4O3dpZHRoOjA7Y29udGVudDphdHRyKGRhdGEtZmlsbCk7d2hpdGUtc3BhY2U6bm93cmFwfS51ay1sZWFkZXItZmlsbC51ay1sZWFkZXItaGlkZTo6YWZ0ZXJ7ZGlzcGxheTpub25lfS51ay1sZWFkZXItZmlsbC1jb250ZW50OjpiZWZvcmV7Y29udGVudDonLid9OnJvb3R7LS11ay1sZWFkZXItZmlsbC1jb250ZW50Oi59LnVrLWljb25uYXZ7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luLWxlZnQ6LTEwcHh9LnVrLWljb25uYXY+KntwYWRkaW5nLWxlZnQ6MTBweH0udWstaWNvbm5hdj4qPmF7ZGlzcGxheTpibG9jaztjb2xvcjojOTk5fS51ay1pY29ubmF2Pio+YTpmb2N1cywudWstaWNvbm5hdj4qPmE6aG92ZXJ7Y29sb3I6IzY2NjtvdXRsaW5lOjB9LnVrLWljb25uYXY+LnVrLWFjdGl2ZT5he2NvbG9yOiM2NjZ9LnVrLWljb25uYXYtdmVydGljYWx7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXRvcDotMTBweH0udWstaWNvbm5hdi12ZXJ0aWNhbD4qe3BhZGRpbmctbGVmdDowO3BhZGRpbmctdG9wOjEwcHh9LnVrLW5vdGlmaWNhdGlvbntwb3NpdGlvbjpmaXhlZDt0b3A6MTBweDtsZWZ0OjEwcHg7ei1pbmRleDoxMDQwO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDozNTBweH0udWstbm90aWZpY2F0aW9uLWJvdHRvbS1yaWdodCwudWstbm90aWZpY2F0aW9uLXRvcC1yaWdodHtsZWZ0OmF1dG87cmlnaHQ6MTBweH0udWstbm90aWZpY2F0aW9uLWJvdHRvbS1jZW50ZXIsLnVrLW5vdGlmaWNhdGlvbi10b3AtY2VudGVye2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi0xNzVweH0udWstbm90aWZpY2F0aW9uLWJvdHRvbS1jZW50ZXIsLnVrLW5vdGlmaWNhdGlvbi1ib3R0b20tbGVmdCwudWstbm90aWZpY2F0aW9uLWJvdHRvbS1yaWdodHt0b3A6YXV0bztib3R0b206MTBweH1AbWVkaWEgKG1heC13aWR0aDo2MzlweCl7LnVrLW5vdGlmaWNhdGlvbntsZWZ0OjEwcHg7cmlnaHQ6MTBweDt3aWR0aDphdXRvO21hcmdpbjowfX0udWstbm90aWZpY2F0aW9uLW1lc3NhZ2V7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzoxNXB4O2JhY2tncm91bmQ6I2Y4ZjhmODtjb2xvcjojNjY2O2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjEuNDtjdXJzb3I6cG9pbnRlcn0qKy51ay1ub3RpZmljYXRpb24tbWVzc2FnZXttYXJnaW4tdG9wOjEwcHh9LnVrLW5vdGlmaWNhdGlvbi1jbG9zZXtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjIwcHg7cmlnaHQ6MTVweH0udWstbm90aWZpY2F0aW9uLW1lc3NhZ2U6aG92ZXIgLnVrLW5vdGlmaWNhdGlvbi1jbG9zZXtkaXNwbGF5OmJsb2NrfS51ay1ub3RpZmljYXRpb24tbWVzc2FnZS1wcmltYXJ5e2NvbG9yOiMxZTg3ZjB9LnVrLW5vdGlmaWNhdGlvbi1tZXNzYWdlLXN1Y2Nlc3N7Y29sb3I6IzMyZDI5Nn0udWstbm90aWZpY2F0aW9uLW1lc3NhZ2Utd2FybmluZ3tjb2xvcjojZmFhMDVhfS51ay1ub3RpZmljYXRpb24tbWVzc2FnZS1kYW5nZXJ7Y29sb3I6I2YwNTA2ZX0udWstdG9vbHRpcHtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDMwO2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXgtd2lkdGg6MjAwcHg7cGFkZGluZzozcHggNnB4O2JhY2tncm91bmQ6IzY2Njtib3JkZXItcmFkaXVzOjJweDtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMnB4fS51ay10b29sdGlwLnVrLWFjdGl2ZXtkaXNwbGF5OmJsb2NrfVtjbGFzcyo9dWstdG9vbHRpcC10b3Bde21hcmdpbi10b3A6LTEwcHh9W2NsYXNzKj11ay10b29sdGlwLWJvdHRvbV17bWFyZ2luLXRvcDoxMHB4fVtjbGFzcyo9dWstdG9vbHRpcC1sZWZ0XXttYXJnaW4tbGVmdDotMTBweH1bY2xhc3MqPXVrLXRvb2x0aXAtcmlnaHRde21hcmdpbi1sZWZ0OjEwcHh9LnVrLXBsYWNlaG9sZGVye21hcmdpbi1ib3R0b206MjBweDtwYWRkaW5nOjMwcHggMzBweDtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MXB4IGRhc2hlZCAjZTVlNWU1fSorLnVrLXBsYWNlaG9sZGVye21hcmdpbi10b3A6MjBweH0udWstcGxhY2Vob2xkZXI+Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS51ay1wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7Ym9yZGVyOjA7YmFja2dyb3VuZC1jb2xvcjojZjhmOGY4O21hcmdpbi1ib3R0b206MjBweDtoZWlnaHQ6MTVweDtib3JkZXItcmFkaXVzOjUwMHB4O292ZXJmbG93OmhpZGRlbn0qKy51ay1wcm9ncmVzc3ttYXJnaW4tdG9wOjIwcHh9LnVrLXByb2dyZXNzOmluZGV0ZXJtaW5hdGV7Y29sb3I6dHJhbnNwYXJlbnR9LnVrLXByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjg7Ym9yZGVyLXJhZGl1czo1MDBweDtvdmVyZmxvdzpoaWRkZW59LnVrLXByb2dyZXNzOmluZGV0ZXJtaW5hdGU6Oi1tb3otcHJvZ3Jlc3MtYmFye3dpZHRoOjB9LnVrLXByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6IzFlODdmMDt0cmFuc2l0aW9uOndpZHRoIC42cyBlYXNlfS51ay1wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjojMWU4N2YwfS51ay1wcm9ncmVzczo6LW1zLWZpbGx7YmFja2dyb3VuZC1jb2xvcjojMWU4N2YwO3RyYW5zaXRpb246d2lkdGggLjZzIGVhc2U7Ym9yZGVyOjB9LnVrLXNvcnRhYmxle3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1zb3J0YWJsZSBzdmd7cG9pbnRlci1ldmVudHM6bm9uZX0udWstc29ydGFibGU+Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS51ay1zb3J0YWJsZS1kcmFne3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDt6LWluZGV4OjEwNTAhaW1wb3J0YW50O3BvaW50ZXItZXZlbnRzOm5vbmV9LnVrLXNvcnRhYmxlLXBsYWNlaG9sZGVye29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lfS51ay1zb3J0YWJsZS1lbXB0eXttaW4taGVpZ2h0OjUwcHh9LnVrLXNvcnRhYmxlLWhhbmRsZTpob3ZlcntjdXJzb3I6bW92ZX0udWstY291bnRkb3duLW51bWJlciwudWstY291bnRkb3duLXNlcGFyYXRvcntsaW5lLWhlaWdodDouOH0udWstY291bnRkb3duLW51bWJlcntmb250LXNpemU6MnJlbX1AbWVkaWEgKG1pbi13aWR0aDo2NDBweCl7LnVrLWNvdW50ZG93bi1udW1iZXJ7Zm9udC1zaXplOjRyZW19fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstY291bnRkb3duLW51bWJlcntmb250LXNpemU6NnJlbX19LnVrLWNvdW50ZG93bi1zZXBhcmF0b3J7Zm9udC1zaXplOjFyZW19QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1jb3VudGRvd24tc2VwYXJhdG9ye2ZvbnQtc2l6ZToycmVtfX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWNvdW50ZG93bi1zZXBhcmF0b3J7Zm9udC1zaXplOjNyZW19fVtjbGFzcyo9dWstYW5pbWF0aW9uLV17YW5pbWF0aW9uLWR1cmF0aW9uOi41czthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0O2FuaW1hdGlvbi1maWxsLW1vZGU6Ym90aH0udWstYW5pbWF0aW9uLWZhZGV7YW5pbWF0aW9uLW5hbWU6dWstZmFkZTthbmltYXRpb24tZHVyYXRpb246LjhzO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyfS51ay1hbmltYXRpb24tc2NhbGUtdXB7YW5pbWF0aW9uLW5hbWU6dWstZmFkZS1zY2FsZS0wMn0udWstYW5pbWF0aW9uLXNjYWxlLWRvd257YW5pbWF0aW9uLW5hbWU6dWstZmFkZS1zY2FsZS0xOH0udWstYW5pbWF0aW9uLXNsaWRlLXRvcHthbmltYXRpb24tbmFtZTp1ay1mYWRlLXRvcH0udWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbXthbmltYXRpb24tbmFtZTp1ay1mYWRlLWJvdHRvbX0udWstYW5pbWF0aW9uLXNsaWRlLWxlZnR7YW5pbWF0aW9uLW5hbWU6dWstZmFkZS1sZWZ0fS51ay1hbmltYXRpb24tc2xpZGUtcmlnaHR7YW5pbWF0aW9uLW5hbWU6dWstZmFkZS1yaWdodH0udWstYW5pbWF0aW9uLXNsaWRlLXRvcC1zbWFsbHthbmltYXRpb24tbmFtZTp1ay1mYWRlLXRvcC1zbWFsbH0udWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbS1zbWFsbHthbmltYXRpb24tbmFtZTp1ay1mYWRlLWJvdHRvbS1zbWFsbH0udWstYW5pbWF0aW9uLXNsaWRlLWxlZnQtc21hbGx7YW5pbWF0aW9uLW5hbWU6dWstZmFkZS1sZWZ0LXNtYWxsfS51ay1hbmltYXRpb24tc2xpZGUtcmlnaHQtc21hbGx7YW5pbWF0aW9uLW5hbWU6dWstZmFkZS1yaWdodC1zbWFsbH0udWstYW5pbWF0aW9uLXNsaWRlLXRvcC1tZWRpdW17YW5pbWF0aW9uLW5hbWU6dWstZmFkZS10b3AtbWVkaXVtfS51ay1hbmltYXRpb24tc2xpZGUtYm90dG9tLW1lZGl1bXthbmltYXRpb24tbmFtZTp1ay1mYWRlLWJvdHRvbS1tZWRpdW19LnVrLWFuaW1hdGlvbi1zbGlkZS1sZWZ0LW1lZGl1bXthbmltYXRpb24tbmFtZTp1ay1mYWRlLWxlZnQtbWVkaXVtfS51ay1hbmltYXRpb24tc2xpZGUtcmlnaHQtbWVkaXVte2FuaW1hdGlvbi1uYW1lOnVrLWZhZGUtcmlnaHQtbWVkaXVtfS51ay1hbmltYXRpb24ta2VuYnVybnN7YW5pbWF0aW9uLW5hbWU6dWstc2NhbGUta2VuYnVybnM7YW5pbWF0aW9uLWR1cmF0aW9uOjE1c30udWstYW5pbWF0aW9uLXNoYWtle2FuaW1hdGlvbi1uYW1lOnVrLXNoYWtlfS51ay1hbmltYXRpb24tc3Ryb2tle2FuaW1hdGlvbi1uYW1lOnVrLXN0cm9rZTtzdHJva2UtZGFzaGFycmF5OnZhcigtLXVrLWFuaW1hdGlvbi1zdHJva2UpO2FuaW1hdGlvbi1kdXJhdGlvbjoyc30udWstYW5pbWF0aW9uLXJldmVyc2V7YW5pbWF0aW9uLWRpcmVjdGlvbjpyZXZlcnNlO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1pbn0udWstYW5pbWF0aW9uLWZhc3R7YW5pbWF0aW9uLWR1cmF0aW9uOi4xc30udWstYW5pbWF0aW9uLXRvZ2dsZTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKSBbY2xhc3MqPXVrLWFuaW1hdGlvbi1de2FuaW1hdGlvbi1uYW1lOm5vbmV9LnVrLWFuaW1hdGlvbi10b2dnbGV7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS51ay1hbmltYXRpb24tdG9nZ2xlOmZvY3Vze291dGxpbmU6MH1Aa2V5ZnJhbWVzIHVrLWZhZGV7MCV7b3BhY2l0eTowfTEwMCV7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtdG9wezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSl9MTAwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9fUBrZXlmcmFtZXMgdWstZmFkZS1ib3R0b217MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtbGVmdHswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtcmlnaHR7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtdG9wLXNtYWxsezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTBweCl9MTAwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9fUBrZXlmcmFtZXMgdWstZmFkZS1ib3R0b20tc21hbGx7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwcHgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtbGVmdC1zbWFsbHswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwcHgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtcmlnaHQtc21hbGx7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwcHgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtdG9wLW1lZGl1bXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwcHgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtYm90dG9tLW1lZGl1bXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNTBweCl9MTAwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9fUBrZXlmcmFtZXMgdWstZmFkZS1sZWZ0LW1lZGl1bXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwcHgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1Aa2V5ZnJhbWVzIHVrLWZhZGUtcmlnaHQtbWVkaXVtezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCg1MHB4KX0xMDAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QGtleWZyYW1lcyB1ay1mYWRlLXNjYWxlLTAyezAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjIpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZSgxKX19QGtleWZyYW1lcyB1ay1mYWRlLXNjYWxlLTE4ezAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoMS44KX0xMDAle29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSl9fUBrZXlmcmFtZXMgdWstc2NhbGUta2VuYnVybnN7MCV7dHJhbnNmb3JtOnNjYWxlKDEpfTEwMCV7dHJhbnNmb3JtOnNjYWxlKDEuMil9fUBrZXlmcmFtZXMgdWstc2hha2V7MCUsMTAwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX0xMCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTlweCl9MjAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKDhweCl9MzAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKC03cHgpfTQwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWCg2cHgpfTUwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNXB4KX02MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNHB4KX03MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTNweCl9ODAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKDJweCl9OTAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xcHgpfX1Aa2V5ZnJhbWVzIHVrLXN0cm9rZXswJXtzdHJva2UtZGFzaG9mZnNldDp2YXIoLS11ay1hbmltYXRpb24tc3Ryb2tlKX0xMDAle3N0cm9rZS1kYXNob2Zmc2V0OjB9fVtjbGFzcyo9dWstY2hpbGQtd2lkdGhdPip7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCV9LnVrLWNoaWxkLXdpZHRoLTEtMj4qe3dpZHRoOjUwJX0udWstY2hpbGQtd2lkdGgtMS0zPip7d2lkdGg6Y2FsYygxMDAlICogMSAvIDMuMDAxKX0udWstY2hpbGQtd2lkdGgtMS00Pip7d2lkdGg6MjUlfS51ay1jaGlsZC13aWR0aC0xLTU+Knt3aWR0aDoyMCV9LnVrLWNoaWxkLXdpZHRoLTEtNj4qe3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLWNoaWxkLXdpZHRoLWF1dG8+Knt3aWR0aDphdXRvfS51ay1jaGlsZC13aWR0aC1leHBhbmQ+Om5vdChbY2xhc3MqPXVrLXdpZHRoXSl7ZmxleDoxO21pbi13aWR0aDoxcHh9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1jaGlsZC13aWR0aC0xLTFcQHM+Knt3aWR0aDoxMDAlfS51ay1jaGlsZC13aWR0aC0xLTJcQHM+Knt3aWR0aDo1MCV9LnVrLWNoaWxkLXdpZHRoLTEtM1xAcz4qe3dpZHRoOmNhbGMoMTAwJSAqIDEgLyAzLjAwMSl9LnVrLWNoaWxkLXdpZHRoLTEtNFxAcz4qe3dpZHRoOjI1JX0udWstY2hpbGQtd2lkdGgtMS01XEBzPip7d2lkdGg6MjAlfS51ay1jaGlsZC13aWR0aC0xLTZcQHM+Knt3aWR0aDpjYWxjKDEwMCUgKiAxIC8gNi4wMDEpfS51ay1jaGlsZC13aWR0aC1hdXRvXEBzPip7d2lkdGg6YXV0b30udWstY2hpbGQtd2lkdGgtZXhwYW5kXEBzPjpub3QoW2NsYXNzKj11ay13aWR0aF0pe2ZsZXg6MTttaW4td2lkdGg6MXB4fX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWNoaWxkLXdpZHRoLTEtMVxAbT4qe3dpZHRoOjEwMCV9LnVrLWNoaWxkLXdpZHRoLTEtMlxAbT4qe3dpZHRoOjUwJX0udWstY2hpbGQtd2lkdGgtMS0zXEBtPip7d2lkdGg6Y2FsYygxMDAlICogMSAvIDMuMDAxKX0udWstY2hpbGQtd2lkdGgtMS00XEBtPip7d2lkdGg6MjUlfS51ay1jaGlsZC13aWR0aC0xLTVcQG0+Knt3aWR0aDoyMCV9LnVrLWNoaWxkLXdpZHRoLTEtNlxAbT4qe3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLWNoaWxkLXdpZHRoLWF1dG9cQG0+Knt3aWR0aDphdXRvfS51ay1jaGlsZC13aWR0aC1leHBhbmRcQG0+Om5vdChbY2xhc3MqPXVrLXdpZHRoXSl7ZmxleDoxO21pbi13aWR0aDoxcHh9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LnVrLWNoaWxkLXdpZHRoLTEtMVxAbD4qe3dpZHRoOjEwMCV9LnVrLWNoaWxkLXdpZHRoLTEtMlxAbD4qe3dpZHRoOjUwJX0udWstY2hpbGQtd2lkdGgtMS0zXEBsPip7d2lkdGg6Y2FsYygxMDAlICogMSAvIDMuMDAxKX0udWstY2hpbGQtd2lkdGgtMS00XEBsPip7d2lkdGg6MjUlfS51ay1jaGlsZC13aWR0aC0xLTVcQGw+Knt3aWR0aDoyMCV9LnVrLWNoaWxkLXdpZHRoLTEtNlxAbD4qe3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLWNoaWxkLXdpZHRoLWF1dG9cQGw+Knt3aWR0aDphdXRvfS51ay1jaGlsZC13aWR0aC1leHBhbmRcQGw+Om5vdChbY2xhc3MqPXVrLXdpZHRoXSl7ZmxleDoxO21pbi13aWR0aDoxcHh9fUBtZWRpYSAobWluLXdpZHRoOjE2MDBweCl7LnVrLWNoaWxkLXdpZHRoLTEtMVxAeGw+Knt3aWR0aDoxMDAlfS51ay1jaGlsZC13aWR0aC0xLTJcQHhsPip7d2lkdGg6NTAlfS51ay1jaGlsZC13aWR0aC0xLTNcQHhsPip7d2lkdGg6Y2FsYygxMDAlICogMSAvIDMuMDAxKX0udWstY2hpbGQtd2lkdGgtMS00XEB4bD4qe3dpZHRoOjI1JX0udWstY2hpbGQtd2lkdGgtMS01XEB4bD4qe3dpZHRoOjIwJX0udWstY2hpbGQtd2lkdGgtMS02XEB4bD4qe3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLWNoaWxkLXdpZHRoLWF1dG9cQHhsPip7d2lkdGg6YXV0b30udWstY2hpbGQtd2lkdGgtZXhwYW5kXEB4bD46bm90KFtjbGFzcyo9dWstd2lkdGhdKXtmbGV4OjE7bWluLXdpZHRoOjFweH19W2NsYXNzKj11ay13aWR0aF17Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCV9LnVrLXdpZHRoLTEtMnt3aWR0aDo1MCV9LnVrLXdpZHRoLTEtM3t3aWR0aDpjYWxjKDEwMCUgKiAxIC8gMy4wMDEpfS51ay13aWR0aC0yLTN7d2lkdGg6Y2FsYygxMDAlICogMiAvIDMuMDAxKX0udWstd2lkdGgtMS00e3dpZHRoOjI1JX0udWstd2lkdGgtMy00e3dpZHRoOjc1JX0udWstd2lkdGgtMS01e3dpZHRoOjIwJX0udWstd2lkdGgtMi01e3dpZHRoOjQwJX0udWstd2lkdGgtMy01e3dpZHRoOjYwJX0udWstd2lkdGgtNC01e3dpZHRoOjgwJX0udWstd2lkdGgtMS02e3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLXdpZHRoLTUtNnt3aWR0aDpjYWxjKDEwMCUgKiA1IC8gNi4wMDEpfS51ay13aWR0aC1zbWFsbHt3aWR0aDoxNTBweH0udWstd2lkdGgtbWVkaXVte3dpZHRoOjMwMHB4fS51ay13aWR0aC1sYXJnZXt3aWR0aDo0NTBweH0udWstd2lkdGgteGxhcmdle3dpZHRoOjYwMHB4fS51ay13aWR0aC14eGxhcmdle3dpZHRoOjc1MHB4fS51ay13aWR0aC1hdXRve3dpZHRoOmF1dG99LnVrLXdpZHRoLWV4cGFuZHtmbGV4OjE7bWluLXdpZHRoOjFweH1AbWVkaWEgKG1pbi13aWR0aDo2NDBweCl7LnVrLXdpZHRoLTEtMVxAc3t3aWR0aDoxMDAlfS51ay13aWR0aC0xLTJcQHN7d2lkdGg6NTAlfS51ay13aWR0aC0xLTNcQHN7d2lkdGg6Y2FsYygxMDAlICogMSAvIDMuMDAxKX0udWstd2lkdGgtMi0zXEBze3dpZHRoOmNhbGMoMTAwJSAqIDIgLyAzLjAwMSl9LnVrLXdpZHRoLTEtNFxAc3t3aWR0aDoyNSV9LnVrLXdpZHRoLTMtNFxAc3t3aWR0aDo3NSV9LnVrLXdpZHRoLTEtNVxAc3t3aWR0aDoyMCV9LnVrLXdpZHRoLTItNVxAc3t3aWR0aDo0MCV9LnVrLXdpZHRoLTMtNVxAc3t3aWR0aDo2MCV9LnVrLXdpZHRoLTQtNVxAc3t3aWR0aDo4MCV9LnVrLXdpZHRoLTEtNlxAc3t3aWR0aDpjYWxjKDEwMCUgKiAxIC8gNi4wMDEpfS51ay13aWR0aC01LTZcQHN7d2lkdGg6Y2FsYygxMDAlICogNSAvIDYuMDAxKX0udWstd2lkdGgtc21hbGxcQHN7d2lkdGg6MTUwcHh9LnVrLXdpZHRoLW1lZGl1bVxAc3t3aWR0aDozMDBweH0udWstd2lkdGgtbGFyZ2VcQHN7d2lkdGg6NDUwcHh9LnVrLXdpZHRoLXhsYXJnZVxAc3t3aWR0aDo2MDBweH0udWstd2lkdGgteHhsYXJnZVxAc3t3aWR0aDo3NTBweH0udWstd2lkdGgtYXV0b1xAc3t3aWR0aDphdXRvfS51ay13aWR0aC1leHBhbmRcQHN7ZmxleDoxO21pbi13aWR0aDoxcHh9fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstd2lkdGgtMS0xXEBte3dpZHRoOjEwMCV9LnVrLXdpZHRoLTEtMlxAbXt3aWR0aDo1MCV9LnVrLXdpZHRoLTEtM1xAbXt3aWR0aDpjYWxjKDEwMCUgKiAxIC8gMy4wMDEpfS51ay13aWR0aC0yLTNcQG17d2lkdGg6Y2FsYygxMDAlICogMiAvIDMuMDAxKX0udWstd2lkdGgtMS00XEBte3dpZHRoOjI1JX0udWstd2lkdGgtMy00XEBte3dpZHRoOjc1JX0udWstd2lkdGgtMS01XEBte3dpZHRoOjIwJX0udWstd2lkdGgtMi01XEBte3dpZHRoOjQwJX0udWstd2lkdGgtMy01XEBte3dpZHRoOjYwJX0udWstd2lkdGgtNC01XEBte3dpZHRoOjgwJX0udWstd2lkdGgtMS02XEBte3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLXdpZHRoLTUtNlxAbXt3aWR0aDpjYWxjKDEwMCUgKiA1IC8gNi4wMDEpfS51ay13aWR0aC1zbWFsbFxAbXt3aWR0aDoxNTBweH0udWstd2lkdGgtbWVkaXVtXEBte3dpZHRoOjMwMHB4fS51ay13aWR0aC1sYXJnZVxAbXt3aWR0aDo0NTBweH0udWstd2lkdGgteGxhcmdlXEBte3dpZHRoOjYwMHB4fS51ay13aWR0aC14eGxhcmdlXEBte3dpZHRoOjc1MHB4fS51ay13aWR0aC1hdXRvXEBte3dpZHRoOmF1dG99LnVrLXdpZHRoLWV4cGFuZFxAbXtmbGV4OjE7bWluLXdpZHRoOjFweH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstd2lkdGgtMS0xXEBse3dpZHRoOjEwMCV9LnVrLXdpZHRoLTEtMlxAbHt3aWR0aDo1MCV9LnVrLXdpZHRoLTEtM1xAbHt3aWR0aDpjYWxjKDEwMCUgKiAxIC8gMy4wMDEpfS51ay13aWR0aC0yLTNcQGx7d2lkdGg6Y2FsYygxMDAlICogMiAvIDMuMDAxKX0udWstd2lkdGgtMS00XEBse3dpZHRoOjI1JX0udWstd2lkdGgtMy00XEBse3dpZHRoOjc1JX0udWstd2lkdGgtMS01XEBse3dpZHRoOjIwJX0udWstd2lkdGgtMi01XEBse3dpZHRoOjQwJX0udWstd2lkdGgtMy01XEBse3dpZHRoOjYwJX0udWstd2lkdGgtNC01XEBse3dpZHRoOjgwJX0udWstd2lkdGgtMS02XEBse3dpZHRoOmNhbGMoMTAwJSAqIDEgLyA2LjAwMSl9LnVrLXdpZHRoLTUtNlxAbHt3aWR0aDpjYWxjKDEwMCUgKiA1IC8gNi4wMDEpfS51ay13aWR0aC1zbWFsbFxAbHt3aWR0aDoxNTBweH0udWstd2lkdGgtbWVkaXVtXEBse3dpZHRoOjMwMHB4fS51ay13aWR0aC1sYXJnZVxAbHt3aWR0aDo0NTBweH0udWstd2lkdGgteGxhcmdlXEBse3dpZHRoOjYwMHB4fS51ay13aWR0aC14eGxhcmdlXEBse3dpZHRoOjc1MHB4fS51ay13aWR0aC1hdXRvXEBse3dpZHRoOmF1dG99LnVrLXdpZHRoLWV4cGFuZFxAbHtmbGV4OjE7bWluLXdpZHRoOjFweH19QG1lZGlhIChtaW4td2lkdGg6MTYwMHB4KXsudWstd2lkdGgtMS0xXEB4bHt3aWR0aDoxMDAlfS51ay13aWR0aC0xLTJcQHhse3dpZHRoOjUwJX0udWstd2lkdGgtMS0zXEB4bHt3aWR0aDpjYWxjKDEwMCUgKiAxIC8gMy4wMDEpfS51ay13aWR0aC0yLTNcQHhse3dpZHRoOmNhbGMoMTAwJSAqIDIgLyAzLjAwMSl9LnVrLXdpZHRoLTEtNFxAeGx7d2lkdGg6MjUlfS51ay13aWR0aC0zLTRcQHhse3dpZHRoOjc1JX0udWstd2lkdGgtMS01XEB4bHt3aWR0aDoyMCV9LnVrLXdpZHRoLTItNVxAeGx7d2lkdGg6NDAlfS51ay13aWR0aC0zLTVcQHhse3dpZHRoOjYwJX0udWstd2lkdGgtNC01XEB4bHt3aWR0aDo4MCV9LnVrLXdpZHRoLTEtNlxAeGx7d2lkdGg6Y2FsYygxMDAlICogMSAvIDYuMDAxKX0udWstd2lkdGgtNS02XEB4bHt3aWR0aDpjYWxjKDEwMCUgKiA1IC8gNi4wMDEpfS51ay13aWR0aC1zbWFsbFxAeGx7d2lkdGg6MTUwcHh9LnVrLXdpZHRoLW1lZGl1bVxAeGx7d2lkdGg6MzAwcHh9LnVrLXdpZHRoLWxhcmdlXEB4bHt3aWR0aDo0NTBweH0udWstd2lkdGgteGxhcmdlXEB4bHt3aWR0aDo2MDBweH0udWstd2lkdGgteHhsYXJnZVxAeGx7d2lkdGg6NzUwcHh9LnVrLXdpZHRoLWF1dG9cQHhse3dpZHRoOmF1dG99LnVrLXdpZHRoLWV4cGFuZFxAeGx7ZmxleDoxO21pbi13aWR0aDoxcHh9fVtjbGFzcyo9dWstaGVpZ2h0XXtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnVrLWhlaWdodC0xLTF7aGVpZ2h0OjEwMCV9LnVrLWhlaWdodC12aWV3cG9ydHttaW4taGVpZ2h0OjEwMHZofS51ay1oZWlnaHQtc21hbGx7aGVpZ2h0OjE1MHB4fS51ay1oZWlnaHQtbWVkaXVte2hlaWdodDozMDBweH0udWstaGVpZ2h0LWxhcmdle2hlaWdodDo0NTBweH0udWstaGVpZ2h0LW1heC1zbWFsbHttYXgtaGVpZ2h0OjE1MHB4fS51ay1oZWlnaHQtbWF4LW1lZGl1bXttYXgtaGVpZ2h0OjMwMHB4fS51ay1oZWlnaHQtbWF4LWxhcmdle21heC1oZWlnaHQ6NDUwcHh9LnVrLXRleHQtbGVhZHtmb250LXNpemU6MS41cmVtO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojMzMzfS51ay10ZXh0LW1ldGF7Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS40O2NvbG9yOiM5OTl9LnVrLXRleHQtbWV0YSBhe2NvbG9yOiM5OTl9LnVrLXRleHQtbWV0YSBhOmhvdmVye2NvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVrLXRleHQtc21hbGx7Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS41fS51ay10ZXh0LWxhcmdle2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MS41fS51ay10ZXh0LWxpZ2h0e2ZvbnQtd2VpZ2h0OjMwMH0udWstdGV4dC1ub3JtYWx7Zm9udC13ZWlnaHQ6NDAwfS51ay10ZXh0LWJvbGR7Zm9udC13ZWlnaHQ6NzAwfS51ay10ZXh0LWxpZ2h0ZXJ7Zm9udC13ZWlnaHQ6bGlnaHRlcn0udWstdGV4dC1ib2xkZXJ7Zm9udC13ZWlnaHQ6Ym9sZGVyfS51ay10ZXh0LWl0YWxpY3tmb250LXN0eWxlOml0YWxpY30udWstdGV4dC1jYXBpdGFsaXple3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemUhaW1wb3J0YW50fS51ay10ZXh0LXVwcGVyY2FzZXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2UhaW1wb3J0YW50fS51ay10ZXh0LWxvd2VyY2FzZXt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2UhaW1wb3J0YW50fS51ay10ZXh0LW11dGVke2NvbG9yOiM5OTkhaW1wb3J0YW50fS51ay10ZXh0LWVtcGhhc2lze2NvbG9yOiMzMzMhaW1wb3J0YW50fS51ay10ZXh0LXByaW1hcnl7Y29sb3I6IzFlODdmMCFpbXBvcnRhbnR9LnVrLXRleHQtc2Vjb25kYXJ5e2NvbG9yOiMyMjIhaW1wb3J0YW50fS51ay10ZXh0LXN1Y2Nlc3N7Y29sb3I6IzMyZDI5NiFpbXBvcnRhbnR9LnVrLXRleHQtd2FybmluZ3tjb2xvcjojZmFhMDVhIWltcG9ydGFudH0udWstdGV4dC1kYW5nZXJ7Y29sb3I6I2YwNTA2ZSFpbXBvcnRhbnR9LnVrLXRleHQtYmFja2dyb3VuZHstd2Via2l0LWJhY2tncm91bmQtY2xpcDp0ZXh0Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbG9yOiMxZTg3ZjAhaW1wb3J0YW50fUBzdXBwb3J0cyAoLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6dGV4dCl7LnVrLXRleHQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiMxZTg3ZjB9fS51ay10ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudH0udWstdGV4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0udWstdGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50fS51ay10ZXh0LWp1c3RpZnl7dGV4dC1hbGlnbjpqdXN0aWZ5IWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo2NDBweCl7LnVrLXRleHQtbGVmdFxAc3t0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS51ay10ZXh0LXJpZ2h0XEBze3RleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50fS51ay10ZXh0LWNlbnRlclxAc3t0ZXh0LWFsaWduOmNlbnRlciFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstdGV4dC1sZWZ0XEBte3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9LnVrLXRleHQtcmlnaHRcQG17dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnR9LnVrLXRleHQtY2VudGVyXEBte3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstdGV4dC1sZWZ0XEBse3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9LnVrLXRleHQtcmlnaHRcQGx7dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnR9LnVrLXRleHQtY2VudGVyXEBse3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTYwMHB4KXsudWstdGV4dC1sZWZ0XEB4bHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS51ay10ZXh0LXJpZ2h0XEB4bHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0udWstdGV4dC1jZW50ZXJcQHhse3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH19LnVrLXRleHQtdG9we3ZlcnRpY2FsLWFsaWduOnRvcCFpbXBvcnRhbnR9LnVrLXRleHQtbWlkZGxle3ZlcnRpY2FsLWFsaWduOm1pZGRsZSFpbXBvcnRhbnR9LnVrLXRleHQtYm90dG9te3ZlcnRpY2FsLWFsaWduOmJvdHRvbSFpbXBvcnRhbnR9LnVrLXRleHQtYmFzZWxpbmV7dmVydGljYWwtYWxpZ246YmFzZWxpbmUhaW1wb3J0YW50fS51ay10ZXh0LW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LnVrLXRleHQtdHJ1bmNhdGV7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfXRkLnVrLXRleHQtdHJ1bmNhdGUsdGgudWstdGV4dC10cnVuY2F0ZXttYXgtd2lkdGg6MH0udWstdGV4dC1icmVha3tvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmQ7d29yZC13cmFwOmJyZWFrLXdvcmR9dGQudWstdGV4dC1icmVhayx0aC51ay10ZXh0LWJyZWFre3dvcmQtYnJlYWs6YnJlYWstYWxsfVtjbGFzcyo9dWstY29sdW1uLV17Y29sdW1uLWdhcDozMHB4fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7W2NsYXNzKj11ay1jb2x1bW4tXXtjb2x1bW4tZ2FwOjQwcHh9fVtjbGFzcyo9dWstY29sdW1uLV0gaW1ne3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCl9LnVrLWNvbHVtbi1kaXZpZGVye2NvbHVtbi1ydWxlOjFweCBzb2xpZCAjZTVlNWU1O2NvbHVtbi1nYXA6NjBweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1jb2x1bW4tZGl2aWRlcntjb2x1bW4tZ2FwOjgwcHh9fS51ay1jb2x1bW4tMS0ye2NvbHVtbi1jb3VudDoyfS51ay1jb2x1bW4tMS0ze2NvbHVtbi1jb3VudDozfS51ay1jb2x1bW4tMS00e2NvbHVtbi1jb3VudDo0fS51ay1jb2x1bW4tMS01e2NvbHVtbi1jb3VudDo1fS51ay1jb2x1bW4tMS02e2NvbHVtbi1jb3VudDo2fUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsudWstY29sdW1uLTEtMlxAc3tjb2x1bW4tY291bnQ6Mn0udWstY29sdW1uLTEtM1xAc3tjb2x1bW4tY291bnQ6M30udWstY29sdW1uLTEtNFxAc3tjb2x1bW4tY291bnQ6NH0udWstY29sdW1uLTEtNVxAc3tjb2x1bW4tY291bnQ6NX0udWstY29sdW1uLTEtNlxAc3tjb2x1bW4tY291bnQ6Nn19QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1jb2x1bW4tMS0yXEBte2NvbHVtbi1jb3VudDoyfS51ay1jb2x1bW4tMS0zXEBte2NvbHVtbi1jb3VudDozfS51ay1jb2x1bW4tMS00XEBte2NvbHVtbi1jb3VudDo0fS51ay1jb2x1bW4tMS01XEBte2NvbHVtbi1jb3VudDo1fS51ay1jb2x1bW4tMS02XEBte2NvbHVtbi1jb3VudDo2fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1jb2x1bW4tMS0yXEBse2NvbHVtbi1jb3VudDoyfS51ay1jb2x1bW4tMS0zXEBse2NvbHVtbi1jb3VudDozfS51ay1jb2x1bW4tMS00XEBse2NvbHVtbi1jb3VudDo0fS51ay1jb2x1bW4tMS01XEBse2NvbHVtbi1jb3VudDo1fS51ay1jb2x1bW4tMS02XEBse2NvbHVtbi1jb3VudDo2fX1AbWVkaWEgKG1pbi13aWR0aDoxNjAwcHgpey51ay1jb2x1bW4tMS0yXEB4bHtjb2x1bW4tY291bnQ6Mn0udWstY29sdW1uLTEtM1xAeGx7Y29sdW1uLWNvdW50OjN9LnVrLWNvbHVtbi0xLTRcQHhse2NvbHVtbi1jb3VudDo0fS51ay1jb2x1bW4tMS01XEB4bHtjb2x1bW4tY291bnQ6NX0udWstY29sdW1uLTEtNlxAeGx7Y29sdW1uLWNvdW50OjZ9fS51ay1jb2x1bW4tc3Bhbntjb2x1bW4tc3BhbjphbGx9LnVrLWNvdmVye21heC13aWR0aDpub25lO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpfWlmcmFtZS51ay1jb3Zlcntwb2ludGVyLWV2ZW50czpub25lfS51ay1jb3Zlci1jb250YWluZXJ7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS51ay1iYWNrZ3JvdW5kLWRlZmF1bHR7YmFja2dyb3VuZC1jb2xvcjojZmZmfS51ay1iYWNrZ3JvdW5kLW11dGVke2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmOH0udWstYmFja2dyb3VuZC1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6IzFlODdmMH0udWstYmFja2dyb3VuZC1zZWNvbmRhcnl7YmFja2dyb3VuZC1jb2xvcjojMjIyfS51ay1iYWNrZ3JvdW5kLWNvbnRhaW4sLnVrLWJhY2tncm91bmQtY292ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCUgNTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0udWstYmFja2dyb3VuZC1jb3ZlcntiYWNrZ3JvdW5kLXNpemU6Y292ZXJ9LnVrLWJhY2tncm91bmQtY29udGFpbntiYWNrZ3JvdW5kLXNpemU6Y29udGFpbn0udWstYmFja2dyb3VuZC10b3AtbGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH0udWstYmFja2dyb3VuZC10b3AtY2VudGVye2JhY2tncm91bmQtcG9zaXRpb246NTAlIDB9LnVrLWJhY2tncm91bmQtdG9wLXJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246MTAwJSAwfS51ay1iYWNrZ3JvdW5kLWNlbnRlci1sZWZ0e2JhY2tncm91bmQtcG9zaXRpb246MCA1MCV9LnVrLWJhY2tncm91bmQtY2VudGVyLWNlbnRlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJSA1MCV9LnVrLWJhY2tncm91bmQtY2VudGVyLXJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246MTAwJSA1MCV9LnVrLWJhY2tncm91bmQtYm90dG9tLWxlZnR7YmFja2dyb3VuZC1wb3NpdGlvbjowIDEwMCV9LnVrLWJhY2tncm91bmQtYm90dG9tLWNlbnRlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJSAxMDAlfS51ay1iYWNrZ3JvdW5kLWJvdHRvbS1yaWdodHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwMCUgMTAwJX0udWstYmFja2dyb3VuZC1ub3JlcGVhdHtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LnVrLWJhY2tncm91bmQtZml4ZWR7YmFja2dyb3VuZC1hdHRhY2htZW50OmZpeGVkO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufUBtZWRpYSAocG9pbnRlcjpjb2Fyc2Upey51ay1iYWNrZ3JvdW5kLWZpeGVke2JhY2tncm91bmQtYXR0YWNobWVudDpzY3JvbGx9fUBtZWRpYSAobWF4LXdpZHRoOjYzOXB4KXsudWstYmFja2dyb3VuZC1pbWFnZVxAc3tiYWNrZ3JvdW5kLWltYWdlOm5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo5NTlweCl7LnVrLWJhY2tncm91bmQtaW1hZ2VcQG17YmFja2dyb3VuZC1pbWFnZTpub25lIWltcG9ydGFudH19QG1lZGlhIChtYXgtd2lkdGg6MTE5OXB4KXsudWstYmFja2dyb3VuZC1pbWFnZVxAbHtiYWNrZ3JvdW5kLWltYWdlOm5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDoxNTk5cHgpey51ay1iYWNrZ3JvdW5kLWltYWdlXEB4bHtiYWNrZ3JvdW5kLWltYWdlOm5vbmUhaW1wb3J0YW50fX0udWstYmFja2dyb3VuZC1ibGVuZC1tdWx0aXBseXtiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6bXVsdGlwbHl9LnVrLWJhY2tncm91bmQtYmxlbmQtc2NyZWVue2JhY2tncm91bmQtYmxlbmQtbW9kZTpzY3JlZW59LnVrLWJhY2tncm91bmQtYmxlbmQtb3ZlcmxheXtiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6b3ZlcmxheX0udWstYmFja2dyb3VuZC1ibGVuZC1kYXJrZW57YmFja2dyb3VuZC1ibGVuZC1tb2RlOmRhcmtlbn0udWstYmFja2dyb3VuZC1ibGVuZC1saWdodGVue2JhY2tncm91bmQtYmxlbmQtbW9kZTpsaWdodGVufS51ay1iYWNrZ3JvdW5kLWJsZW5kLWNvbG9yLWRvZGdle2JhY2tncm91bmQtYmxlbmQtbW9kZTpjb2xvci1kb2RnZX0udWstYmFja2dyb3VuZC1ibGVuZC1jb2xvci1idXJue2JhY2tncm91bmQtYmxlbmQtbW9kZTpjb2xvci1idXJufS51ay1iYWNrZ3JvdW5kLWJsZW5kLWhhcmQtbGlnaHR7YmFja2dyb3VuZC1ibGVuZC1tb2RlOmhhcmQtbGlnaHR9LnVrLWJhY2tncm91bmQtYmxlbmQtc29mdC1saWdodHtiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6c29mdC1saWdodH0udWstYmFja2dyb3VuZC1ibGVuZC1kaWZmZXJlbmNle2JhY2tncm91bmQtYmxlbmQtbW9kZTpkaWZmZXJlbmNlfS51ay1iYWNrZ3JvdW5kLWJsZW5kLWV4Y2x1c2lvbntiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6ZXhjbHVzaW9ufS51ay1iYWNrZ3JvdW5kLWJsZW5kLWh1ZXtiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6aHVlfS51ay1iYWNrZ3JvdW5kLWJsZW5kLXNhdHVyYXRpb257YmFja2dyb3VuZC1ibGVuZC1tb2RlOnNhdHVyYXRpb259LnVrLWJhY2tncm91bmQtYmxlbmQtY29sb3J7YmFja2dyb3VuZC1ibGVuZC1tb2RlOmNvbG9yfS51ay1iYWNrZ3JvdW5kLWJsZW5kLWx1bWlub3NpdHl7YmFja2dyb3VuZC1ibGVuZC1tb2RlOmx1bWlub3NpdHl9W2NsYXNzKj11ay1hbGlnbl17ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjMwcHh9KitbY2xhc3MqPXVrLWFsaWduXXttYXJnaW4tdG9wOjMwcHh9LnVrLWFsaWduLWNlbnRlcnttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS51ay1hbGlnbi1sZWZ0e21hcmdpbi10b3A6MDttYXJnaW4tcmlnaHQ6MzBweDtmbG9hdDpsZWZ0fS51ay1hbGlnbi1yaWdodHttYXJnaW4tdG9wOjA7bWFyZ2luLWxlZnQ6MzBweDtmbG9hdDpyaWdodH1AbWVkaWEgKG1pbi13aWR0aDo2NDBweCl7LnVrLWFsaWduLWxlZnRcQHN7bWFyZ2luLXRvcDowO21hcmdpbi1yaWdodDozMHB4O2Zsb2F0OmxlZnR9LnVrLWFsaWduLXJpZ2h0XEBze21hcmdpbi10b3A6MDttYXJnaW4tbGVmdDozMHB4O2Zsb2F0OnJpZ2h0fX1AbWVkaWEgKG1pbi13aWR0aDo5NjBweCl7LnVrLWFsaWduLWxlZnRcQG17bWFyZ2luLXRvcDowO21hcmdpbi1yaWdodDozMHB4O2Zsb2F0OmxlZnR9LnVrLWFsaWduLXJpZ2h0XEBte21hcmdpbi10b3A6MDttYXJnaW4tbGVmdDozMHB4O2Zsb2F0OnJpZ2h0fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1hbGlnbi1sZWZ0XEBse21hcmdpbi10b3A6MDtmbG9hdDpsZWZ0fS51ay1hbGlnbi1yaWdodFxAbHttYXJnaW4tdG9wOjA7ZmxvYXQ6cmlnaHR9LnVrLWFsaWduLWxlZnQsLnVrLWFsaWduLWxlZnRcQGwsLnVrLWFsaWduLWxlZnRcQG0sLnVrLWFsaWduLWxlZnRcQHN7bWFyZ2luLXJpZ2h0OjQwcHh9LnVrLWFsaWduLXJpZ2h0LC51ay1hbGlnbi1yaWdodFxAbCwudWstYWxpZ24tcmlnaHRcQG0sLnVrLWFsaWduLXJpZ2h0XEBze21hcmdpbi1sZWZ0OjQwcHh9fUBtZWRpYSAobWluLXdpZHRoOjE2MDBweCl7LnVrLWFsaWduLWxlZnRcQHhse21hcmdpbi10b3A6MDttYXJnaW4tcmlnaHQ6NDBweDtmbG9hdDpsZWZ0fS51ay1hbGlnbi1yaWdodFxAeGx7bWFyZ2luLXRvcDowO21hcmdpbi1sZWZ0OjQwcHg7ZmxvYXQ6cmlnaHR9fS51ay1zdmcsLnVrLXN2Zzpub3QoLnVrLXByZXNlcnZlKSBbZmlsbCo9JyMnXTpub3QoLnVrLXByZXNlcnZlKXtmaWxsOmN1cnJlbnRjb2xvcn0udWstc3ZnOm5vdCgudWstcHJlc2VydmUpIFtzdHJva2UqPScjJ106bm90KC51ay1wcmVzZXJ2ZSl7c3Ryb2tlOmN1cnJlbnRjb2xvcn0udWstc3Zne3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX0udWstcGFuZWx7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94fS51ay1wYW5lbDo6YWZ0ZXIsLnVrLXBhbmVsOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlfS51ay1wYW5lbDo6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWstcGFuZWw+Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS51ay1wYW5lbC1zY3JvbGxhYmxle2hlaWdodDoxNzBweDtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjZTVlNWU1O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cmVzaXplOmJvdGh9LnVrLWNsZWFyZml4OjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlLWNlbGx9LnVrLWNsZWFyZml4OjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6dGFibGU7Y2xlYXI6Ym90aH0udWstZmxvYXQtbGVmdHtmbG9hdDpsZWZ0fS51ay1mbG9hdC1yaWdodHtmbG9hdDpyaWdodH1bY2xhc3MqPXVrLWZsb2F0LV17bWF4LXdpZHRoOjEwMCV9LnVrLW92ZXJmbG93LWhpZGRlbntvdmVyZmxvdzpoaWRkZW59LnVrLW92ZXJmbG93LWF1dG97b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0udWstb3ZlcmZsb3ctYXV0bz46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnVrLXJlc2l6ZXtyZXNpemU6Ym90aH0udWstcmVzaXplLXZlcnRpY2Fse3Jlc2l6ZTp2ZXJ0aWNhbH0udWstZGlzcGxheS1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0udWstZGlzcGxheS1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS51ay1kaXNwbGF5LWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9W2NsYXNzKj11ay1pbmxpbmVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO21heC13aWR0aDoxMDAlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufS51ay1pbmxpbmUtY2xpcHtvdmVyZmxvdzpoaWRkZW59LnVrLXByZXNlcnZlLXdpZHRoLC51ay1wcmVzZXJ2ZS13aWR0aCBjYW52YXMsLnVrLXByZXNlcnZlLXdpZHRoIGltZywudWstcHJlc2VydmUtd2lkdGggc3ZnLC51ay1wcmVzZXJ2ZS13aWR0aCB2aWRlb3ttYXgtd2lkdGg6bm9uZX0udWstcmVzcG9uc2l2ZS1oZWlnaHQsLnVrLXJlc3BvbnNpdmUtd2lkdGh7Ym94LXNpemluZzpib3JkZXItYm94fS51ay1yZXNwb25zaXZlLXdpZHRoe21heC13aWR0aDoxMDAlIWltcG9ydGFudDtoZWlnaHQ6YXV0b30udWstcmVzcG9uc2l2ZS1oZWlnaHR7bWF4LWhlaWdodDoxMDAlO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LnVrLWJvcmRlci1jaXJjbGV7Ym9yZGVyLXJhZGl1czo1MCV9LnVrLWJvcmRlci1waWxse2JvcmRlci1yYWRpdXM6NTAwcHh9LnVrLWJvcmRlci1yb3VuZGVke2JvcmRlci1yYWRpdXM6NXB4fS51ay1pbmxpbmUtY2xpcFtjbGFzcyo9dWstYm9yZGVyLV17LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0udWstYm94LXNoYWRvdy1zbWFsbHtib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDAsMCwwLC4wOCl9LnVrLWJveC1zaGFkb3ctbWVkaXVte2JveC1zaGFkb3c6MCA1cHggMTVweCByZ2JhKDAsMCwwLC4wOCl9LnVrLWJveC1zaGFkb3ctbGFyZ2V7Ym94LXNoYWRvdzowIDE0cHggMjVweCByZ2JhKDAsMCwwLC4xNil9LnVrLWJveC1zaGFkb3cteGxhcmdle2JveC1zaGFkb3c6MCAyOHB4IDUwcHggcmdiYSgwLDAsMCwuMTYpfVtjbGFzcyo9dWstYm94LXNoYWRvdy1ob3Zlcl17dHJhbnNpdGlvbjpib3gtc2hhZG93IC4xcyBlYXNlLWluLW91dH0udWstYm94LXNoYWRvdy1ob3Zlci1zbWFsbDpob3Zlcntib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDAsMCwwLC4wOCl9LnVrLWJveC1zaGFkb3ctaG92ZXItbWVkaXVtOmhvdmVye2JveC1zaGFkb3c6MCA1cHggMTVweCByZ2JhKDAsMCwwLC4wOCl9LnVrLWJveC1zaGFkb3ctaG92ZXItbGFyZ2U6aG92ZXJ7Ym94LXNoYWRvdzowIDE0cHggMjVweCByZ2JhKDAsMCwwLC4xNil9LnVrLWJveC1zaGFkb3ctaG92ZXIteGxhcmdlOmhvdmVye2JveC1zaGFkb3c6MCAyOHB4IDUwcHggcmdiYSgwLDAsMCwuMTYpfUBzdXBwb3J0cyAoZmlsdGVyOmJsdXIoMCkpey51ay1ib3gtc2hhZG93LWJvdHRvbXtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnVrLWJveC1zaGFkb3ctYm90dG9tOjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LTMwcHg7bGVmdDowO3JpZ2h0OjA7aGVpZ2h0OjMwcHg7Ym9yZGVyLXJhZGl1czoxMDAlO2JhY2tncm91bmQ6IzQ0NDtmaWx0ZXI6Ymx1cigyMHB4KX0udWstYm94LXNoYWRvdy1ib3R0b20+Kntwb3NpdGlvbjpyZWxhdGl2ZX19LnVrLWRyb3BjYXA6OmZpcnN0LWxldHRlciwudWstZHJvcGNhcD5wOmZpcnN0LW9mLXR5cGU6OmZpcnN0LWxldHRlcntkaXNwbGF5OmJsb2NrO21hcmdpbi1yaWdodDoxMHB4O2Zsb2F0OmxlZnQ7Zm9udC1zaXplOjQuNWVtO2xpbmUtaGVpZ2h0OjE7bWFyZ2luLWJvdHRvbTotMnB4fUAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKXsudWstZHJvcGNhcDo6Zmlyc3QtbGV0dGVyLC51ay1kcm9wY2FwPnA6Zmlyc3Qtb2YtdHlwZTo6Zmlyc3QtbGV0dGVye21hcmdpbi10b3A6MS4xJX19QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey51ay1kcm9wY2FwPnA6Zmlyc3Qtb2YtdHlwZTo6Zmlyc3QtbGV0dGVye2ZvbnQtc2l6ZToxZW19fS51ay1sb2dve2ZvbnQtc2l6ZToxLjVyZW07Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixSb2JvdG8sIkhlbHZldGljYSBOZXVlIixBcmlhbCwiTm90byBTYW5zIixzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIiwiTm90byBDb2xvciBFbW9qaSI7Y29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZX0udWstbG9nbzpmb2N1cywudWstbG9nbzpob3Zlcntjb2xvcjojNjY2O291dGxpbmU6MDt0ZXh0LWRlY29yYXRpb246bm9uZX0udWstbG9nby1pbnZlcnNle2Rpc3BsYXk6bm9uZX0udWstZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX0udWstZHJhZywudWstZHJhZyAqe2N1cnNvcjptb3ZlfS51ay1kcmFnIGlmcmFtZXtwb2ludGVyLWV2ZW50czpub25lfS51ay1kcmFnb3Zlcntib3gtc2hhZG93OjAgMCAyMHB4IHJnYmEoMTAwLDEwMCwxMDAsLjMpfS51ay1ibGVuZC1tdWx0aXBseXttaXgtYmxlbmQtbW9kZTptdWx0aXBseX0udWstYmxlbmQtc2NyZWVue21peC1ibGVuZC1tb2RlOnNjcmVlbn0udWstYmxlbmQtb3ZlcmxheXttaXgtYmxlbmQtbW9kZTpvdmVybGF5fS51ay1ibGVuZC1kYXJrZW57bWl4LWJsZW5kLW1vZGU6ZGFya2VufS51ay1ibGVuZC1saWdodGVue21peC1ibGVuZC1tb2RlOmxpZ2h0ZW59LnVrLWJsZW5kLWNvbG9yLWRvZGdle21peC1ibGVuZC1tb2RlOmNvbG9yLWRvZGdlfS51ay1ibGVuZC1jb2xvci1idXJue21peC1ibGVuZC1tb2RlOmNvbG9yLWJ1cm59LnVrLWJsZW5kLWhhcmQtbGlnaHR7bWl4LWJsZW5kLW1vZGU6aGFyZC1saWdodH0udWstYmxlbmQtc29mdC1saWdodHttaXgtYmxlbmQtbW9kZTpzb2Z0LWxpZ2h0fS51ay1ibGVuZC1kaWZmZXJlbmNle21peC1ibGVuZC1tb2RlOmRpZmZlcmVuY2V9LnVrLWJsZW5kLWV4Y2x1c2lvbnttaXgtYmxlbmQtbW9kZTpleGNsdXNpb259LnVrLWJsZW5kLWh1ZXttaXgtYmxlbmQtbW9kZTpodWV9LnVrLWJsZW5kLXNhdHVyYXRpb257bWl4LWJsZW5kLW1vZGU6c2F0dXJhdGlvbn0udWstYmxlbmQtY29sb3J7bWl4LWJsZW5kLW1vZGU6Y29sb3J9LnVrLWJsZW5kLWx1bWlub3NpdHl7bWl4LWJsZW5kLW1vZGU6bHVtaW5vc2l0eX0udWstdHJhbnNmb3JtLWNlbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSl9LnVrLXRyYW5zZm9ybS1vcmlnaW4tdG9wLWxlZnR7dHJhbnNmb3JtLW9yaWdpbjowIDB9LnVrLXRyYW5zZm9ybS1vcmlnaW4tdG9wLWNlbnRlcnt0cmFuc2Zvcm0tb3JpZ2luOjUwJSAwfS51ay10cmFuc2Zvcm0tb3JpZ2luLXRvcC1yaWdodHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMH0udWstdHJhbnNmb3JtLW9yaWdpbi1jZW50ZXItbGVmdHt0cmFuc2Zvcm0tb3JpZ2luOjAgNTAlfS51ay10cmFuc2Zvcm0tb3JpZ2luLWNlbnRlci1yaWdodHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgNTAlfS51ay10cmFuc2Zvcm0tb3JpZ2luLWJvdHRvbS1sZWZ0e3RyYW5zZm9ybS1vcmlnaW46MCAxMDAlfS51ay10cmFuc2Zvcm0tb3JpZ2luLWJvdHRvbS1jZW50ZXJ7dHJhbnNmb3JtLW9yaWdpbjo1MCUgMTAwJX0udWstdHJhbnNmb3JtLW9yaWdpbi1ib3R0b20tcmlnaHR7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9LnVrLWZsZXh7ZGlzcGxheTpmbGV4fS51ay1mbGV4LWlubGluZXtkaXNwbGF5OmlubGluZS1mbGV4fS51ay1mbGV4LWlubGluZTo6YWZ0ZXIsLnVrLWZsZXgtaW5saW5lOjpiZWZvcmUsLnVrLWZsZXg6OmFmdGVyLC51ay1mbGV4OjpiZWZvcmV7ZGlzcGxheTpub25lfS51ay1mbGV4LWxlZnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LnVrLWZsZXgtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnVrLWZsZXgtcmlnaHR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS51ay1mbGV4LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnVrLWZsZXgtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1mbGV4LWxlZnRcQHN7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LnVrLWZsZXgtY2VudGVyXEBze2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnVrLWZsZXgtcmlnaHRcQHN7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS51ay1mbGV4LWJldHdlZW5cQHN7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnVrLWZsZXgtYXJvdW5kXEBze2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstZmxleC1sZWZ0XEBte2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS51ay1mbGV4LWNlbnRlclxAbXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS51ay1mbGV4LXJpZ2h0XEBte2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0udWstZmxleC1iZXR3ZWVuXEBte2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS51ay1mbGV4LWFyb3VuZFxAbXtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1mbGV4LWxlZnRcQGx7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LnVrLWZsZXgtY2VudGVyXEBse2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnVrLWZsZXgtcmlnaHRcQGx7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS51ay1mbGV4LWJldHdlZW5cQGx7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnVrLWZsZXgtYXJvdW5kXEBse2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9fUBtZWRpYSAobWluLXdpZHRoOjE2MDBweCl7LnVrLWZsZXgtbGVmdFxAeGx7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LnVrLWZsZXgtY2VudGVyXEB4bHtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS51ay1mbGV4LXJpZ2h0XEB4bHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LnVrLWZsZXgtYmV0d2VlblxAeGx7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnVrLWZsZXgtYXJvdW5kXEB4bHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfX0udWstZmxleC1zdHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2h9LnVrLWZsZXgtdG9we2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LnVrLWZsZXgtbWlkZGxle2FsaWduLWl0ZW1zOmNlbnRlcn0udWstZmxleC1ib3R0b217YWxpZ24taXRlbXM6ZmxleC1lbmR9LnVrLWZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30udWstZmxleC1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX0udWstZmxleC1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1ufS51ay1mbGV4LWNvbHVtbi1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfS51ay1mbGV4LW5vd3JhcHtmbGV4LXdyYXA6bm93cmFwfS51ay1mbGV4LXdyYXB7ZmxleC13cmFwOndyYXB9LnVrLWZsZXgtd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2V9LnVrLWZsZXgtd3JhcC1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaH0udWstZmxleC13cmFwLXRvcHthbGlnbi1jb250ZW50OmZsZXgtc3RhcnR9LnVrLWZsZXgtd3JhcC1taWRkbGV7YWxpZ24tY29udGVudDpjZW50ZXJ9LnVrLWZsZXgtd3JhcC1ib3R0b217YWxpZ24tY29udGVudDpmbGV4LWVuZH0udWstZmxleC13cmFwLWJldHdlZW57YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVufS51ay1mbGV4LXdyYXAtYXJvdW5ke2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS51ay1mbGV4LWZpcnN0e29yZGVyOi0xfS51ay1mbGV4LWxhc3R7b3JkZXI6OTl9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1mbGV4LWZpcnN0XEBze29yZGVyOi0xfS51ay1mbGV4LWxhc3RcQHN7b3JkZXI6OTl9fUBtZWRpYSAobWluLXdpZHRoOjk2MHB4KXsudWstZmxleC1maXJzdFxAbXtvcmRlcjotMX0udWstZmxleC1sYXN0XEBte29yZGVyOjk5fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1mbGV4LWZpcnN0XEBse29yZGVyOi0xfS51ay1mbGV4LWxhc3RcQGx7b3JkZXI6OTl9fUBtZWRpYSAobWluLXdpZHRoOjE2MDBweCl7LnVrLWZsZXgtZmlyc3RcQHhse29yZGVyOi0xfS51ay1mbGV4LWxhc3RcQHhse29yZGVyOjk5fX0udWstZmxleC1ub25le2ZsZXg6bm9uZX0udWstZmxleC1hdXRve2ZsZXg6YXV0b30udWstZmxleC0xe2ZsZXg6MX0udWstbWFyZ2lue21hcmdpbi1ib3R0b206MjBweH0qKy51ay1tYXJnaW57bWFyZ2luLXRvcDoyMHB4IWltcG9ydGFudH0udWstbWFyZ2luLXRvcHttYXJnaW4tdG9wOjIwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tYm90dG9te21hcmdpbi1ib3R0b206MjBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1sZWZ0e21hcmdpbi1sZWZ0OjIwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tcmlnaHR7bWFyZ2luLXJpZ2h0OjIwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tc21hbGx7bWFyZ2luLWJvdHRvbToxMHB4fSorLnVrLW1hcmdpbi1zbWFsbHttYXJnaW4tdG9wOjEwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tc21hbGwtdG9we21hcmdpbi10b3A6MTBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1zbWFsbC1ib3R0b217bWFyZ2luLWJvdHRvbToxMHB4IWltcG9ydGFudH0udWstbWFyZ2luLXNtYWxsLWxlZnR7bWFyZ2luLWxlZnQ6MTBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1zbWFsbC1yaWdodHttYXJnaW4tcmlnaHQ6MTBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1tZWRpdW17bWFyZ2luLWJvdHRvbTo0MHB4fSorLnVrLW1hcmdpbi1tZWRpdW17bWFyZ2luLXRvcDo0MHB4IWltcG9ydGFudH0udWstbWFyZ2luLW1lZGl1bS10b3B7bWFyZ2luLXRvcDo0MHB4IWltcG9ydGFudH0udWstbWFyZ2luLW1lZGl1bS1ib3R0b217bWFyZ2luLWJvdHRvbTo0MHB4IWltcG9ydGFudH0udWstbWFyZ2luLW1lZGl1bS1sZWZ0e21hcmdpbi1sZWZ0OjQwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tbWVkaXVtLXJpZ2h0e21hcmdpbi1yaWdodDo0MHB4IWltcG9ydGFudH0udWstbWFyZ2luLWxhcmdle21hcmdpbi1ib3R0b206NDBweH0qKy51ay1tYXJnaW4tbGFyZ2V7bWFyZ2luLXRvcDo0MHB4IWltcG9ydGFudH0udWstbWFyZ2luLWxhcmdlLXRvcHttYXJnaW4tdG9wOjQwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tbGFyZ2UtYm90dG9te21hcmdpbi1ib3R0b206NDBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1sYXJnZS1sZWZ0e21hcmdpbi1sZWZ0OjQwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tbGFyZ2UtcmlnaHR7bWFyZ2luLXJpZ2h0OjQwcHghaW1wb3J0YW50fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LnVrLW1hcmdpbi1sYXJnZXttYXJnaW4tYm90dG9tOjcwcHh9KisudWstbWFyZ2luLWxhcmdle21hcmdpbi10b3A6NzBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1sYXJnZS10b3B7bWFyZ2luLXRvcDo3MHB4IWltcG9ydGFudH0udWstbWFyZ2luLWxhcmdlLWJvdHRvbXttYXJnaW4tYm90dG9tOjcwcHghaW1wb3J0YW50fS51ay1tYXJnaW4tbGFyZ2UtbGVmdHttYXJnaW4tbGVmdDo3MHB4IWltcG9ydGFudH0udWstbWFyZ2luLWxhcmdlLXJpZ2h0e21hcmdpbi1yaWdodDo3MHB4IWltcG9ydGFudH19LnVrLW1hcmdpbi14bGFyZ2V7bWFyZ2luLWJvdHRvbTo3MHB4fSorLnVrLW1hcmdpbi14bGFyZ2V7bWFyZ2luLXRvcDo3MHB4IWltcG9ydGFudH0udWstbWFyZ2luLXhsYXJnZS10b3B7bWFyZ2luLXRvcDo3MHB4IWltcG9ydGFudH0udWstbWFyZ2luLXhsYXJnZS1ib3R0b217bWFyZ2luLWJvdHRvbTo3MHB4IWltcG9ydGFudH0udWstbWFyZ2luLXhsYXJnZS1sZWZ0e21hcmdpbi1sZWZ0OjcwcHghaW1wb3J0YW50fS51ay1tYXJnaW4teGxhcmdlLXJpZ2h0e21hcmdpbi1yaWdodDo3MHB4IWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1tYXJnaW4teGxhcmdle21hcmdpbi1ib3R0b206MTQwcHh9KisudWstbWFyZ2luLXhsYXJnZXttYXJnaW4tdG9wOjE0MHB4IWltcG9ydGFudH0udWstbWFyZ2luLXhsYXJnZS10b3B7bWFyZ2luLXRvcDoxNDBweCFpbXBvcnRhbnR9LnVrLW1hcmdpbi14bGFyZ2UtYm90dG9te21hcmdpbi1ib3R0b206MTQwcHghaW1wb3J0YW50fS51ay1tYXJnaW4teGxhcmdlLWxlZnR7bWFyZ2luLWxlZnQ6MTQwcHghaW1wb3J0YW50fS51ay1tYXJnaW4teGxhcmdlLXJpZ2h0e21hcmdpbi1yaWdodDoxNDBweCFpbXBvcnRhbnR9fS51ay1tYXJnaW4tYXV0b3ttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9LnVrLW1hcmdpbi1hdXRvLXRvcHttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fS51ay1tYXJnaW4tYXV0by1ib3R0b217bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH0udWstbWFyZ2luLWF1dG8tbGVmdHttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH0udWstbWFyZ2luLWF1dG8tcmlnaHR7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fS51ay1tYXJnaW4tYXV0by12ZXJ0aWNhbHttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50O21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1tYXJnaW4tYXV0b1xAc3ttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9LnVrLW1hcmdpbi1hdXRvLWxlZnRcQHN7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9LnVrLW1hcmdpbi1hdXRvLXJpZ2h0XEBze21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1tYXJnaW4tYXV0b1xAbXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9LnVrLW1hcmdpbi1hdXRvLWxlZnRcQG17bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9LnVrLW1hcmdpbi1hdXRvLXJpZ2h0XEBte21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstbWFyZ2luLWF1dG9cQGx7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fS51ay1tYXJnaW4tYXV0by1sZWZ0XEBse21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS51ay1tYXJnaW4tYXV0by1yaWdodFxAbHttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjE2MDBweCl7LnVrLW1hcmdpbi1hdXRvXEB4bHttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9LnVrLW1hcmdpbi1hdXRvLWxlZnRcQHhse21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS51ay1tYXJnaW4tYXV0by1yaWdodFxAeGx7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fX0udWstbWFyZ2luLXJlbW92ZXttYXJnaW46MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtdG9we21hcmdpbi10b3A6MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtYm90dG9te21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtbGVmdHttYXJnaW4tbGVmdDowIWltcG9ydGFudH0udWstbWFyZ2luLXJlbW92ZS1yaWdodHttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtdmVydGljYWx7bWFyZ2luLXRvcDowIWltcG9ydGFudDttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fS51ay1tYXJnaW4tcmVtb3ZlLWFkamFjZW50KyosLnVrLW1hcmdpbi1yZW1vdmUtZmlyc3QtY2hpbGQ+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtbGFzdC1jaGlsZD46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsudWstbWFyZ2luLXJlbW92ZS1sZWZ0XEBze21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50fS51ay1tYXJnaW4tcmVtb3ZlLXJpZ2h0XEBze21hcmdpbi1yaWdodDowIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1tYXJnaW4tcmVtb3ZlLWxlZnRcQG17bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtcmlnaHRcQG17bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1tYXJnaW4tcmVtb3ZlLWxlZnRcQGx7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9LnVrLW1hcmdpbi1yZW1vdmUtcmlnaHRcQGx7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxNjAwcHgpey51ay1tYXJnaW4tcmVtb3ZlLWxlZnRcQHhse21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50fS51ay1tYXJnaW4tcmVtb3ZlLXJpZ2h0XEB4bHttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9fS51ay1wYWRkaW5ne3BhZGRpbmc6MzBweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1wYWRkaW5ne3BhZGRpbmc6NDBweH19LnVrLXBhZGRpbmctc21hbGx7cGFkZGluZzoxNXB4fS51ay1wYWRkaW5nLWxhcmdle3BhZGRpbmc6MzBweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey51ay1wYWRkaW5nLWxhcmdle3BhZGRpbmc6NzBweH19LnVrLXBhZGRpbmctcmVtb3Zle3BhZGRpbmc6MCFpbXBvcnRhbnR9LnVrLXBhZGRpbmctcmVtb3ZlLXRvcHtwYWRkaW5nLXRvcDowIWltcG9ydGFudH0udWstcGFkZGluZy1yZW1vdmUtYm90dG9te3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fS51ay1wYWRkaW5nLXJlbW92ZS1sZWZ0e3BhZGRpbmctbGVmdDowIWltcG9ydGFudH0udWstcGFkZGluZy1yZW1vdmUtcmlnaHR7cGFkZGluZy1yaWdodDowIWltcG9ydGFudH0udWstcGFkZGluZy1yZW1vdmUtdmVydGljYWx7cGFkZGluZy10b3A6MCFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9LnVrLXBhZGRpbmctcmVtb3ZlLWhvcml6b250YWx7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9W2NsYXNzKj11ay1wb3NpdGlvbi1ib3R0b21dLFtjbGFzcyo9dWstcG9zaXRpb24tY2VudGVyXSxbY2xhc3MqPXVrLXBvc2l0aW9uLWxlZnRdLFtjbGFzcyo9dWstcG9zaXRpb24tcmlnaHRdLFtjbGFzcyo9dWstcG9zaXRpb24tdG9wXXtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnR9LnVrLXBvc2l0aW9uLXRvcHt0b3A6MDtsZWZ0OjA7cmlnaHQ6MH0udWstcG9zaXRpb24tYm90dG9te2JvdHRvbTowO2xlZnQ6MDtyaWdodDowfS51ay1wb3NpdGlvbi1sZWZ0e3RvcDowO2JvdHRvbTowO2xlZnQ6MH0udWstcG9zaXRpb24tcmlnaHR7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MH0udWstcG9zaXRpb24tdG9wLWxlZnR7dG9wOjA7bGVmdDowfS51ay1wb3NpdGlvbi10b3AtcmlnaHR7dG9wOjA7cmlnaHQ6MH0udWstcG9zaXRpb24tYm90dG9tLWxlZnR7Ym90dG9tOjA7bGVmdDowfS51ay1wb3NpdGlvbi1ib3R0b20tcmlnaHR7Ym90dG9tOjA7cmlnaHQ6MH0udWstcG9zaXRpb24tY2VudGVye3RvcDo1MCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3dpZHRoOm1heC1jb250ZW50O21heC13aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveH1bY2xhc3MqPXVrLXBvc2l0aW9uLWNlbnRlci1sZWZ0XSxbY2xhc3MqPXVrLXBvc2l0aW9uLWNlbnRlci1yaWdodF17dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0udWstcG9zaXRpb24tY2VudGVyLWxlZnR7bGVmdDowfS51ay1wb3NpdGlvbi1jZW50ZXItcmlnaHR7cmlnaHQ6MH0udWstcG9zaXRpb24tY2VudGVyLWxlZnQtb3V0e3JpZ2h0OjEwMCU7d2lkdGg6bWF4LWNvbnRlbnR9LnVrLXBvc2l0aW9uLWNlbnRlci1yaWdodC1vdXR7bGVmdDoxMDAlO3dpZHRoOm1heC1jb250ZW50fS51ay1wb3NpdGlvbi1ib3R0b20tY2VudGVyLC51ay1wb3NpdGlvbi10b3AtY2VudGVye2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3dpZHRoOm1heC1jb250ZW50O21heC13aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0udWstcG9zaXRpb24tdG9wLWNlbnRlcnt0b3A6MH0udWstcG9zaXRpb24tYm90dG9tLWNlbnRlcntib3R0b206MH0udWstcG9zaXRpb24tY292ZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjB9LnVrLXBvc2l0aW9uLXJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudH0udWstcG9zaXRpb24tYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50fS51ay1wb3NpdGlvbi1maXhlZHtwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnR9LnVrLXBvc2l0aW9uLXotaW5kZXh7ei1pbmRleDoxfS51ay1wb3NpdGlvbi1zbWFsbHttYXgtd2lkdGg6Y2FsYygxMDAlIC0gKDE1cHggKiAyKSk7bWFyZ2luOjE1cHh9LnVrLXBvc2l0aW9uLXNtYWxsLnVrLXBvc2l0aW9uLWNlbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgdHJhbnNsYXRlKC0xNXB4LC0xNXB4KX0udWstcG9zaXRpb24tc21hbGxbY2xhc3MqPXVrLXBvc2l0aW9uLWNlbnRlci1sZWZ0XSwudWstcG9zaXRpb24tc21hbGxbY2xhc3MqPXVrLXBvc2l0aW9uLWNlbnRlci1yaWdodF17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWSgtMTVweCl9LnVrLXBvc2l0aW9uLXNtYWxsLnVrLXBvc2l0aW9uLWJvdHRvbS1jZW50ZXIsLnVrLXBvc2l0aW9uLXNtYWxsLnVrLXBvc2l0aW9uLXRvcC1jZW50ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWCgtMTVweCl9LnVrLXBvc2l0aW9uLW1lZGl1bXttYXgtd2lkdGg6Y2FsYygxMDAlIC0gKDMwcHggKiAyKSk7bWFyZ2luOjMwcHh9LnVrLXBvc2l0aW9uLW1lZGl1bS51ay1wb3NpdGlvbi1jZW50ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHRyYW5zbGF0ZSgtMzBweCwtMzBweCl9LnVrLXBvc2l0aW9uLW1lZGl1bVtjbGFzcyo9dWstcG9zaXRpb24tY2VudGVyLWxlZnRdLC51ay1wb3NpdGlvbi1tZWRpdW1bY2xhc3MqPXVrLXBvc2l0aW9uLWNlbnRlci1yaWdodF17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWSgtMzBweCl9LnVrLXBvc2l0aW9uLW1lZGl1bS51ay1wb3NpdGlvbi1ib3R0b20tY2VudGVyLC51ay1wb3NpdGlvbi1tZWRpdW0udWstcG9zaXRpb24tdG9wLWNlbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVYKC0zMHB4KX0udWstcG9zaXRpb24tbGFyZ2V7bWF4LXdpZHRoOmNhbGMoMTAwJSAtICgzMHB4ICogMikpO21hcmdpbjozMHB4fS51ay1wb3NpdGlvbi1sYXJnZS51ay1wb3NpdGlvbi1jZW50ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHRyYW5zbGF0ZSgtMzBweCwtMzBweCl9LnVrLXBvc2l0aW9uLWxhcmdlW2NsYXNzKj11ay1wb3NpdGlvbi1jZW50ZXItbGVmdF0sLnVrLXBvc2l0aW9uLWxhcmdlW2NsYXNzKj11ay1wb3NpdGlvbi1jZW50ZXItcmlnaHRde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVkoLTMwcHgpfS51ay1wb3NpdGlvbi1sYXJnZS51ay1wb3NpdGlvbi1ib3R0b20tY2VudGVyLC51ay1wb3NpdGlvbi1sYXJnZS51ay1wb3NpdGlvbi10b3AtY2VudGVye3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVgoLTMwcHgpfUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LnVrLXBvc2l0aW9uLWxhcmdle21heC13aWR0aDpjYWxjKDEwMCUgLSAoNTBweCAqIDIpKTttYXJnaW46NTBweH0udWstcG9zaXRpb24tbGFyZ2UudWstcG9zaXRpb24tY2VudGVye3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSB0cmFuc2xhdGUoLTUwcHgsLTUwcHgpfS51ay1wb3NpdGlvbi1sYXJnZVtjbGFzcyo9dWstcG9zaXRpb24tY2VudGVyLWxlZnRdLC51ay1wb3NpdGlvbi1sYXJnZVtjbGFzcyo9dWstcG9zaXRpb24tY2VudGVyLXJpZ2h0XXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVZKC01MHB4KX0udWstcG9zaXRpb24tbGFyZ2UudWstcG9zaXRpb24tYm90dG9tLWNlbnRlciwudWstcG9zaXRpb24tbGFyZ2UudWstcG9zaXRpb24tdG9wLWNlbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVYKC01MHB4KX19LnVrLXRyYW5zaXRpb24tdG9nZ2xley13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0udWstdHJhbnNpdGlvbi10b2dnbGU6Zm9jdXN7b3V0bGluZTowfS51ay10cmFuc2l0aW9uLWZhZGUsW2NsYXNzKj11ay10cmFuc2l0aW9uLXNjYWxlXSxbY2xhc3MqPXVrLXRyYW5zaXRpb24tc2xpZGVde3RyYW5zaXRpb246LjNzIGVhc2Utb3V0O3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eSx0cmFuc2Zvcm0sZmlsdGVyO29wYWNpdHk6MH0udWstdHJhbnNpdGlvbi1hY3RpdmUudWstYWN0aXZlIC51ay10cmFuc2l0aW9uLWZhZGUsLnVrLXRyYW5zaXRpb24tdG9nZ2xlOmZvY3VzIC51ay10cmFuc2l0aW9uLWZhZGUsLnVrLXRyYW5zaXRpb24tdG9nZ2xlOmhvdmVyIC51ay10cmFuc2l0aW9uLWZhZGV7b3BhY2l0eToxfS51ay10cmFuc2l0aW9uLXNjYWxlLXVwe3RyYW5zZm9ybTpzY2FsZSgxLDEpfS51ay10cmFuc2l0aW9uLXNjYWxlLWRvd257dHJhbnNmb3JtOnNjYWxlKDEuMSwxLjEpfS51ay10cmFuc2l0aW9uLWFjdGl2ZS51ay1hY3RpdmUgLnVrLXRyYW5zaXRpb24tc2NhbGUtdXAsLnVrLXRyYW5zaXRpb24tdG9nZ2xlOmZvY3VzIC51ay10cmFuc2l0aW9uLXNjYWxlLXVwLC51ay10cmFuc2l0aW9uLXRvZ2dsZTpob3ZlciAudWstdHJhbnNpdGlvbi1zY2FsZS11cHtvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlKDEuMSwxLjEpfS51ay10cmFuc2l0aW9uLWFjdGl2ZS51ay1hY3RpdmUgLnVrLXRyYW5zaXRpb24tc2NhbGUtZG93biwudWstdHJhbnNpdGlvbi10b2dnbGU6Zm9jdXMgLnVrLXRyYW5zaXRpb24tc2NhbGUtZG93biwudWstdHJhbnNpdGlvbi10b2dnbGU6aG92ZXIgLnVrLXRyYW5zaXRpb24tc2NhbGUtZG93bntvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlKDEsMSl9LnVrLXRyYW5zaXRpb24tc2xpZGUtdG9we3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0udWstdHJhbnNpdGlvbi1zbGlkZS1ib3R0b217dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSl9LnVrLXRyYW5zaXRpb24tc2xpZGUtbGVmdHt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9LnVrLXRyYW5zaXRpb24tc2xpZGUtcmlnaHR7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSl9LnVrLXRyYW5zaXRpb24tc2xpZGUtdG9wLXNtYWxse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMHB4KX0udWstdHJhbnNpdGlvbi1zbGlkZS1ib3R0b20tc21hbGx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTBweCl9LnVrLXRyYW5zaXRpb24tc2xpZGUtbGVmdC1zbWFsbHt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTBweCl9LnVrLXRyYW5zaXRpb24tc2xpZGUtcmlnaHQtc21hbGx7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTBweCl9LnVrLXRyYW5zaXRpb24tc2xpZGUtdG9wLW1lZGl1bXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTBweCl9LnVrLXRyYW5zaXRpb24tc2xpZGUtYm90dG9tLW1lZGl1bXt0cmFuc2Zvcm06dHJhbnNsYXRlWSg1MHB4KX0udWstdHJhbnNpdGlvbi1zbGlkZS1sZWZ0LW1lZGl1bXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTBweCl9LnVrLXRyYW5zaXRpb24tc2xpZGUtcmlnaHQtbWVkaXVte3RyYW5zZm9ybTp0cmFuc2xhdGVYKDUwcHgpfS51ay10cmFuc2l0aW9uLWFjdGl2ZS51ay1hY3RpdmUgW2NsYXNzKj11ay10cmFuc2l0aW9uLXNsaWRlXSwudWstdHJhbnNpdGlvbi10b2dnbGU6Zm9jdXMgW2NsYXNzKj11ay10cmFuc2l0aW9uLXNsaWRlXSwudWstdHJhbnNpdGlvbi10b2dnbGU6aG92ZXIgW2NsYXNzKj11ay10cmFuc2l0aW9uLXNsaWRlXXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfS51ay10cmFuc2l0aW9uLW9wYXF1ZXtvcGFjaXR5OjF9LnVrLXRyYW5zaXRpb24tc2xvd3t0cmFuc2l0aW9uLWR1cmF0aW9uOi43c30udWstaGlkZGVuLFtoaWRkZW5de2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey51ay1oaWRkZW5cQHN7ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTYwcHgpey51ay1oaWRkZW5cQG17ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudWstaGlkZGVuXEBse2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjE2MDBweCl7LnVrLWhpZGRlblxAeGx7ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIChtYXgtd2lkdGg6NjM5cHgpey51ay12aXNpYmxlXEBze2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjk1OXB4KXsudWstdmlzaWJsZVxAbXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDoxMTk5cHgpey51ay12aXNpYmxlXEBse2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjE1OTlweCl7LnVrLXZpc2libGVcQHhse2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fS51ay1pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50fS51ay12aXNpYmxlLXRvZ2dsZTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKSAudWstaGlkZGVuLWhvdmVyOm5vdCg6Zm9jdXMtd2l0aGluKXtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7d2lkdGg6MCFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnR9LnVrLXZpc2libGUtdG9nZ2xlOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpIC51ay1pbnZpc2libGUtaG92ZXI6bm90KDpmb2N1cy13aXRoaW4pe29wYWNpdHk6MCFpbXBvcnRhbnR9LnVrLXZpc2libGUtdG9nZ2xley13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0udWstdmlzaWJsZS10b2dnbGU6Zm9jdXN7b3V0bGluZTowfUBtZWRpYSAocG9pbnRlcjpjb2Fyc2Upey51ay1oaWRkZW4tdG91Y2h7ZGlzcGxheTpub25lIWltcG9ydGFudH19LnVrLWhpZGRlbi1ub3RvdWNoe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIChwb2ludGVyOmNvYXJzZSl7LnVrLWhpZGRlbi1ub3RvdWNoe2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSksLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSwudWstbGlnaHQsLnVrLW9mZmNhbnZhcy1iYXIsLnVrLW92ZXJsYXktcHJpbWFyeSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbGluaywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBhLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluaywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgYSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1saW5rLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgYSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluaywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBhLC51ay1saWdodCAudWstbGluaywudWstbGlnaHQgYSwudWstb2ZmY2FudmFzLWJhciAudWstbGluaywudWstb2ZmY2FudmFzLWJhciBhLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmssLnVrLW92ZXJsYXktcHJpbWFyeSBhLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmssLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBhLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluaywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgYSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgYSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmssLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGF7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbGluazpob3ZlciwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBhOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluazpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgYTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1saW5rOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgYTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluazpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBhOmhvdmVyLC51ay1saWdodCAudWstbGluazpob3ZlciwudWstbGlnaHQgYTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbGluazpob3ZlciwudWstb2ZmY2FudmFzLWJhciBhOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbms6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSBhOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbms6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBhOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluazpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgYTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgYTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbms6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGE6aG92ZXJ7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSA6bm90KHByZSk+Y29kZSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSA6bm90KHByZSk+a2JkLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IDpub3QocHJlKT5zYW1wLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSA6bm90KHByZSk+Y29kZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgOm5vdChwcmUpPmtiZCwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgOm5vdChwcmUpPnNhbXAsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSA6bm90KHByZSk+Y29kZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IDpub3QocHJlKT5rYmQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSA6bm90KHByZSk+c2FtcCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSA6bm90KHByZSk+Y29kZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSA6bm90KHByZSk+a2JkLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIDpub3QocHJlKT5zYW1wLC51ay1saWdodCA6bm90KHByZSk+Y29kZSwudWstbGlnaHQgOm5vdChwcmUpPmtiZCwudWstbGlnaHQgOm5vdChwcmUpPnNhbXAsLnVrLW9mZmNhbnZhcy1iYXIgOm5vdChwcmUpPmNvZGUsLnVrLW9mZmNhbnZhcy1iYXIgOm5vdChwcmUpPmtiZCwudWstb2ZmY2FudmFzLWJhciA6bm90KHByZSk+c2FtcCwudWstb3ZlcmxheS1wcmltYXJ5IDpub3QocHJlKT5jb2RlLC51ay1vdmVybGF5LXByaW1hcnkgOm5vdChwcmUpPmtiZCwudWstb3ZlcmxheS1wcmltYXJ5IDpub3QocHJlKT5zYW1wLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgOm5vdChwcmUpPmNvZGUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSA6bm90KHByZSk+a2JkLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgOm5vdChwcmUpPnNhbXAsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIDpub3QocHJlKT5jb2RlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSA6bm90KHByZSk+a2JkLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSA6bm90KHByZSk+c2FtcCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIDpub3QocHJlKT5jb2RlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgOm5vdChwcmUpPmtiZCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIDpub3QocHJlKT5zYW1wLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSA6bm90KHByZSk+Y29kZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgOm5vdChwcmUpPmtiZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgOm5vdChwcmUpPnNhbXB7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBlbSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgZW0sLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSBlbSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBlbSwudWstbGlnaHQgZW0sLnVrLW9mZmNhbnZhcy1iYXIgZW0sLnVrLW92ZXJsYXktcHJpbWFyeSBlbSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGVtLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBlbSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGVtLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBlbXtjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oMSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaDIsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWgzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oNCwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaDUsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWg2LC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLTJ4bGFyZ2UsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWhlYWRpbmctbGFyZ2UsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWhlYWRpbmctbWVkaXVtLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLXNtYWxsLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLXhsYXJnZSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBoMSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBoMiwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBoMywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBoNCwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBoNSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBoNiwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWgxLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaDIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oMywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWg0LC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaDUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oNiwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWhlYWRpbmctMnhsYXJnZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWhlYWRpbmctbGFyZ2UsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLW1lZGl1bSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWhlYWRpbmctc21hbGwsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLXhsYXJnZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgaDEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIGgyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoMywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgaDQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIGg1LC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoNiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oMSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oMiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oMywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oNCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oNSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oNiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLTJ4bGFyZ2UsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaGVhZGluZy1sYXJnZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLW1lZGl1bSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLXNtYWxsLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWhlYWRpbmcteGxhcmdlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgaDEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSBoMiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IGgzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgaDQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSBoNSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IGg2LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oMSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaDIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWgzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oNCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaDUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWg2LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLTJ4bGFyZ2UsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWhlYWRpbmctbGFyZ2UsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWhlYWRpbmctbWVkaXVtLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLXNtYWxsLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLXhsYXJnZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoMSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoMiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoMywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoNCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoNSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBoNiwudWstbGlnaHQgLnVrLWgxLC51ay1saWdodCAudWstaDIsLnVrLWxpZ2h0IC51ay1oMywudWstbGlnaHQgLnVrLWg0LC51ay1saWdodCAudWstaDUsLnVrLWxpZ2h0IC51ay1oNiwudWstbGlnaHQgLnVrLWhlYWRpbmctMnhsYXJnZSwudWstbGlnaHQgLnVrLWhlYWRpbmctbGFyZ2UsLnVrLWxpZ2h0IC51ay1oZWFkaW5nLW1lZGl1bSwudWstbGlnaHQgLnVrLWhlYWRpbmctc21hbGwsLnVrLWxpZ2h0IC51ay1oZWFkaW5nLXhsYXJnZSwudWstbGlnaHQgaDEsLnVrLWxpZ2h0IGgyLC51ay1saWdodCBoMywudWstbGlnaHQgaDQsLnVrLWxpZ2h0IGg1LC51ay1saWdodCBoNiwudWstb2ZmY2FudmFzLWJhciAudWstaDEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWgyLC51ay1vZmZjYW52YXMtYmFyIC51ay1oMywudWstb2ZmY2FudmFzLWJhciAudWstaDQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWg1LC51ay1vZmZjYW52YXMtYmFyIC51ay1oNiwudWstb2ZmY2FudmFzLWJhciAudWstaGVhZGluZy0yeGxhcmdlLC51ay1vZmZjYW52YXMtYmFyIC51ay1oZWFkaW5nLWxhcmdlLC51ay1vZmZjYW52YXMtYmFyIC51ay1oZWFkaW5nLW1lZGl1bSwudWstb2ZmY2FudmFzLWJhciAudWstaGVhZGluZy1zbWFsbCwudWstb2ZmY2FudmFzLWJhciAudWstaGVhZGluZy14bGFyZ2UsLnVrLW9mZmNhbnZhcy1iYXIgaDEsLnVrLW9mZmNhbnZhcy1iYXIgaDIsLnVrLW9mZmNhbnZhcy1iYXIgaDMsLnVrLW9mZmNhbnZhcy1iYXIgaDQsLnVrLW9mZmNhbnZhcy1iYXIgaDUsLnVrLW9mZmNhbnZhcy1iYXIgaDYsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaDEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaDIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaDMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaDQsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaDUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaDYsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaGVhZGluZy0yeGxhcmdlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWhlYWRpbmctbGFyZ2UsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaGVhZGluZy1tZWRpdW0sLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaGVhZGluZy1zbWFsbCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1oZWFkaW5nLXhsYXJnZSwudWstb3ZlcmxheS1wcmltYXJ5IGgxLC51ay1vdmVybGF5LXByaW1hcnkgaDIsLnVrLW92ZXJsYXktcHJpbWFyeSBoMywudWstb3ZlcmxheS1wcmltYXJ5IGg0LC51ay1vdmVybGF5LXByaW1hcnkgaDUsLnVrLW92ZXJsYXktcHJpbWFyeSBoNiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oMSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oMiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oMywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oNCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oNSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oNiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLTJ4bGFyZ2UsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1sYXJnZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLW1lZGl1bSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLXNtYWxsLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmcteGxhcmdlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoMiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGgzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoNSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGg2LC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaDEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oMiwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWgzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaDQsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oNSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWg2LC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy0yeGxhcmdlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1sYXJnZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbWVkaXVtLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1zbWFsbCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmcteGxhcmdlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoMSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGgzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoNCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGg2LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWgxLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWgyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWgzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWg0LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWg1LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWg2LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctMnhsYXJnZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLWxhcmdlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbWVkaXVtLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctc21hbGwsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy14bGFyZ2UsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoMSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGgyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoNCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGg1LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDYsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oMSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWgyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaDMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oNCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWg1LC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaDYsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLTJ4bGFyZ2UsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLWxhcmdlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1tZWRpdW0sLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLXNtYWxsLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy14bGFyZ2UsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGgxLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoMiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGg0LC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBoNSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgaDZ7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBibG9ja3F1b3RlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBibG9ja3F1b3RlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgYmxvY2txdW90ZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBibG9ja3F1b3RlLC51ay1saWdodCBibG9ja3F1b3RlLC51ay1vZmZjYW52YXMtYmFyIGJsb2NrcXVvdGUsLnVrLW92ZXJsYXktcHJpbWFyeSBibG9ja3F1b3RlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgYmxvY2txdW90ZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgYmxvY2txdW90ZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGJsb2NrcXVvdGUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGJsb2NrcXVvdGV7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSBibG9ja3F1b3RlIGZvb3RlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgYmxvY2txdW90ZSBmb290ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSBibG9ja3F1b3RlIGZvb3RlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSBibG9ja3F1b3RlIGZvb3RlciwudWstbGlnaHQgYmxvY2txdW90ZSBmb290ZXIsLnVrLW9mZmNhbnZhcy1iYXIgYmxvY2txdW90ZSBmb290ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSBibG9ja3F1b3RlIGZvb3RlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGJsb2NrcXVvdGUgZm9vdGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBibG9ja3F1b3RlIGZvb3RlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGJsb2NrcXVvdGUgZm9vdGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBibG9ja3F1b3RlIGZvb3Rlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaHIsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgaHIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1ociwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgaHIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaHIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSBociwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaHIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgaHIsLnVrLWxpZ2h0IC51ay1ociwudWstbGlnaHQgaHIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWhyLC51ay1vZmZjYW52YXMtYmFyIGhyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWhyLC51ay1vdmVybGF5LXByaW1hcnkgaHIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaHIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBociwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSBociwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1ociwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGhyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaHIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIGhye2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstbXV0ZWQsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstbXV0ZWQgYSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstbXV0ZWQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1saW5rLW11dGVkIGEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbGluay1tdXRlZCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1saW5rLW11dGVkIGEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstbXV0ZWQsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstbXV0ZWQgYSwudWstbGlnaHQgLnVrLWxpbmstbXV0ZWQsLnVrLWxpZ2h0IC51ay1saW5rLW11dGVkIGEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWxpbmstbXV0ZWQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWxpbmstbXV0ZWQgYSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1saW5rLW11dGVkLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmstbXV0ZWQgYSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstbXV0ZWQgYSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstbXV0ZWQsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkIGEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluay1tdXRlZCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkIGEsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluay1tdXRlZCBhe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1saW5rLW11dGVkIGE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstbXV0ZWQ6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1saW5rLW11dGVkIGE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1saW5rLW11dGVkOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstbXV0ZWQgYTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1saW5rLW11dGVkOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1saW5rLW11dGVkIGE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstbXV0ZWQ6aG92ZXIsLnVrLWxpZ2h0IC51ay1saW5rLW11dGVkIGE6aG92ZXIsLnVrLWxpZ2h0IC51ay1saW5rLW11dGVkOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1saW5rLW11dGVkIGE6aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWxpbmstbXV0ZWQ6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbGluay1tdXRlZCBhOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmstbXV0ZWQ6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluay1tdXRlZCBhOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstbXV0ZWQ6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkIGE6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstbXV0ZWQgYTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLW11dGVkOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluay1tdXRlZCBhOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGluay1tdXRlZDpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbGluay10ZXh0IGE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstdGV4dDpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstdGV4dCBhOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluay10ZXh0OmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstdGV4dCBhOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstdGV4dDpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluay10ZXh0IGE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstdGV4dDpob3ZlciwudWstbGlnaHQgLnVrLWxpbmstdGV4dCBhOmhvdmVyLC51ay1saWdodCAudWstbGluay10ZXh0OmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1saW5rLXRleHQgYTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbGluay10ZXh0OmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmstdGV4dCBhOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmstdGV4dDpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLXRleHQgYTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLXRleHQ6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLXRleHQgYTpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstdGV4dDpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLXRleHQgYTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLXRleHQ6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLXRleHQgYTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstdGV4dDpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbGluay1oZWFkaW5nIGE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstaGVhZGluZzpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstaGVhZGluZyBhOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluay1oZWFkaW5nOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstaGVhZGluZyBhOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxpbmstaGVhZGluZzpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGluay1oZWFkaW5nIGE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpbmstaGVhZGluZzpob3ZlciwudWstbGlnaHQgLnVrLWxpbmstaGVhZGluZyBhOmhvdmVyLC51ay1saWdodCAudWstbGluay1oZWFkaW5nOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1saW5rLWhlYWRpbmcgYTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbGluay1oZWFkaW5nOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmstaGVhZGluZyBhOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpbmstaGVhZGluZzpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLWhlYWRpbmcgYTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLWhlYWRpbmc6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLWhlYWRpbmcgYTpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstaGVhZGluZzpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLWhlYWRpbmcgYTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLWhlYWRpbmc6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saW5rLWhlYWRpbmcgYTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpbmstaGVhZGluZzpob3Zlcntjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLWRpdmlkZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLWRpdmlkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaGVhZGluZy1kaXZpZGVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLWRpdmlkZXIsLnVrLWxpZ2h0IC51ay1oZWFkaW5nLWRpdmlkZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWhlYWRpbmctZGl2aWRlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1oZWFkaW5nLWRpdmlkZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1kaXZpZGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1kaXZpZGVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctZGl2aWRlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctZGl2aWRlcntib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjIpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLWJ1bGxldDo6YmVmb3JlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaGVhZGluZy1idWxsZXQ6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLWJ1bGxldDo6YmVmb3JlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLWJ1bGxldDo6YmVmb3JlLC51ay1saWdodCAudWstaGVhZGluZy1idWxsZXQ6OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstaGVhZGluZy1idWxsZXQ6OmJlZm9yZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1oZWFkaW5nLWJ1bGxldDo6YmVmb3JlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctYnVsbGV0OjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLWJ1bGxldDo6YmVmb3JlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctYnVsbGV0OjpiZWZvcmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1oZWFkaW5nLWJ1bGxldDo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjIpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1oZWFkaW5nLWxpbmU+OjphZnRlciwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaGVhZGluZy1saW5lPjo6YmVmb3JlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaGVhZGluZy1saW5lPjo6YWZ0ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLWxpbmU+OjpiZWZvcmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaGVhZGluZy1saW5lPjo6YWZ0ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaGVhZGluZy1saW5lPjo6YmVmb3JlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1oZWFkaW5nLWxpbmU+OjphZnRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaGVhZGluZy1saW5lPjo6YmVmb3JlLC51ay1saWdodCAudWstaGVhZGluZy1saW5lPjo6YWZ0ZXIsLnVrLWxpZ2h0IC51ay1oZWFkaW5nLWxpbmU+OjpiZWZvcmUsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWhlYWRpbmctbGluZT46OmFmdGVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1oZWFkaW5nLWxpbmU+OjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaGVhZGluZy1saW5lPjo6YWZ0ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaGVhZGluZy1saW5lPjo6YmVmb3JlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbGluZT46OmFmdGVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbGluZT46OmJlZm9yZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbGluZT46OmFmdGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1saW5lPjo6YmVmb3JlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbGluZT46OmFmdGVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbGluZT46OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWhlYWRpbmctbGluZT46OmFmdGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaGVhZGluZy1saW5lPjo6YmVmb3Jle2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWRpdmlkZXItaWNvbiwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRpdmlkZXItaWNvbiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1kaXZpZGVyLWljb24sLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRpdmlkZXItaWNvbiwudWstbGlnaHQgLnVrLWRpdmlkZXItaWNvbiwudWstb2ZmY2FudmFzLWJhciAudWstZGl2aWRlci1pY29uLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWRpdmlkZXItaWNvbiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kaXZpZGVyLWljb24sLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kaXZpZGVyLWljb24sLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci1pY29uLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjIwJTIyJTIwaGVpZ2h0JTNEJTIyMjAlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAyMCUyMDIwJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NjaXJjbGUlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHN0cm9rZSUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjIlMjklMjIlMjBzdHJva2Utd2lkdGglM0QlMjIyJTIyJTIwY3glM0QlMjIxMCUyMiUyMGN5JTNEJTIyMTAlMjIlMjByJTNEJTIyNyUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSIpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1kaXZpZGVyLWljb246OmFmdGVyLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1kaXZpZGVyLWljb246OmJlZm9yZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRpdmlkZXItaWNvbjo6YWZ0ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kaXZpZGVyLWljb246OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1kaXZpZGVyLWljb246OmFmdGVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWRpdmlkZXItaWNvbjo6YmVmb3JlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kaXZpZGVyLWljb246OmFmdGVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kaXZpZGVyLWljb246OmJlZm9yZSwudWstbGlnaHQgLnVrLWRpdmlkZXItaWNvbjo6YWZ0ZXIsLnVrLWxpZ2h0IC51ay1kaXZpZGVyLWljb246OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstZGl2aWRlci1pY29uOjphZnRlciwudWstb2ZmY2FudmFzLWJhciAudWstZGl2aWRlci1pY29uOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstZGl2aWRlci1pY29uOjphZnRlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1kaXZpZGVyLWljb246OmJlZm9yZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kaXZpZGVyLWljb246OmFmdGVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRpdmlkZXItaWNvbjo6YmVmb3JlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci1pY29uOjphZnRlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRpdmlkZXItaWNvbjo6YmVmb3JlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRpdmlkZXItaWNvbjo6YWZ0ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci1pY29uOjpiZWZvcmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kaXZpZGVyLWljb246OmFmdGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci1pY29uOjpiZWZvcmV7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstZGl2aWRlci1zbWFsbDo6YWZ0ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kaXZpZGVyLXNtYWxsOjphZnRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1kaXZpZGVyLXNtYWxsOjphZnRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstZGl2aWRlci1zbWFsbDo6YWZ0ZXIsLnVrLWxpZ2h0IC51ay1kaXZpZGVyLXNtYWxsOjphZnRlciwudWstb2ZmY2FudmFzLWJhciAudWstZGl2aWRlci1zbWFsbDo6YWZ0ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstZGl2aWRlci1zbWFsbDo6YWZ0ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci1zbWFsbDo6YWZ0ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kaXZpZGVyLXNtYWxsOjphZnRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kaXZpZGVyLXNtYWxsOjphZnRlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRpdmlkZXItc21hbGw6OmFmdGVye2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWRpdmlkZXItdmVydGljYWwsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kaXZpZGVyLXZlcnRpY2FsLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWRpdmlkZXItdmVydGljYWwsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRpdmlkZXItdmVydGljYWwsLnVrLWxpZ2h0IC51ay1kaXZpZGVyLXZlcnRpY2FsLC51ay1vZmZjYW52YXMtYmFyIC51ay1kaXZpZGVyLXZlcnRpY2FsLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWRpdmlkZXItdmVydGljYWwsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci12ZXJ0aWNhbCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRpdmlkZXItdmVydGljYWwsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZGl2aWRlci12ZXJ0aWNhbCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRpdmlkZXItdmVydGljYWx7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpc3QtZGl2aWRlcj5saTpudGgtY2hpbGQobisyKSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpc3QtZGl2aWRlcj5saTpudGgtY2hpbGQobisyKSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1saXN0LWRpdmlkZXI+bGk6bnRoLWNoaWxkKG4rMiksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpc3QtZGl2aWRlcj5saTpudGgtY2hpbGQobisyKSwudWstbGlnaHQgLnVrLWxpc3QtZGl2aWRlcj5saTpudGgtY2hpbGQobisyKSwudWstb2ZmY2FudmFzLWJhciAudWstbGlzdC1kaXZpZGVyPmxpOm50aC1jaGlsZChuKzIpLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpc3QtZGl2aWRlcj5saTpudGgtY2hpbGQobisyKSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saXN0LWRpdmlkZXI+bGk6bnRoLWNoaWxkKG4rMiksLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saXN0LWRpdmlkZXI+bGk6bnRoLWNoaWxkKG4rMiksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGlzdC1kaXZpZGVyPmxpOm50aC1jaGlsZChuKzIpLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGlzdC1kaXZpZGVyPmxpOm50aC1jaGlsZChuKzIpe2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1saWdodCAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saXN0LXN0cmlwZWQ+bGk6bnRoLW9mLXR5cGUob2RkKXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjIpO2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1saWdodCAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpc3Qtc3RyaXBlZD5saTpudGgtb2YtdHlwZShvZGQpLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGlzdC1zdHJpcGVkPmxpOm50aC1vZi10eXBlKG9kZCksLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saXN0LXN0cmlwZWQ+bGk6bnRoLW9mLXR5cGUob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1saXN0LWJ1bGxldD5saTo6YmVmb3JlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbGlzdC1idWxsZXQ+bGk6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1saXN0LWJ1bGxldD5saTo6YmVmb3JlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1saXN0LWJ1bGxldD5saTo6YmVmb3JlLC51ay1saWdodCAudWstbGlzdC1idWxsZXQ+bGk6OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstbGlzdC1idWxsZXQ+bGk6OmJlZm9yZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1saXN0LWJ1bGxldD5saTo6YmVmb3JlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpc3QtYnVsbGV0PmxpOjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saXN0LWJ1bGxldD5saTo6YmVmb3JlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxpc3QtYnVsbGV0PmxpOjpiZWZvcmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1saXN0LWJ1bGxldD5saTo6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjYlMjIlMjBoZWlnaHQlM0QlMjI2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwNiUyMDYlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2NpcmNsZSUyMGZpbGwlM0QlMjJyZ2JhJTI4MjU1LCUyMDI1NSwlMjAyNTUsJTIwMC43JTI5JTIyJTIwY3glM0QlMjIzJTIyJTIwY3klM0QlMjIzJTIyJTIwciUzRCUyMjMlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UiKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFibGUgdGgsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWJsZSB0aCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWJsZSB0aCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUgdGgsLnVrLWxpZ2h0IC51ay10YWJsZSB0aCwudWstb2ZmY2FudmFzLWJhciAudWstdGFibGUgdGgsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFibGUgdGgsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUgdGgsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZSB0aCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZSB0aCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlIHRoe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10YWJsZSBjYXB0aW9uLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUgY2FwdGlvbiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWJsZSBjYXB0aW9uLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWJsZSBjYXB0aW9uLC51ay1saWdodCAudWstdGFibGUgY2FwdGlvbiwudWstb2ZmY2FudmFzLWJhciAudWstdGFibGUgY2FwdGlvbiwudWstb3ZlcmxheS1wcmltYXJ5IC51ay10YWJsZSBjYXB0aW9uLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlIGNhcHRpb24sLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZSBjYXB0aW9uLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlIGNhcHRpb24sLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZSBjYXB0aW9ue2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10YWJsZSB0Ym9keSB0ci51ay1hY3RpdmUsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlPnRyLnVrLWFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlIHRib2R5IHRyLnVrLWFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlPnRyLnVrLWFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWJsZSB0Ym9keSB0ci51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGFibGU+dHIudWstYWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWJsZSB0Ym9keSB0ci51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlPnRyLnVrLWFjdGl2ZSwudWstbGlnaHQgLnVrLXRhYmxlIHRib2R5IHRyLnVrLWFjdGl2ZSwudWstbGlnaHQgLnVrLXRhYmxlPnRyLnVrLWFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstdGFibGUgdGJvZHkgdHIudWstYWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay10YWJsZT50ci51ay1hY3RpdmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFibGUgdGJvZHkgdHIudWstYWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRhYmxlPnRyLnVrLWFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZSB0Ym9keSB0ci51ay1hY3RpdmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGU+dHIudWstYWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUgdGJvZHkgdHIudWstYWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGU+dHIudWstYWN0aXZlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlIHRib2R5IHRyLnVrLWFjdGl2ZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZT50ci51ay1hY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZSB0Ym9keSB0ci51ay1hY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZT50ci51ay1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOCl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10YWJsZS1kaXZpZGVyPjpub3QoOmZpcnN0LWNoaWxkKT50ciwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFibGUtZGl2aWRlcj50cjpub3QoOmZpcnN0LWNoaWxkKSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtZGl2aWRlcj46bm90KDpmaXJzdC1jaGlsZCk+dHIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWJsZS1kaXZpZGVyPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLWRpdmlkZXI+Om5vdCg6Zmlyc3QtY2hpbGQpPnRyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLWRpdmlkZXI+dHI6bm90KDpmaXJzdC1jaGlsZCksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWJsZS1kaXZpZGVyPjpub3QoOmZpcnN0LWNoaWxkKT50ciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtZGl2aWRlcj50cjpub3QoOmZpcnN0LWNoaWxkKSwudWstbGlnaHQgLnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1saWdodCAudWstdGFibGUtZGl2aWRlcj46bm90KDpmaXJzdC1jaGlsZCk+dHIsLnVrLWxpZ2h0IC51ay10YWJsZS1kaXZpZGVyPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1vZmZjYW52YXMtYmFyIC51ay10YWJsZS1kaXZpZGVyPjpmaXJzdC1jaGlsZD50cjpub3QoOmZpcnN0LWNoaWxkKSwudWstb2ZmY2FudmFzLWJhciAudWstdGFibGUtZGl2aWRlcj46bm90KDpmaXJzdC1jaGlsZCk+dHIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRhYmxlLWRpdmlkZXI+dHI6bm90KDpmaXJzdC1jaGlsZCksLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFibGUtZGl2aWRlcj46Zmlyc3QtY2hpbGQ+dHI6bm90KDpmaXJzdC1jaGlsZCksLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFibGUtZGl2aWRlcj46bm90KDpmaXJzdC1jaGlsZCk+dHIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFibGUtZGl2aWRlcj50cjpub3QoOmZpcnN0LWNoaWxkKSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1kaXZpZGVyPjpmaXJzdC1jaGlsZD50cjpub3QoOmZpcnN0LWNoaWxkKSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1kaXZpZGVyPjpub3QoOmZpcnN0LWNoaWxkKT50ciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1kaXZpZGVyPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtZGl2aWRlcj46Zmlyc3QtY2hpbGQ+dHI6bm90KDpmaXJzdC1jaGlsZCksLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1kaXZpZGVyPjpub3QoOmZpcnN0LWNoaWxkKT50ciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLWRpdmlkZXI+dHI6bm90KDpmaXJzdC1jaGlsZCksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtZGl2aWRlcj46Zmlyc3QtY2hpbGQ+dHI6bm90KDpmaXJzdC1jaGlsZCksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtZGl2aWRlcj46bm90KDpmaXJzdC1jaGlsZCk+dHIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtZGl2aWRlcj50cjpub3QoOmZpcnN0LWNoaWxkKSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLWRpdmlkZXI+OmZpcnN0LWNoaWxkPnRyOm5vdCg6Zmlyc3QtY2hpbGQpLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtZGl2aWRlcj46bm90KDpmaXJzdC1jaGlsZCk+dHIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1kaXZpZGVyPnRyOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFibGUtc3RyaXBlZD50cjpudGgtb2YtdHlwZShvZGQpLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtc3RyaXBlZD50cjpudGgtb2YtdHlwZShvZGQpLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWJsZS1zdHJpcGVkPnRyOm50aC1vZi10eXBlKG9kZCksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtc3RyaXBlZD50cjpudGgtb2YtdHlwZShvZGQpLC51ay1saWdodCAudWstdGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpLC51ay1saWdodCAudWstdGFibGUtc3RyaXBlZD50cjpudGgtb2YtdHlwZShvZGQpLC51ay1vZmZjYW52YXMtYmFyIC51ay10YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCksLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRhYmxlLXN0cmlwZWQ+dHI6bnRoLW9mLXR5cGUob2RkKSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay10YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCksLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFibGUtc3RyaXBlZD50cjpudGgtb2YtdHlwZShvZGQpLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1zdHJpcGVkPnRyOm50aC1vZi10eXBlKG9kZCksLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCksLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1zdHJpcGVkPnRyOm50aC1vZi10eXBlKG9kZCksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLXN0cmlwZWQ+dHI6bnRoLW9mLXR5cGUob2RkKSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLXN0cmlwZWQ+dHI6bnRoLW9mLXR5cGUob2RkKXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEpO2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMik7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYmxlLWhvdmVyPnRyOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWJsZS1ob3Zlcj50cjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWJsZS1ob3Zlcj50cjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYmxlLWhvdmVyPnRyOmhvdmVyLC51ay1saWdodCAudWstdGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIsLnVrLWxpZ2h0IC51ay10YWJsZS1ob3Zlcj50cjpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstdGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRhYmxlLWhvdmVyPnRyOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRhYmxlLWhvdmVyPnRyOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLWhvdmVyPnRyOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1ob3Zlcj50cjpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWJsZS1ob3Zlcj50cjpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFibGUtaG92ZXI+dHI6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOCl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWljb24tbGluaywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tbGluaywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWxpbmssLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tbGluaywudWstbGlnaHQgLnVrLWljb24tbGluaywudWstb2ZmY2FudmFzLWJhciAudWstaWNvbi1saW5rLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWljb24tbGluaywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWxpbmssLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWxpbmssLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5rLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5re2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWxpbms6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWljb24tbGluazpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tbGluazpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tbGluazpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWxpbms6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbi1saW5rOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29uLWxpbms6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tbGluazpob3ZlciwudWstbGlnaHQgLnVrLWljb24tbGluazpmb2N1cywudWstbGlnaHQgLnVrLWljb24tbGluazpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstaWNvbi1saW5rOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1pY29uLWxpbms6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaWNvbi1saW5rOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWljb24tbGluazpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWxpbms6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5rOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5rOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5rOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb24tbGluazpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWxpbms6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWxpbms6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWxpbms6aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWFjdGl2ZT4udWstaWNvbi1saW5rLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWxpbms6YWN0aXZlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYWN0aXZlPi51ay1pY29uLWxpbmssLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29uLWxpbms6YWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWFjdGl2ZT4udWstaWNvbi1saW5rLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWljb24tbGluazphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWFjdGl2ZT4udWstaWNvbi1saW5rLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29uLWxpbms6YWN0aXZlLC51ay1saWdodCAudWstYWN0aXZlPi51ay1pY29uLWxpbmssLnVrLWxpZ2h0IC51ay1pY29uLWxpbms6YWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay1hY3RpdmU+LnVrLWljb24tbGluaywudWstb2ZmY2FudmFzLWJhciAudWstaWNvbi1saW5rOmFjdGl2ZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1hY3RpdmU+LnVrLWljb24tbGluaywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1pY29uLWxpbms6YWN0aXZlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjdGl2ZT4udWstaWNvbi1saW5rLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb24tbGluazphY3RpdmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY3RpdmU+LnVrLWljb24tbGluaywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb24tbGluazphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYWN0aXZlPi51ay1pY29uLWxpbmssLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5rOmFjdGl2ZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjdGl2ZT4udWstaWNvbi1saW5rLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1saW5rOmFjdGl2ZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbi1idXR0b24sLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29uLWJ1dHRvbiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWJ1dHRvbiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaWNvbi1idXR0b24sLnVrLWxpZ2h0IC51ay1pY29uLWJ1dHRvbiwudWstb2ZmY2FudmFzLWJhciAudWstaWNvbi1idXR0b24sLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaWNvbi1idXR0b24sLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1idXR0b24sLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbiwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb24tYnV0dG9ue2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSk7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWJ1dHRvbjpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaWNvbi1idXR0b246aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbi1idXR0b246Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbi1idXR0b246aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29uLWJ1dHRvbjpob3ZlciwudWstbGlnaHQgLnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1saWdodCAudWstaWNvbi1idXR0b246aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1pY29uLWJ1dHRvbjpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1pY29uLWJ1dHRvbjpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1pY29uLWJ1dHRvbjpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbjpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbjpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb24tYnV0dG9uOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1idXR0b246aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1idXR0b246Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1idXR0b246aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbjpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb24tYnV0dG9uOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDIsMjQyLDI0MiwuMSk7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWljb24tYnV0dG9uOmFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tYnV0dG9uOmFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pY29uLWJ1dHRvbjphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb24tYnV0dG9uOmFjdGl2ZSwudWstbGlnaHQgLnVrLWljb24tYnV0dG9uOmFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstaWNvbi1idXR0b246YWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWljb24tYnV0dG9uOmFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbjphY3RpdmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29uLWJ1dHRvbjphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1idXR0b246YWN0aXZlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbi1idXR0b246YWN0aXZle2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzAsMjMwLDIzMCwuMSk7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWlucHV0LC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zZWxlY3QsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRleHRhcmVhLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaW5wdXQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWxlY3QsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0YXJlYSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pbnB1dCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zZWxlY3QsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dGFyZWEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWxlY3QsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRleHRhcmVhLC51ay1saWdodCAudWstaW5wdXQsLnVrLWxpZ2h0IC51ay1zZWxlY3QsLnVrLWxpZ2h0IC51ay10ZXh0YXJlYSwudWstb2ZmY2FudmFzLWJhciAudWstaW5wdXQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXNlbGVjdCwudWstb2ZmY2FudmFzLWJhciAudWstdGV4dGFyZWEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaW5wdXQsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2VsZWN0LC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRleHRhcmVhLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWlucHV0LC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlbGVjdCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWlucHV0LC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VsZWN0LC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dGFyZWEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VsZWN0LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHRhcmVhLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWxlY3QsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWlucHV0OmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zZWxlY3Q6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRleHRhcmVhOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaW5wdXQ6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWxlY3Q6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0YXJlYTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pbnB1dDpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zZWxlY3Q6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dGFyZWE6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWxlY3Q6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRleHRhcmVhOmZvY3VzLC51ay1saWdodCAudWstaW5wdXQ6Zm9jdXMsLnVrLWxpZ2h0IC51ay1zZWxlY3Q6Zm9jdXMsLnVrLWxpZ2h0IC51ay10ZXh0YXJlYTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstaW5wdXQ6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXNlbGVjdDpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstdGV4dGFyZWE6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaW5wdXQ6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2VsZWN0OmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRleHRhcmVhOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWlucHV0OmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlbGVjdDpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWlucHV0OmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VsZWN0OmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dGFyZWE6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQ6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VsZWN0OmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHRhcmVhOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQ6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWxlY3Q6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYTpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstbGlnaHQgLnVrLWlucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWlucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KSFpbXBvcnRhbnR9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWlucHV0OjpwbGFjZWhvbGRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0OjpwbGFjZWhvbGRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0OjpwbGFjZWhvbGRlciwudWstbGlnaHQgLnVrLWlucHV0OjpwbGFjZWhvbGRlciwudWstb2ZmY2FudmFzLWJhciAudWstaW5wdXQ6OnBsYWNlaG9sZGVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWlucHV0OjpwbGFjZWhvbGRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQ6OnBsYWNlaG9sZGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10ZXh0YXJlYTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dGFyZWE6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10ZXh0YXJlYTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0YXJlYTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay1saWdodCAudWstdGV4dGFyZWE6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstb2ZmY2FudmFzLWJhciAudWstdGV4dGFyZWE6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay10ZXh0YXJlYTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHRhcmVhOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYTo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHRhcmVhOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYTo6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpIWltcG9ydGFudH0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dGFyZWE6OnBsYWNlaG9sZGVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dGFyZWE6OnBsYWNlaG9sZGVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRleHRhcmVhOjpwbGFjZWhvbGRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dGFyZWE6OnBsYWNlaG9sZGVyLC51ay1saWdodCAudWstdGV4dGFyZWE6OnBsYWNlaG9sZGVyLC51ay1vZmZjYW52YXMtYmFyIC51ay10ZXh0YXJlYTo6cGxhY2Vob2xkZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGV4dGFyZWE6OnBsYWNlaG9sZGVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHRhcmVhOjpwbGFjZWhvbGRlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHRhcmVhOjpwbGFjZWhvbGRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYTo6cGxhY2Vob2xkZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0YXJlYTo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWxlY3Q6bm90KFttdWx0aXBsZV0pOm5vdChbc2l6ZV0pLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLnVrLWxpZ2h0IC51ay1zZWxlY3Q6bm90KFttdWx0aXBsZV0pOm5vdChbc2l6ZV0pLC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWxlY3Q6bm90KFttdWx0aXBsZV0pOm5vdChbc2l6ZV0pLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VsZWN0Om5vdChbbXVsdGlwbGVdKTpub3QoW3NpemVdKSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VsZWN0Om5vdChbbXVsdGlwbGVdKTpub3QoW3NpemVdKSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSl7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMjQlMjIlMjBoZWlnaHQlM0QlMjIxNiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDI0JTIwMTYlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIycmdiYSUyODI1NSwlMjAyNTUsJTIwMjU1LCUyMDAuNyUyOSUyMiUyMHBvaW50cyUzRCUyMjEyJTIwMSUyMDklMjA2JTIwMTUlMjA2JTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjJyZ2JhJTI4MjU1LCUyMDI1NSwlMjAyNTUsJTIwMC43JTI5JTIyJTIwcG9pbnRzJTNEJTIyMTIlMjAxMyUyMDklMjA4JTIwMTUlMjA4JTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWlucHV0W2xpc3RdOmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1pbnB1dFtsaXN0XTpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0W2xpc3RdOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaW5wdXRbbGlzdF06aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaW5wdXRbbGlzdF06Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstaW5wdXRbbGlzdF06aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWlucHV0W2xpc3RdOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pbnB1dFtsaXN0XTpob3ZlciwudWstbGlnaHQgLnVrLWlucHV0W2xpc3RdOmZvY3VzLC51ay1saWdodCAudWstaW5wdXRbbGlzdF06aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWlucHV0W2xpc3RdOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1pbnB1dFtsaXN0XTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1pbnB1dFtsaXN0XTpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1pbnB1dFtsaXN0XTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dFtsaXN0XTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dFtsaXN0XTpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWlucHV0W2xpc3RdOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXRbbGlzdF06aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXRbbGlzdF06Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaW5wdXRbbGlzdF06aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pbnB1dFtsaXN0XTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWlucHV0W2xpc3RdOmhvdmVye2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjI0JTIyJTIwaGVpZ2h0JTNEJTIyMTYlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAyNCUyMDE2JTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjclMjklMjIlMjBwb2ludHMlM0QlMjIxMiUyMDEyJTIwOCUyMDYlMjAxNiUyMDYlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEiKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstY2hlY2tib3gsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXJhZGlvLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2hlY2tib3gsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1yYWRpbywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1jaGVja2JveCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1yYWRpbywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2hlY2tib3gsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXJhZGlvLC51ay1saWdodCAudWstY2hlY2tib3gsLnVrLWxpZ2h0IC51ay1yYWRpbywudWstb2ZmY2FudmFzLWJhciAudWstY2hlY2tib3gsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXJhZGlvLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNoZWNrYm94LC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXJhZGlvLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94LC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXJhZGlvLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3gsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94LC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW97YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0MiwyNDIsMjQyLC4xKTtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1yYWRpbzpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNoZWNrYm94OmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcmFkaW86Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstY2hlY2tib3g6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstcmFkaW86Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNoZWNrYm94OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1yYWRpbzpmb2N1cywudWstbGlnaHQgLnVrLWNoZWNrYm94OmZvY3VzLC51ay1saWdodCAudWstcmFkaW86Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWNoZWNrYm94OmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1yYWRpbzpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1jaGVja2JveDpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1yYWRpbzpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveDpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveDpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXJhZGlvOmZvY3Vze2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstY2hlY2tib3g6Y2hlY2tlZCwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZSwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstcmFkaW86Y2hlY2tlZCwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcmFkaW86Y2hlY2tlZCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1jaGVja2JveDpjaGVja2VkLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstcmFkaW86Y2hlY2tlZCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2hlY2tib3g6Y2hlY2tlZCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcmFkaW86Y2hlY2tlZCwudWstbGlnaHQgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLWxpZ2h0IC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1saWdodCAudWstcmFkaW86Y2hlY2tlZCwudWstb2ZmY2FudmFzLWJhciAudWstY2hlY2tib3g6Y2hlY2tlZCwudWstb2ZmY2FudmFzLWJhciAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZSwudWstb2ZmY2FudmFzLWJhciAudWstcmFkaW86Y2hlY2tlZCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1jaGVja2JveDpjaGVja2VkLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstcmFkaW86Y2hlY2tlZCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveDpjaGVja2VkLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Y2hlY2tlZCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Y2hlY2tlZCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveDpjaGVja2VkLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Y2hlY2tlZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Y2hlY2tlZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1jaGVja2JveDpjaGVja2VkOmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1jaGVja2JveDppbmRldGVybWluYXRlOmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2hlY2tib3g6Y2hlY2tlZDpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGU6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmNoZWNrZWQ6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jaGVja2JveDpjaGVja2VkOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jaGVja2JveDppbmRldGVybWluYXRlOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1saWdodCAudWstY2hlY2tib3g6Y2hlY2tlZDpmb2N1cywudWstbGlnaHQgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGU6Zm9jdXMsLnVrLWxpZ2h0IC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1jaGVja2JveDpjaGVja2VkOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1jaGVja2JveDppbmRldGVybWluYXRlOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNoZWNrYm94OmNoZWNrZWQ6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZTpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmNoZWNrZWQ6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6Y2hlY2tlZDpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGU6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmNoZWNrZWQ6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpjaGVja2VkOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6Y2hlY2tlZDpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGU6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpjaGVja2VkOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstcmFkaW86Y2hlY2tlZCwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXJhZGlvOmNoZWNrZWQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstcmFkaW86Y2hlY2tlZCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcmFkaW86Y2hlY2tlZCwudWstbGlnaHQgLnVrLXJhZGlvOmNoZWNrZWQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXJhZGlvOmNoZWNrZWQsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstcmFkaW86Y2hlY2tlZCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpjaGVja2VkLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Y2hlY2tlZCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1yYWRpbzpjaGVja2VkLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcmFkaW86Y2hlY2tlZHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTYlMjAxNiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDY2lyY2xlJTIwZmlsbCUzRCUyMiUyMzY2NiUyMiUyMGN4JTNEJTIyOCUyMiUyMGN5JTNEJTIyOCUyMiUyMHIlM0QlMjIyJTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jaGVja2JveDpjaGVja2VkLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLWxpZ2h0IC51ay1jaGVja2JveDpjaGVja2VkLC51ay1vZmZjYW52YXMtYmFyIC51ay1jaGVja2JveDpjaGVja2VkLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6Y2hlY2tlZCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmNoZWNrZWQsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6Y2hlY2tlZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmNoZWNrZWR7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTQlMjIlMjBoZWlnaHQlM0QlMjIxMSUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE0JTIwMTElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNjY2JTIyJTIwcG9pbnRzJTNEJTIyMTIlMjAxJTIwNSUyMDcuNSUyMDIlMjA1JTIwMSUyMDUuNSUyMDUlMjAxMCUyMDEzJTIwMS41JTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLWxpZ2h0IC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1vZmZjYW52YXMtYmFyIC51ay1jaGVja2JveDppbmRldGVybWluYXRlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2hlY2tib3g6aW5kZXRlcm1pbmF0ZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNoZWNrYm94OmluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTYlMjIlMjBoZWlnaHQlM0QlMjIxNiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE2JTIwMTYlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzNjY2JTIyJTIweCUzRCUyMjMlMjIlMjB5JTNEJTIyOCUyMiUyMHdpZHRoJTNEJTIyMTAlMjIlMjBoZWlnaHQlM0QlMjIxJTIyJTIwJTJGJTNFJTBBJTNDJTJGc3ZnJTNFIil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWZvcm0tbGFiZWwsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1mb3JtLWxhYmVsLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWZvcm0tbGFiZWwsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWZvcm0tbGFiZWwsLnVrLWxpZ2h0IC51ay1mb3JtLWxhYmVsLC51ay1vZmZjYW52YXMtYmFyIC51ay1mb3JtLWxhYmVsLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWZvcm0tbGFiZWwsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZm9ybS1sYWJlbCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWZvcm0tbGFiZWwsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZm9ybS1sYWJlbCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWZvcm0tbGFiZWx7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstZm9ybS1pY29uLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstZm9ybS1pY29uLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWZvcm0taWNvbiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstZm9ybS1pY29uLC51ay1saWdodCAudWstZm9ybS1pY29uLC51ay1vZmZjYW52YXMtYmFyIC51ay1mb3JtLWljb24sLnVrLW92ZXJsYXktcHJpbWFyeSAudWstZm9ybS1pY29uLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWZvcm0taWNvbiwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWZvcm0taWNvbiwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1mb3JtLWljb24sLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1mb3JtLWljb257Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWZvcm0taWNvbjpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWZvcm0taWNvbjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1mb3JtLWljb246aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWZvcm0taWNvbjpob3ZlciwudWstbGlnaHQgLnVrLWZvcm0taWNvbjpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstZm9ybS1pY29uOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWZvcm0taWNvbjpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1mb3JtLWljb246aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1mb3JtLWljb246aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZm9ybS1pY29uOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZm9ybS1pY29uOmhvdmVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tZGVmYXVsdCwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1kZWZhdWx0LC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1kZWZhdWx0LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tZGVmYXVsdCwudWstbGlnaHQgLnVrLWJ1dHRvbi1kZWZhdWx0LC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tZGVmYXVsdCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tZGVmYXVsdCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1kZWZhdWx0LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1kZWZhdWx0LC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWRlZmF1bHR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1kZWZhdWx0OmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tZGVmYXVsdDpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tZGVmYXVsdDpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tZGVmYXVsdDpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1kZWZhdWx0OmhvdmVyLC51ay1saWdodCAudWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLWxpZ2h0IC51ay1idXR0b24tZGVmYXVsdDpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJ1dHRvbi1kZWZhdWx0OmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi1kZWZhdWx0OmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi1kZWZhdWx0OmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1kZWZhdWx0OmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1kZWZhdWx0OmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWRlZmF1bHQ6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdDpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdDpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdDpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1kZWZhdWx0OmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWRlZmF1bHQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tZGVmYXVsdC51ay1hY3RpdmUsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1kZWZhdWx0OmFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1kZWZhdWx0LnVrLWFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1kZWZhdWx0OmFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tZGVmYXVsdC51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLWRlZmF1bHQ6YWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tZGVmYXVsdC51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1kZWZhdWx0OmFjdGl2ZSwudWstbGlnaHQgLnVrLWJ1dHRvbi1kZWZhdWx0LnVrLWFjdGl2ZSwudWstbGlnaHQgLnVrLWJ1dHRvbi1kZWZhdWx0OmFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLWRlZmF1bHQudWstYWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tZGVmYXVsdDphY3RpdmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnV0dG9uLWRlZmF1bHQudWstYWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi1kZWZhdWx0OmFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdC51ay1hY3RpdmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWRlZmF1bHQ6YWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWRlZmF1bHQudWstYWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWRlZmF1bHQ6YWN0aXZlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1kZWZhdWx0LnVrLWFjdGl2ZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdDphY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdC51ay1hY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tZGVmYXVsdDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tcHJpbWFyeSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1wcmltYXJ5LC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1wcmltYXJ5LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tcHJpbWFyeSwudWstbGlnaHQgLnVrLWJ1dHRvbi1wcmltYXJ5LC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tcHJpbWFyeSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tcHJpbWFyeSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1wcmltYXJ5LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1wcmltYXJ5LC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM2NjZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tcHJpbWFyeTpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLXByaW1hcnk6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXByaW1hcnk6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXByaW1hcnk6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tcHJpbWFyeTpob3ZlciwudWstbGlnaHQgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzLC51ay1saWdodCAudWstYnV0dG9uLXByaW1hcnk6aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tcHJpbWFyeTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tcHJpbWFyeTpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tcHJpbWFyeTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeTpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnk6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnk6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnk6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1wcmltYXJ5OmhvdmVye2JhY2tncm91bmQtY29sb3I6I2YyZjJmMjtjb2xvcjojNjY2fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tcHJpbWFyeS51ay1hY3RpdmUsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1wcmltYXJ5OmFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1wcmltYXJ5LnVrLWFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1wcmltYXJ5OmFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tcHJpbWFyeS51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXByaW1hcnk6YWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tcHJpbWFyeS51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1wcmltYXJ5OmFjdGl2ZSwudWstbGlnaHQgLnVrLWJ1dHRvbi1wcmltYXJ5LnVrLWFjdGl2ZSwudWstbGlnaHQgLnVrLWJ1dHRvbi1wcmltYXJ5OmFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLXByaW1hcnkudWstYWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tcHJpbWFyeTphY3RpdmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnV0dG9uLXByaW1hcnkudWstYWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi1wcmltYXJ5OmFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeS51ay1hY3RpdmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnk6YWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnkudWstYWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXByaW1hcnk6YWN0aXZlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1wcmltYXJ5LnVrLWFjdGl2ZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeTphY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeS51ay1hY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tcHJpbWFyeTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2NvbG9yOiM2NjZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1zZWNvbmRhcnksLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tc2Vjb25kYXJ5LC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1zZWNvbmRhcnksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1zZWNvbmRhcnksLnVrLWxpZ2h0IC51ay1idXR0b24tc2Vjb25kYXJ5LC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tc2Vjb25kYXJ5LC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi1zZWNvbmRhcnksLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1zZWNvbmRhcnksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1zZWNvbmRhcnl7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM2NjZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tc2Vjb25kYXJ5OmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLXNlY29uZGFyeTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tc2Vjb25kYXJ5OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXIsLnVrLWxpZ2h0IC51ay1idXR0b24tc2Vjb25kYXJ5OmZvY3VzLC51ay1saWdodCAudWstYnV0dG9uLXNlY29uZGFyeTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLXNlY29uZGFyeTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLXNlY29uZGFyeTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tc2Vjb25kYXJ5OmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tc2Vjb25kYXJ5OmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tc2Vjb25kYXJ5OmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjJmMmYyO2NvbG9yOiM2NjZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLXNlY29uZGFyeTphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXNlY29uZGFyeS51ay1hY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXNlY29uZGFyeTphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZSwudWstbGlnaHQgLnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1saWdodCAudWstYnV0dG9uLXNlY29uZGFyeTphY3RpdmUsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tc2Vjb25kYXJ5LnVrLWFjdGl2ZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tc2Vjb25kYXJ5LnVrLWFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1zZWNvbmRhcnkudWstYWN0aXZlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeTphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeS51ay1hY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXNlY29uZGFyeTphY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tc2Vjb25kYXJ5LnVrLWFjdGl2ZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1zZWNvbmRhcnk6YWN0aXZle2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtjb2xvcjojNjY2fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tdGV4dCwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi10ZXh0LC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi10ZXh0LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tdGV4dCwudWstbGlnaHQgLnVrLWJ1dHRvbi10ZXh0LC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tdGV4dCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tdGV4dCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi10ZXh0LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi10ZXh0LC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHR7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXRleHQ6OmJlZm9yZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi10ZXh0OjpiZWZvcmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXRleHQ6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLXRleHQ6OmJlZm9yZSwudWstbGlnaHQgLnVrLWJ1dHRvbi10ZXh0OjpiZWZvcmUsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJ1dHRvbi10ZXh0OjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnV0dG9uLXRleHQ6OmJlZm9yZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dDo6YmVmb3JlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dDo6YmVmb3JlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6OmJlZm9yZXtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi10ZXh0OmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tdGV4dDpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi10ZXh0OmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLXRleHQ6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXRleHQ6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXRleHQ6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi10ZXh0OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tdGV4dDpob3ZlciwudWstbGlnaHQgLnVrLWJ1dHRvbi10ZXh0OmZvY3VzLC51ay1saWdodCAudWstYnV0dG9uLXRleHQ6aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJ1dHRvbi10ZXh0OmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tdGV4dDpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tdGV4dDpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1idXR0b24tdGV4dDpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dDpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dDpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi10ZXh0OmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dDpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi10ZXh0OmhvdmVye2NvbG9yOiNmZmZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi10ZXh0OmRpc2FibGVkLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLXRleHQ6ZGlzYWJsZWQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLXRleHQ6ZGlzYWJsZWQsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi10ZXh0OmRpc2FibGVkLC51ay1saWdodCAudWstYnV0dG9uLXRleHQ6ZGlzYWJsZWQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJ1dHRvbi10ZXh0OmRpc2FibGVkLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWJ1dHRvbi10ZXh0OmRpc2FibGVkLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi10ZXh0OmRpc2FibGVkLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6ZGlzYWJsZWQsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLXRleHQ6ZGlzYWJsZWQsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tdGV4dDpkaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLWxpbmssLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tbGluaywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tbGluaywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLWxpbmssLnVrLWxpZ2h0IC51ay1idXR0b24tbGluaywudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLWxpbmssLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnV0dG9uLWxpbmssLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWxpbmssLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tbGluaywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tbGluaywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1saW5re2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1idXR0b24tbGluazpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYnV0dG9uLWxpbms6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tbGluazpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJ1dHRvbi1saW5rOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1saW5rOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJ1dHRvbi1saW5rOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1idXR0b24tbGluazpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnV0dG9uLWxpbms6aG92ZXIsLnVrLWxpZ2h0IC51ay1idXR0b24tbGluazpmb2N1cywudWstbGlnaHQgLnVrLWJ1dHRvbi1saW5rOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1idXR0b24tbGluazpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstYnV0dG9uLWxpbms6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnV0dG9uLWxpbms6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnV0dG9uLWxpbms6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWxpbms6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWxpbms6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tbGluazpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1saW5rOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1saW5rOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJ1dHRvbi1saW5rOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnV0dG9uLWxpbms6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1idXR0b24tbGluazpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstZ3JpZC1kaXZpZGVyPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWdyaWQtZGl2aWRlcj46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstZ3JpZC1kaXZpZGVyPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstZ3JpZC1kaXZpZGVyPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstbGlnaHQgLnVrLWdyaWQtZGl2aWRlcj46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWdyaWQtZGl2aWRlcj46bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstZ3JpZC1kaXZpZGVyPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1ncmlkLWRpdmlkZXI+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZ3JpZC1kaXZpZGVyPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1ncmlkLWRpdmlkZXI+Om5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZ3JpZC1kaXZpZGVyPjpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmUsLnVrLWxpZ2h0IC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZ3JpZC1kaXZpZGVyLnVrLWdyaWQtc3RhY2s+LnVrLWdyaWQtbWFyZ2luOjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1ncmlkLWRpdmlkZXIudWstZ3JpZC1zdGFjaz4udWstZ3JpZC1tYXJnaW46OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWdyaWQtZGl2aWRlci51ay1ncmlkLXN0YWNrPi51ay1ncmlkLW1hcmdpbjo6YmVmb3Jle2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWNsb3NlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2xvc2UsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstY2xvc2UsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNsb3NlLC51ay1saWdodCAudWstY2xvc2UsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWNsb3NlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNsb3NlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNsb3NlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2xvc2UsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2xvc2UsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jbG9zZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstY2xvc2U6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWNsb3NlOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2xvc2U6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jbG9zZTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1jbG9zZTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1jbG9zZTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstY2xvc2U6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNsb3NlOmhvdmVyLC51ay1saWdodCAudWstY2xvc2U6Zm9jdXMsLnVrLWxpZ2h0IC51ay1jbG9zZTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstY2xvc2U6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWNsb3NlOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNsb3NlOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWNsb3NlOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNsb3NlOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNsb3NlOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2xvc2U6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jbG9zZTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jbG9zZTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jbG9zZTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNsb3NlOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY2xvc2U6aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRvdG9wLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdG90b3AsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdG90b3AsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRvdG9wLC51ay1saWdodCAudWstdG90b3AsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRvdG9wLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRvdG9wLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRvdG9wLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdG90b3AsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdG90b3AsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10b3RvcHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdG90b3A6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRvdG9wOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdG90b3A6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10b3RvcDpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10b3RvcDpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10b3RvcDpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdG90b3A6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRvdG9wOmhvdmVyLC51ay1saWdodCAudWstdG90b3A6Zm9jdXMsLnVrLWxpZ2h0IC51ay10b3RvcDpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstdG90b3A6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRvdG9wOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRvdG9wOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRvdG9wOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRvdG9wOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRvdG9wOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdG90b3A6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10b3RvcDpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10b3RvcDpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10b3RvcDpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRvdG9wOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdG90b3A6aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRvdG9wOmFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRvdG9wOmFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10b3RvcDphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRvdG9wOmFjdGl2ZSwudWstbGlnaHQgLnVrLXRvdG9wOmFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstdG90b3A6YWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRvdG9wOmFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10b3RvcDphY3RpdmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10b3RvcDphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdG90b3A6YWN0aXZlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdG90b3A6YWN0aXZle2NvbG9yOiNmZmZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW1hcmtlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW1hcmtlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1tYXJrZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW1hcmtlciwudWstbGlnaHQgLnVrLW1hcmtlciwudWstb2ZmY2FudmFzLWJhciAudWstbWFya2VyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW1hcmtlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1tYXJrZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1tYXJrZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbWFya2VyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbWFya2Vye2JhY2tncm91bmQ6I2Y4ZjhmODtjb2xvcjojNjY2fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1tYXJrZXI6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW1hcmtlcjpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW1hcmtlcjpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW1hcmtlcjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1tYXJrZXI6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbWFya2VyOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1tYXJrZXI6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW1hcmtlcjpob3ZlciwudWstbGlnaHQgLnVrLW1hcmtlcjpmb2N1cywudWstbGlnaHQgLnVrLW1hcmtlcjpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbWFya2VyOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1tYXJrZXI6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbWFya2VyOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW1hcmtlcjpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1tYXJrZXI6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbWFya2VyOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbWFya2VyOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbWFya2VyOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW1hcmtlcjpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1tYXJrZXI6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1tYXJrZXI6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1tYXJrZXI6aG92ZXJ7Y29sb3I6IzY2Nn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYmFkZ2UsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1iYWRnZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1iYWRnZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYmFkZ2UsLnVrLWxpZ2h0IC51ay1iYWRnZSwudWstb2ZmY2FudmFzLWJhciAudWstYmFkZ2UsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYmFkZ2UsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYmFkZ2UsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1iYWRnZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1iYWRnZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJhZGdle2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojNjY2fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1iYWRnZTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYmFkZ2U6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1iYWRnZTpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJhZGdlOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJhZGdlOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWJhZGdlOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1iYWRnZTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYmFkZ2U6aG92ZXIsLnVrLWxpZ2h0IC51ay1iYWRnZTpmb2N1cywudWstbGlnaHQgLnVrLWJhZGdlOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1iYWRnZTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstYmFkZ2U6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYmFkZ2U6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYmFkZ2U6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYmFkZ2U6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYmFkZ2U6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1iYWRnZTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJhZGdlOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJhZGdlOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJhZGdlOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYmFkZ2U6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1iYWRnZTpob3Zlcntjb2xvcjojNjY2fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1sYWJlbCwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxhYmVsLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxhYmVsLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1sYWJlbCwudWstbGlnaHQgLnVrLWxhYmVsLC51ay1vZmZjYW52YXMtYmFyIC51ay1sYWJlbCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1sYWJlbCwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1sYWJlbCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxhYmVsLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxhYmVsLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM2NjZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWFydGljbGUtbWV0YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWFydGljbGUtbWV0YSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1hcnRpY2xlLW1ldGEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWFydGljbGUtbWV0YSwudWstbGlnaHQgLnVrLWFydGljbGUtbWV0YSwudWstb2ZmY2FudmFzLWJhciAudWstYXJ0aWNsZS1tZXRhLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWFydGljbGUtbWV0YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hcnRpY2xlLW1ldGEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hcnRpY2xlLW1ldGEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYXJ0aWNsZS1tZXRhLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYXJ0aWNsZS1tZXRhe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zZWFyY2gtaW5wdXQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtaW5wdXQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc2VhcmNoLWlucHV0LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtaW5wdXQsLnVrLWxpZ2h0IC51ay1zZWFyY2gtaW5wdXQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXNlYXJjaC1pbnB1dCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zZWFyY2gtaW5wdXQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWlucHV0LC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWlucHV0LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1pbnB1dCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1pbnB1dHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstbGlnaHQgLnVrLXNlYXJjaC1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXNlYXJjaC1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KSFpbXBvcnRhbnR9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtaW5wdXQ6OnBsYWNlaG9sZGVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLWxpZ2h0IC51ay1zZWFyY2gtaW5wdXQ6OnBsYWNlaG9sZGVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2gtaW5wdXQ6OnBsYWNlaG9sZGVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWlucHV0OjpwbGFjZWhvbGRlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWlucHV0OjpwbGFjZWhvbGRlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb24sLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb24sLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb24sLnVrLWxpZ2h0IC51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uLC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb24sLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoIC51ay1zZWFyY2gtaWNvbiwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb24sLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoIC51ay1zZWFyY2gtaWNvbiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb257Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXIsLnVrLWxpZ2h0IC51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2ggLnVrLXNlYXJjaC1pY29uOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoIC51ay1zZWFyY2gtaWNvbjpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoIC51ay1zZWFyY2gtaWNvbjpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaCAudWstc2VhcmNoLWljb246aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0LC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQsLnVrLWxpZ2h0IC51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0LC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0LC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWRlZmF1bHQgLnVrLXNlYXJjaC1pbnB1dCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWRlZmF1bHQgLnVrLXNlYXJjaC1pbnB1dCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQ6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQ6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQ6Zm9jdXMsLnVrLWxpZ2h0IC51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0OmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2gtZGVmYXVsdCAudWstc2VhcmNoLWlucHV0OmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQ6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWRlZmF1bHQgLnVrLXNlYXJjaC1pbnB1dDpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQ6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWRlZmF1bHQgLnVrLXNlYXJjaC1pbnB1dDpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1kZWZhdWx0IC51ay1zZWFyY2gtaW5wdXQ6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWlucHV0LC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWlucHV0LC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC1uYXZiYXIgLnVrLXNlYXJjaC1pbnB1dCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWlucHV0LC51ay1saWdodCAudWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWlucHV0LC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2gtbmF2YmFyIC51ay1zZWFyY2gtaW5wdXQsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2VhcmNoLW5hdmJhciAudWstc2VhcmNoLWlucHV0LC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1uYXZiYXIgLnVrLXNlYXJjaC1pbnB1dCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1uYXZiYXIgLnVrLXNlYXJjaC1pbnB1dCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtbmF2YmFyIC51ay1zZWFyY2gtaW5wdXQsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtbmF2YmFyIC51ay1zZWFyY2gtaW5wdXR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc2VhcmNoLWxhcmdlIC51ay1zZWFyY2gtaW5wdXQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtbGFyZ2UgLnVrLXNlYXJjaC1pbnB1dCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zZWFyY2gtbGFyZ2UgLnVrLXNlYXJjaC1pbnB1dCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2VhcmNoLWxhcmdlIC51ay1zZWFyY2gtaW5wdXQsLnVrLWxpZ2h0IC51ay1zZWFyY2gtbGFyZ2UgLnVrLXNlYXJjaC1pbnB1dCwudWstb2ZmY2FudmFzLWJhciAudWstc2VhcmNoLWxhcmdlIC51ay1zZWFyY2gtaW5wdXQsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2VhcmNoLWxhcmdlIC51ay1zZWFyY2gtaW5wdXQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLWxhcmdlIC51ay1zZWFyY2gtaW5wdXQsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtbGFyZ2UgLnVrLXNlYXJjaC1pbnB1dCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtbGFyZ2UgLnVrLXNlYXJjaC1pbnB1dCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC1sYXJnZSAudWstc2VhcmNoLWlucHV0e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC10b2dnbGUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtdG9nZ2xlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC10b2dnbGUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC10b2dnbGUsLnVrLWxpZ2h0IC51ay1zZWFyY2gtdG9nZ2xlLC51ay1vZmZjYW52YXMtYmFyIC51ay1zZWFyY2gtdG9nZ2xlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaC10b2dnbGUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLXRvZ2dsZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC10b2dnbGUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLXRvZ2dsZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC10b2dnbGV7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC10b2dnbGU6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC10b2dnbGU6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zZWFyY2gtdG9nZ2xlOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2VhcmNoLXRvZ2dsZTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zZWFyY2gtdG9nZ2xlOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNlYXJjaC10b2dnbGU6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC10b2dnbGU6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNlYXJjaC10b2dnbGU6aG92ZXIsLnVrLWxpZ2h0IC51ay1zZWFyY2gtdG9nZ2xlOmZvY3VzLC51ay1saWdodCAudWstc2VhcmNoLXRvZ2dsZTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstc2VhcmNoLXRvZ2dsZTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstc2VhcmNoLXRvZ2dsZTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zZWFyY2gtdG9nZ2xlOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNlYXJjaC10b2dnbGU6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLXRvZ2dsZTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtdG9nZ2xlOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLXRvZ2dsZTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC10b2dnbGU6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLXRvZ2dsZTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zZWFyY2gtdG9nZ2xlOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2VhcmNoLXRvZ2dsZTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNlYXJjaC10b2dnbGU6aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50PmE6OmFmdGVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQ+YTo6YWZ0ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQ+YTo6YWZ0ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50PmE6OmFmdGVyLC51ay1saWdodCAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQ+YTo6YWZ0ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50PmE6OmFmdGVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50PmE6OmFmdGVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50PmE6OmFmdGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQ+YTo6YWZ0ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQ+YTo6YWZ0ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcGFyZW50LWljb24+LnVrLXBhcmVudD5hOjphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNCUyMiUyMGhlaWdodCUzRCUyMjE0JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTQlMjAxNCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWxpbmUlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHN0cm9rZSUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjclMjklMjIlMjBzdHJva2Utd2lkdGglM0QlMjIxLjElMjIlMjBwb2ludHMlM0QlMjIxMCUyMDElMjA0JTIwNyUyMDEwJTIwMTMlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UiKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQudWstb3Blbj5hOjphZnRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50LnVrLW9wZW4+YTo6YWZ0ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQudWstb3Blbj5hOjphZnRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQudWstb3Blbj5hOjphZnRlciwudWstbGlnaHQgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50LnVrLW9wZW4+YTo6YWZ0ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1wYXJlbnQtaWNvbj4udWstcGFyZW50LnVrLW9wZW4+YTo6YWZ0ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQudWstb3Blbj5hOjphZnRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcGFyZW50LWljb24+LnVrLXBhcmVudC51ay1vcGVuPmE6OmFmdGVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQudWstb3Blbj5hOjphZnRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcGFyZW50LWljb24+LnVrLXBhcmVudC51ay1vcGVuPmE6OmFmdGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXBhcmVudC1pY29uPi51ay1wYXJlbnQudWstb3Blbj5hOjphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIxNCUyMiUyMGhlaWdodCUzRCUyMjE0JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTQlMjAxNCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWxpbmUlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHN0cm9rZSUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjclMjklMjIlMjBzdHJva2Utd2lkdGglM0QlMjIxLjElMjIlMjBwb2ludHMlM0QlMjIxJTIwNCUyMDclMjAxMCUyMDEzJTIwNCUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSIpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saT5hLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LWRlZmF1bHQ+bGk+YSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saT5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdD5saT5hLC51ay1saWdodCAudWstbmF2LWRlZmF1bHQ+bGk+YSwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LWRlZmF1bHQ+bGk+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtZGVmYXVsdD5saT5hLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpPmEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdD5saT5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpPmEsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdD5saT5he2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saT5hOmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LWRlZmF1bHQ+bGk+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0PmxpPmE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LWRlZmF1bHQ+bGk+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdD5saT5hOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVyLC51ay1saWdodCAudWstbmF2LWRlZmF1bHQ+bGk+YTpmb2N1cywudWstbGlnaHQgLnVrLW5hdi1kZWZhdWx0PmxpPmE6aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1kZWZhdWx0PmxpPmE6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1kZWZhdWx0PmxpPmE6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2LWRlZmF1bHQ+bGk+YTpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpPmE6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQ+bGk+YTpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpPmE6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpPmE6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQ+bGk+YTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpPmE6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdD5saT5hOmhvdmVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdD5saS51ay1hY3RpdmU+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0PmxpLnVrLWFjdGl2ZT5hLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0PmxpLnVrLWFjdGl2ZT5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdD5saS51ay1hY3RpdmU+YSwudWstbGlnaHQgLnVrLW5hdi1kZWZhdWx0PmxpLnVrLWFjdGl2ZT5hLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXYtZGVmYXVsdD5saS51ay1hY3RpdmU+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtZGVmYXVsdD5saS51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdD5saS51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpLnVrLWFjdGl2ZT5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0PmxpLnVrLWFjdGl2ZT5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQ+bGkudWstYWN0aXZlPmF7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1oZWFkZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWhlYWRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWhlYWRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1oZWFkZXIsLnVrLWxpZ2h0IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWhlYWRlciwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1oZWFkZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1oZWFkZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1oZWFkZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWhlYWRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWhlYWRlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtaGVhZGVye2NvbG9yOiNmZmZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWRpdmlkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstbGlnaHQgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1kaXZpZGVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtZGl2aWRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWRpdmlkZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LWRpdmlkZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1kaXZpZGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1kaXZpZGVye2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGEsLnVrLWxpZ2h0IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGF7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLWxpZ2h0IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1saWdodCAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBhOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGE6aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1saWdodCAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1kZWZhdWx0IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LWRlZmF1bHQgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtZGVmYXVsdCAudWstbmF2LXN1YiBsaS51ay1hY3RpdmU+YXtjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeT5saT5hLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXByaW1hcnk+bGk+YSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeT5saT5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeT5saT5hLC51ay1saWdodCAudWstbmF2LXByaW1hcnk+bGk+YSwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LXByaW1hcnk+bGk+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtcHJpbWFyeT5saT5hLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpPmEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeT5saT5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpPmEsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeT5saT5he2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeT5saT5hOmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXByaW1hcnk+bGk+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5PmxpPmE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LXByaW1hcnk+bGk+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeT5saT5hOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVyLC51ay1saWdodCAudWstbmF2LXByaW1hcnk+bGk+YTpmb2N1cywudWstbGlnaHQgLnVrLW5hdi1wcmltYXJ5PmxpPmE6aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1wcmltYXJ5PmxpPmE6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1wcmltYXJ5PmxpPmE6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2LXByaW1hcnk+bGk+YTpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpPmE6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnk+bGk+YTpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpPmE6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpPmE6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnk+bGk+YTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpPmE6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeT5saT5hOmhvdmVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeT5saS51ay1hY3RpdmU+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5PmxpLnVrLWFjdGl2ZT5hLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5PmxpLnVrLWFjdGl2ZT5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeT5saS51ay1hY3RpdmU+YSwudWstbGlnaHQgLnVrLW5hdi1wcmltYXJ5PmxpLnVrLWFjdGl2ZT5hLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXYtcHJpbWFyeT5saS51ay1hY3RpdmU+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtcHJpbWFyeT5saS51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeT5saS51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpLnVrLWFjdGl2ZT5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5PmxpLnVrLWFjdGl2ZT5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnk+bGkudWstYWN0aXZlPmF7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1oZWFkZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWhlYWRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWhlYWRlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1oZWFkZXIsLnVrLWxpZ2h0IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWhlYWRlciwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1oZWFkZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1oZWFkZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1oZWFkZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWhlYWRlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWhlYWRlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtaGVhZGVye2NvbG9yOiNmZmZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtZGl2aWRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtZGl2aWRlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWRpdmlkZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtZGl2aWRlciwudWstbGlnaHQgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtZGl2aWRlciwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1kaXZpZGVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtZGl2aWRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWRpdmlkZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LWRpdmlkZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1kaXZpZGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1kaXZpZGVye2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGEsLnVrLWxpZ2h0IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGF7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLWxpZ2h0IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1saWdodCAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBhOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgYTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGE6aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1saWdodCAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdi1wcmltYXJ5IC51ay1uYXYtc3ViIGxpLnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2LXByaW1hcnkgLnVrLW5hdi1zdWIgbGkudWstYWN0aXZlPmEsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXYtcHJpbWFyeSAudWstbmF2LXN1YiBsaS51ay1hY3RpdmU+YXtjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXZiYXItbmF2PmxpPmEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItbmF2PmxpPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLW5hdj5saT5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItbmF2PmxpPmEsLnVrLWxpZ2h0IC51ay1uYXZiYXItbmF2PmxpPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdmJhci1uYXY+bGk+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXZiYXItbmF2PmxpPmEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1uYXY+bGk+YSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1uYXY+bGk+YXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLW5hdj5saTpob3Zlcj5hLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXZiYXItbmF2PmxpPmEudWstb3BlbiwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLW5hdj5saT5hOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLW5hdj5saTpob3Zlcj5hLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLW5hdj5saT5hLnVrLW9wZW4sLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItbmF2PmxpPmE6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLW5hdj5saTpob3Zlcj5hLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci1uYXY+bGk+YS51ay1vcGVuLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci1uYXY+bGk+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLW5hdj5saTpob3Zlcj5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItbmF2PmxpPmEudWstb3BlbiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLW5hdj5saT5hOmZvY3VzLC51ay1saWdodCAudWstbmF2YmFyLW5hdj5saTpob3Zlcj5hLC51ay1saWdodCAudWstbmF2YmFyLW5hdj5saT5hLnVrLW9wZW4sLnVrLWxpZ2h0IC51ay1uYXZiYXItbmF2PmxpPmE6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdmJhci1uYXY+bGk6aG92ZXI+YSwudWstb2ZmY2FudmFzLWJhciAudWstbmF2YmFyLW5hdj5saT5hLnVrLW9wZW4sLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdmJhci1uYXY+bGk+YTpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXZiYXItbmF2PmxpOmhvdmVyPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2YmFyLW5hdj5saT5hLnVrLW9wZW4sLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2YmFyLW5hdj5saT5hOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1uYXY+bGk6aG92ZXI+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpPmEudWstb3BlbiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpPmE6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpOmhvdmVyPmEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpPmEudWstb3BlbiwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1uYXY+bGk+YTpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpOmhvdmVyPmEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hLnVrLW9wZW4sLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saTpob3Zlcj5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hLnVrLW9wZW4sLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpPmE6Zm9jdXN7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItbmF2PmxpPmE6YWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmUsLnVrLWxpZ2h0IC51ay1uYXZiYXItbmF2PmxpPmE6YWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXZiYXItbmF2PmxpPmE6YWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hOmFjdGl2ZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saT5hOmFjdGl2ZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1uYXY+bGk+YTphY3RpdmV7Y29sb3I6I2ZmZn0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci1uYXY+bGkudWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YSwudWstbGlnaHQgLnVrLW5hdmJhci1uYXY+bGkudWstYWN0aXZlPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdmJhci1uYXY+bGkudWstYWN0aXZlPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpLnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItbmF2PmxpLnVrLWFjdGl2ZT5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLW5hdj5saS51ay1hY3RpdmU+YXtjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1uYXZiYXItaXRlbSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci1pdGVtLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci1pdGVtLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItaXRlbSwudWstbGlnaHQgLnVrLW5hdmJhci1pdGVtLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXZiYXItaXRlbSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1uYXZiYXItaXRlbSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItaXRlbSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1pdGVtLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci1pdGVtLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLWl0ZW17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci10b2dnbGUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItdG9nZ2xlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci10b2dnbGUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci10b2dnbGUsLnVrLWxpZ2h0IC51ay1uYXZiYXItdG9nZ2xlLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXZiYXItdG9nZ2xlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdmJhci10b2dnbGUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci10b2dnbGUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci10b2dnbGV7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLXRvZ2dsZTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstbmF2YmFyLXRvZ2dsZTpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci10b2dnbGU6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1uYXZiYXItdG9nZ2xlOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1uYXZiYXItdG9nZ2xlOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLW5hdmJhci10b2dnbGU6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLXRvZ2dsZTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbmF2YmFyLXRvZ2dsZTpob3ZlciwudWstbGlnaHQgLnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstbGlnaHQgLnVrLW5hdmJhci10b2dnbGU6Zm9jdXMsLnVrLWxpZ2h0IC51ay1uYXZiYXItdG9nZ2xlOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1uYXZiYXItdG9nZ2xlLnVrLW9wZW4sLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdmJhci10b2dnbGU6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLW5hdmJhci10b2dnbGU6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2YmFyLXRvZ2dsZS51ay1vcGVuLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLW5hdmJhci10b2dnbGU6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstbmF2YmFyLXRvZ2dsZTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItdG9nZ2xlLnVrLW9wZW4sLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItdG9nZ2xlOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZS51ay1vcGVuLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci10b2dnbGU6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZS51ay1vcGVuLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci10b2dnbGU6Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbmF2YmFyLXRvZ2dsZTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci10b2dnbGUudWstb3BlbiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW5hdmJhci10b2dnbGU6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1uYXZiYXItdG9nZ2xlOmhvdmVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXY+Kj46Zmlyc3QtY2hpbGQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXY+Kj46Zmlyc3QtY2hpbGQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pio+OmZpcnN0LWNoaWxkLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXY+Kj46Zmlyc3QtY2hpbGQsLnVrLWxpZ2h0IC51ay1zdWJuYXY+Kj46Zmlyc3QtY2hpbGQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXN1Ym5hdj4qPjpmaXJzdC1jaGlsZCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zdWJuYXY+Kj46Zmlyc3QtY2hpbGQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pio+OmZpcnN0LWNoaWxkLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pio+OmZpcnN0LWNoaWxkLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdj4qPjpmaXJzdC1jaGlsZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdj4qPjpmaXJzdC1jaGlsZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pio+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pio+YTpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXN1Ym5hdj4qPmE6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXY+Kj5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXN1Ym5hdj4qPmE6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pio+YTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2Pio+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2Pio+YTpob3ZlciwudWstbGlnaHQgLnVrLXN1Ym5hdj4qPmE6Zm9jdXMsLnVrLWxpZ2h0IC51ay1zdWJuYXY+Kj5hOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1zdWJuYXY+Kj5hOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1zdWJuYXY+Kj5hOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXN1Ym5hdj4qPmE6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc3VibmF2Pio+YTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXY+Kj5hOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdj4qPmE6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXY+Kj5hOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pio+YTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXY+Kj5hOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdj4qPmE6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXY+Kj5hOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pio+YTpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pi51ay1hY3RpdmU+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXN1Ym5hdj4udWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pi51ay1hY3RpdmU+YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2Pi51ay1hY3RpdmU+YSwudWstbGlnaHQgLnVrLXN1Ym5hdj4udWstYWN0aXZlPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXN1Ym5hdj4udWstYWN0aXZlPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc3VibmF2Pi51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXY+LnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pi51ay1hY3RpdmU+YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXY+LnVrLWFjdGl2ZT5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pi51ay1hY3RpdmU+YXtjb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXYtZGl2aWRlcj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXYtZGl2aWRlcj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2LWRpdmlkZXI+Om50aC1jaGlsZChuKzIpOm5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXYtZGl2aWRlcj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLWxpZ2h0IC51ay1zdWJuYXYtZGl2aWRlcj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXN1Ym5hdi1kaXZpZGVyPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zdWJuYXYtZGl2aWRlcj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2LWRpdmlkZXI+Om50aC1jaGlsZChuKzIpOm5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2LWRpdmlkZXI+Om50aC1jaGlsZChuKzIpOm5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3JlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1kaXZpZGVyPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1kaXZpZGVyPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2LXBpbGw+Kj46Zmlyc3QtY2hpbGQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXYtcGlsbD4qPjpmaXJzdC1jaGlsZCwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXYtcGlsbD4qPjpmaXJzdC1jaGlsZCwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2LXBpbGw+Kj46Zmlyc3QtY2hpbGQsLnVrLWxpZ2h0IC51ay1zdWJuYXYtcGlsbD4qPjpmaXJzdC1jaGlsZCwudWstb2ZmY2FudmFzLWJhciAudWstc3VibmF2LXBpbGw+Kj46Zmlyc3QtY2hpbGQsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc3VibmF2LXBpbGw+Kj46Zmlyc3QtY2hpbGQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2LXBpbGw+Kj46Zmlyc3QtY2hpbGQsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPjpmaXJzdC1jaGlsZCwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPjpmaXJzdC1jaGlsZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+OmZpcnN0LWNoaWxke2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXN1Ym5hdi1waWxsPio+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2LXBpbGw+Kj5hOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2LXBpbGw+Kj5hOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2LXBpbGw+Kj5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXN1Ym5hdi1waWxsPio+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXYtcGlsbD4qPmE6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXN1Ym5hdi1waWxsPio+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2LXBpbGw+Kj5hOmhvdmVyLC51ay1saWdodCAudWstc3VibmF2LXBpbGw+Kj5hOmZvY3VzLC51ay1saWdodCAudWstc3VibmF2LXBpbGw+Kj5hOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1zdWJuYXYtcGlsbD4qPmE6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXN1Ym5hdi1waWxsPio+YTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zdWJuYXYtcGlsbD4qPmE6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc3VibmF2LXBpbGw+Kj5hOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+YTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPmE6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPmE6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPmE6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2LXBpbGw+Kj5hOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+YTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+YTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+YTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXYtcGlsbD4qPmE6YWN0aXZlLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc3VibmF2LXBpbGw+Kj5hOmFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXYtcGlsbD4qPmE6YWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXYtcGlsbD4qPmE6YWN0aXZlLC51ay1saWdodCAudWstc3VibmF2LXBpbGw+Kj5hOmFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstc3VibmF2LXBpbGw+Kj5hOmFjdGl2ZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zdWJuYXYtcGlsbD4qPmE6YWN0aXZlLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+YTphY3RpdmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPmE6YWN0aXZlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdi1waWxsPio+YTphY3RpdmUsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4qPmE6YWN0aXZle2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSk7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXN1Ym5hdi1waWxsPi51ay1hY3RpdmU+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXN1Ym5hdi1waWxsPi51ay1hY3RpdmU+YSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXYtcGlsbD4udWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXN1Ym5hdi1waWxsPi51ay1hY3RpdmU+YSwudWstbGlnaHQgLnVrLXN1Ym5hdi1waWxsPi51ay1hY3RpdmU+YSwudWstb2ZmY2FudmFzLWJhciAudWstc3VibmF2LXBpbGw+LnVrLWFjdGl2ZT5hLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXN1Ym5hdi1waWxsPi51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4udWstYWN0aXZlPmEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zdWJuYXYtcGlsbD4udWstYWN0aXZlPmEsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2LXBpbGw+LnVrLWFjdGl2ZT5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2LXBpbGw+LnVrLWFjdGl2ZT5he2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojNjY2fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zdWJuYXY+LnVrLWRpc2FibGVkPmEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXY+LnVrLWRpc2FibGVkPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstc3VibmF2Pi51ay1kaXNhYmxlZD5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zdWJuYXY+LnVrLWRpc2FibGVkPmEsLnVrLWxpZ2h0IC51ay1zdWJuYXY+LnVrLWRpc2FibGVkPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXN1Ym5hdj4udWstZGlzYWJsZWQ+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1zdWJuYXY+LnVrLWRpc2FibGVkPmEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pi51ay1kaXNhYmxlZD5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc3VibmF2Pi51ay1kaXNhYmxlZD5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdj4udWstZGlzYWJsZWQ+YSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXN1Ym5hdj4udWstZGlzYWJsZWQ+YXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYnJlYWRjcnVtYj4qPiosLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1icmVhZGNydW1iPio+KiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1icmVhZGNydW1iPio+KiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnJlYWRjcnVtYj4qPiosLnVrLWxpZ2h0IC51ay1icmVhZGNydW1iPio+KiwudWstb2ZmY2FudmFzLWJhciAudWstYnJlYWRjcnVtYj4qPiosLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnJlYWRjcnVtYj4qPiosLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnJlYWRjcnVtYj4qPiosLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1icmVhZGNydW1iPio+KiwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1icmVhZGNydW1iPio+KiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Kj4qe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1icmVhZGNydW1iPio+OmZvY3VzLC51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1icmVhZGNydW1iPio+OmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnJlYWRjcnVtYj4qPjpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWJyZWFkY3J1bWI+Kj46aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnJlYWRjcnVtYj4qPjpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1icmVhZGNydW1iPio+OmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1icmVhZGNydW1iPio+OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1icmVhZGNydW1iPio+OmhvdmVyLC51ay1saWdodCAudWstYnJlYWRjcnVtYj4qPjpmb2N1cywudWstbGlnaHQgLnVrLWJyZWFkY3J1bWI+Kj46aG92ZXIsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJyZWFkY3J1bWI+Kj46Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJyZWFkY3J1bWI+Kj46aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnJlYWRjcnVtYj4qPjpmb2N1cywudWstb3ZlcmxheS1wcmltYXJ5IC51ay1icmVhZGNydW1iPio+OmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Kj46Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnJlYWRjcnVtYj4qPjpob3ZlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Kj46Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1icmVhZGNydW1iPio+OmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Kj46Zm9jdXMsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnJlYWRjcnVtYj4qPjpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Kj46Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1icmVhZGNydW1iPio+OmhvdmVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1icmVhZGNydW1iPjpsYXN0LWNoaWxkPiosLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1icmVhZGNydW1iPjpsYXN0LWNoaWxkPiosLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstYnJlYWRjcnVtYj46bGFzdC1jaGlsZD4qLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1icmVhZGNydW1iPjpsYXN0LWNoaWxkPiosLnVrLWxpZ2h0IC51ay1icmVhZGNydW1iPjpsYXN0LWNoaWxkPiosLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWJyZWFkY3J1bWI+Omxhc3QtY2hpbGQ+KiwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1icmVhZGNydW1iPjpsYXN0LWNoaWxkPiosLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnJlYWRjcnVtYj46bGFzdC1jaGlsZD4qLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnJlYWRjcnVtYj46bGFzdC1jaGlsZD4qLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Omxhc3QtY2hpbGQ+KiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Omxhc3QtY2hpbGQ+Kntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYnJlYWRjcnVtYj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1icmVhZGNydW1iPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1icmVhZGNydW1iPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYnJlYWRjcnVtYj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLWxpZ2h0IC51ay1icmVhZGNydW1iPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstYnJlYWRjcnVtYj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYnJlYWRjcnVtYj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYnJlYWRjcnVtYj46bnRoLWNoaWxkKG4rMik6bm90KC51ay1maXJzdC1jb2x1bW4pOjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1icmVhZGNydW1iPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1icmVhZGNydW1iPjpudGgtY2hpbGQobisyKTpub3QoLnVrLWZpcnN0LWNvbHVtbik6OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWJyZWFkY3J1bWI+Om50aC1jaGlsZChuKzIpOm5vdCgudWstZmlyc3QtY29sdW1uKTo6YmVmb3Jle2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1wYWdpbmF0aW9uPio+KiwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXBhZ2luYXRpb24+Kj4qLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXBhZ2luYXRpb24+Kj4qLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1wYWdpbmF0aW9uPio+KiwudWstbGlnaHQgLnVrLXBhZ2luYXRpb24+Kj4qLC51ay1vZmZjYW52YXMtYmFyIC51ay1wYWdpbmF0aW9uPio+KiwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1wYWdpbmF0aW9uPio+KiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1wYWdpbmF0aW9uPio+KiwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXBhZ2luYXRpb24+Kj4qLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXBhZ2luYXRpb24+Kj4qLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4qPip7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXBhZ2luYXRpb24+Kj46Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXBhZ2luYXRpb24+Kj46aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1wYWdpbmF0aW9uPio+OmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcGFnaW5hdGlvbj4qPjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1wYWdpbmF0aW9uPio+OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXBhZ2luYXRpb24+Kj46aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXBhZ2luYXRpb24+Kj46Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXBhZ2luYXRpb24+Kj46aG92ZXIsLnVrLWxpZ2h0IC51ay1wYWdpbmF0aW9uPio+OmZvY3VzLC51ay1saWdodCAudWstcGFnaW5hdGlvbj4qPjpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstcGFnaW5hdGlvbj4qPjpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstcGFnaW5hdGlvbj4qPjpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1wYWdpbmF0aW9uPio+OmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXBhZ2luYXRpb24+Kj46aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4qPjpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1wYWdpbmF0aW9uPio+OmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4qPjpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXBhZ2luYXRpb24+Kj46aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4qPjpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1wYWdpbmF0aW9uPio+OmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4qPjpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXBhZ2luYXRpb24+Kj46aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXBhZ2luYXRpb24+LnVrLWFjdGl2ZT4qLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcGFnaW5hdGlvbj4udWstYWN0aXZlPiosLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstcGFnaW5hdGlvbj4udWstYWN0aXZlPiosLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXBhZ2luYXRpb24+LnVrLWFjdGl2ZT4qLC51ay1saWdodCAudWstcGFnaW5hdGlvbj4udWstYWN0aXZlPiosLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXBhZ2luYXRpb24+LnVrLWFjdGl2ZT4qLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXBhZ2luYXRpb24+LnVrLWFjdGl2ZT4qLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXBhZ2luYXRpb24+LnVrLWFjdGl2ZT4qLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4udWstYWN0aXZlPiosLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4udWstYWN0aXZlPiosLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1wYWdpbmF0aW9uPi51ay1hY3RpdmU+Kntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+KiwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXBhZ2luYXRpb24+LnVrLWRpc2FibGVkPiosLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+KiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+KiwudWstbGlnaHQgLnVrLXBhZ2luYXRpb24+LnVrLWRpc2FibGVkPiosLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXBhZ2luYXRpb24+LnVrLWRpc2FibGVkPiosLnVrLW92ZXJsYXktcHJpbWFyeSAudWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+KiwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1wYWdpbmF0aW9uPi51ay1kaXNhYmxlZD4qLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+KiwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1wYWdpbmF0aW9uPi51ay1kaXNhYmxlZD4qLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstcGFnaW5hdGlvbj4udWstZGlzYWJsZWQ+Kntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiOjpiZWZvcmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWI6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10YWI6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFiOjpiZWZvcmUsLnVrLWxpZ2h0IC51ay10YWI6OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstdGFiOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFiOjpiZWZvcmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiOjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI6OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI6OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYjo6YmVmb3Jle2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPio+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYj4qPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPio+YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFiPio+YSwudWstbGlnaHQgLnVrLXRhYj4qPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRhYj4qPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFiPio+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+Kj5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPio+YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+Kj5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPio+YXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPio+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPio+YTpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYj4qPmE6Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWI+Kj5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRhYj4qPmE6Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPio+YTpob3ZlciwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFiPio+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFiPio+YTpob3ZlciwudWstbGlnaHQgLnVrLXRhYj4qPmE6Zm9jdXMsLnVrLWxpZ2h0IC51ay10YWI+Kj5hOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay10YWI+Kj5hOmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay10YWI+Kj5hOmhvdmVyLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRhYj4qPmE6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFiPio+YTpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+Kj5hOmZvY3VzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYj4qPmE6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+Kj5hOmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPio+YTpob3ZlciwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+Kj5hOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYj4qPmE6aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+Kj5hOmZvY3VzLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPio+YTpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPi51ay1hY3RpdmU+YSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRhYj4udWstYWN0aXZlPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPi51ay1hY3RpdmU+YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGFiPi51ay1hY3RpdmU+YSwudWstbGlnaHQgLnVrLXRhYj4udWstYWN0aXZlPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRhYj4udWstYWN0aXZlPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGFiPi51ay1hY3RpdmU+YSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+LnVrLWFjdGl2ZT5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPi51ay1hY3RpdmU+YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10YWI+LnVrLWFjdGl2ZT5hLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPi51ay1hY3RpdmU+YXtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZmZmfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10YWI+LnVrLWRpc2FibGVkPmEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWI+LnVrLWRpc2FibGVkPmEsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGFiPi51ay1kaXNhYmxlZD5hLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10YWI+LnVrLWRpc2FibGVkPmEsLnVrLWxpZ2h0IC51ay10YWI+LnVrLWRpc2FibGVkPmEsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRhYj4udWstZGlzYWJsZWQ+YSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay10YWI+LnVrLWRpc2FibGVkPmEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPi51ay1kaXNhYmxlZD5hLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGFiPi51ay1kaXNhYmxlZD5hLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYj4udWstZGlzYWJsZWQ+YSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRhYj4udWstZGlzYWJsZWQ+YXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc2xpZGVuYXYsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zbGlkZW5hdiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zbGlkZW5hdiwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2xpZGVuYXYsLnVrLWxpZ2h0IC51ay1zbGlkZW5hdiwudWstb2ZmY2FudmFzLWJhciAudWstc2xpZGVuYXYsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2xpZGVuYXYsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2xpZGVuYXYsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zbGlkZW5hdiwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zbGlkZW5hdiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNsaWRlbmF2e2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1zbGlkZW5hdjpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstc2xpZGVuYXY6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zbGlkZW5hdjpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNsaWRlbmF2OmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNsaWRlbmF2OmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXNsaWRlbmF2OmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1zbGlkZW5hdjpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstc2xpZGVuYXY6aG92ZXIsLnVrLWxpZ2h0IC51ay1zbGlkZW5hdjpmb2N1cywudWstbGlnaHQgLnVrLXNsaWRlbmF2OmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1zbGlkZW5hdjpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstc2xpZGVuYXY6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2xpZGVuYXY6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstc2xpZGVuYXY6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2xpZGVuYXY6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2xpZGVuYXY6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zbGlkZW5hdjpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNsaWRlbmF2OmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNsaWRlbmF2OmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXNsaWRlbmF2OmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2xpZGVuYXY6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zbGlkZW5hdjpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45NSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXNsaWRlbmF2OmFjdGl2ZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNsaWRlbmF2OmFjdGl2ZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1zbGlkZW5hdjphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXNsaWRlbmF2OmFjdGl2ZSwudWstbGlnaHQgLnVrLXNsaWRlbmF2OmFjdGl2ZSwudWstb2ZmY2FudmFzLWJhciAudWstc2xpZGVuYXY6YWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXNsaWRlbmF2OmFjdGl2ZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zbGlkZW5hdjphY3RpdmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1zbGlkZW5hdjphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2xpZGVuYXY6YWN0aXZlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstc2xpZGVuYXY6YWN0aXZle2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1kb3RuYXY+Kj4qLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstZG90bmF2Pio+KiwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1kb3RuYXY+Kj4qLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kb3RuYXY+Kj4qLC51ay1saWdodCAudWstZG90bmF2Pio+KiwudWstb2ZmY2FudmFzLWJhciAudWstZG90bmF2Pio+KiwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1kb3RuYXY+Kj4qLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4qPiosLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kb3RuYXY+Kj4qLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4qPiosLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kb3RuYXY+Kj4qe2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1kb3RuYXY+Kj46Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWRvdG5hdj4qPjpob3ZlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRvdG5hdj4qPjpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRvdG5hdj4qPjpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1kb3RuYXY+Kj46Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstZG90bmF2Pio+OmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kb3RuYXY+Kj46Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRvdG5hdj4qPjpob3ZlciwudWstbGlnaHQgLnVrLWRvdG5hdj4qPjpmb2N1cywudWstbGlnaHQgLnVrLWRvdG5hdj4qPjpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstZG90bmF2Pio+OmZvY3VzLC51ay1vZmZjYW52YXMtYmFyIC51ay1kb3RuYXY+Kj46aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstZG90bmF2Pio+OmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWRvdG5hdj4qPjpob3ZlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kb3RuYXY+Kj46Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pio+OmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pio+OmZvY3VzLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pio+OmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4qPjpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kb3RuYXY+Kj46aG92ZXIsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kb3RuYXY+Kj46Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1kb3RuYXY+Kj46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWRvdG5hdj4qPjphY3RpdmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kb3RuYXY+Kj46YWN0aXZlLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWRvdG5hdj4qPjphY3RpdmUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRvdG5hdj4qPjphY3RpdmUsLnVrLWxpZ2h0IC51ay1kb3RuYXY+Kj46YWN0aXZlLC51ay1vZmZjYW52YXMtYmFyIC51ay1kb3RuYXY+Kj46YWN0aXZlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWRvdG5hdj4qPjphY3RpdmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pio+OmFjdGl2ZSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4qPjphY3RpdmUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pio+OmFjdGl2ZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4qPjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWRvdG5hdj4udWstYWN0aXZlPiosLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1kb3RuYXY+LnVrLWFjdGl2ZT4qLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWRvdG5hdj4udWstYWN0aXZlPiosLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWRvdG5hdj4udWstYWN0aXZlPiosLnVrLWxpZ2h0IC51ay1kb3RuYXY+LnVrLWFjdGl2ZT4qLC51ay1vZmZjYW52YXMtYmFyIC51ay1kb3RuYXY+LnVrLWFjdGl2ZT4qLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWRvdG5hdj4udWstYWN0aXZlPiosLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pi51ay1hY3RpdmU+KiwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4udWstYWN0aXZlPiosLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstZG90bmF2Pi51ay1hY3RpdmU+KiwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWRvdG5hdj4udWstYWN0aXZlPip7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWFjY29yZGlvbi10aXRsZSwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWFjY29yZGlvbi10aXRsZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1hY2NvcmRpb24tdGl0bGUsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWFjY29yZGlvbi10aXRsZSwudWstbGlnaHQgLnVrLWFjY29yZGlvbi10aXRsZSwudWstb2ZmY2FudmFzLWJhciAudWstYWNjb3JkaW9uLXRpdGxlLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWFjY29yZGlvbi10aXRsZSwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGUsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYWNjb3JkaW9uLXRpdGxlLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYWNjb3JkaW9uLXRpdGxle2NvbG9yOiNmZmZ9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWFjY29yZGlvbi10aXRsZTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYWNjb3JkaW9uLXRpdGxlOmhvdmVyLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYWNjb3JkaW9uLXRpdGxlOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYWNjb3JkaW9uLXRpdGxlOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWFjY29yZGlvbi10aXRsZTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1hY2NvcmRpb24tdGl0bGU6aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWFjY29yZGlvbi10aXRsZTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYWNjb3JkaW9uLXRpdGxlOmhvdmVyLC51ay1saWdodCAudWstYWNjb3JkaW9uLXRpdGxlOmZvY3VzLC51ay1saWdodCAudWstYWNjb3JkaW9uLXRpdGxlOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1hY2NvcmRpb24tdGl0bGU6Zm9jdXMsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWFjY29yZGlvbi10aXRsZTpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1hY2NvcmRpb24tdGl0bGU6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYWNjb3JkaW9uLXRpdGxlOmhvdmVyLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjY29yZGlvbi10aXRsZTpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGU6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGU6Zm9jdXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGU6aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYWNjb3JkaW9uLXRpdGxlOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjY29yZGlvbi10aXRsZTpob3ZlciwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjY29yZGlvbi10aXRsZTpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjY29yZGlvbi10aXRsZTpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbm5hdj4qPmEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29ubmF2Pio+YSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pY29ubmF2Pio+YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaWNvbm5hdj4qPmEsLnVrLWxpZ2h0IC51ay1pY29ubmF2Pio+YSwudWstb2ZmY2FudmFzLWJhciAudWstaWNvbm5hdj4qPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaWNvbm5hdj4qPmEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbm5hdj4qPmEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29ubmF2Pio+YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29ubmF2Pio+YSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb25uYXY+Kj5he2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1pY29ubmF2Pio+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbm5hdj4qPmE6aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29ubmF2Pio+YTpmb2N1cywudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWljb25uYXY+Kj5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWljb25uYXY+Kj5hOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWljb25uYXY+Kj5hOmhvdmVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29ubmF2Pio+YTpmb2N1cywudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaWNvbm5hdj4qPmE6aG92ZXIsLnVrLWxpZ2h0IC51ay1pY29ubmF2Pio+YTpmb2N1cywudWstbGlnaHQgLnVrLWljb25uYXY+Kj5hOmhvdmVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1pY29ubmF2Pio+YTpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstaWNvbm5hdj4qPmE6aG92ZXIsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaWNvbm5hdj4qPmE6Zm9jdXMsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaWNvbm5hdj4qPmE6aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbm5hdj4qPmE6Zm9jdXMsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbm5hdj4qPmE6aG92ZXIsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29ubmF2Pio+YTpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb25uYXY+Kj5hOmhvdmVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb25uYXY+Kj5hOmZvY3VzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb25uYXY+Kj5hOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbm5hdj4qPmE6Zm9jdXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29ubmF2Pio+YTpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstaWNvbm5hdj4udWstYWN0aXZlPmEsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1pY29ubmF2Pi51ay1hY3RpdmU+YSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1pY29ubmF2Pi51ay1hY3RpdmU+YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstaWNvbm5hdj4udWstYWN0aXZlPmEsLnVrLWxpZ2h0IC51ay1pY29ubmF2Pi51ay1hY3RpdmU+YSwudWstb2ZmY2FudmFzLWJhciAudWstaWNvbm5hdj4udWstYWN0aXZlPmEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstaWNvbm5hdj4udWstYWN0aXZlPmEsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstaWNvbm5hdj4udWstYWN0aXZlPmEsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29ubmF2Pi51ay1hY3RpdmU+YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1pY29ubmF2Pi51ay1hY3RpdmU+YSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWljb25uYXY+LnVrLWFjdGl2ZT5he2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10ZXh0LWxlYWQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LWxlYWQsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dC1sZWFkLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LWxlYWQsLnVrLWxpZ2h0IC51ay10ZXh0LWxlYWQsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRleHQtbGVhZCwudWstb3ZlcmxheS1wcmltYXJ5IC51ay10ZXh0LWxlYWQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1sZWFkLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1sZWFkLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtbGVhZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtbGVhZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dC1tZXRhLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dC1tZXRhLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRleHQtbWV0YSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dC1tZXRhLC51ay1saWdodCAudWstdGV4dC1tZXRhLC51ay1vZmZjYW52YXMtYmFyIC51ay10ZXh0LW1ldGEsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGV4dC1tZXRhLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtbWV0YSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtbWV0YSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0LW1ldGEsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0LW1ldGF7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLXRleHQtbXV0ZWQsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LW11dGVkLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLXRleHQtbXV0ZWQsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLXRleHQtbXV0ZWQsLnVrLWxpZ2h0IC51ay10ZXh0LW11dGVkLC51ay1vZmZjYW52YXMtYmFyIC51ay10ZXh0LW11dGVkLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLXRleHQtbXV0ZWQsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1tdXRlZCwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtbXV0ZWQsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1tdXRlZCwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtbXV0ZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSkhaW1wb3J0YW50fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10ZXh0LWVtcGhhc2lzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dC1lbXBoYXNpcywudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10ZXh0LWVtcGhhc2lzLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LWVtcGhhc2lzLC51ay1saWdodCAudWstdGV4dC1lbXBoYXNpcywudWstb2ZmY2FudmFzLWJhciAudWstdGV4dC1lbXBoYXNpcywudWstb3ZlcmxheS1wcmltYXJ5IC51ay10ZXh0LWVtcGhhc2lzLC51ay1zZWN0aW9uLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtZW1waGFzaXMsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0LWVtcGhhc2lzLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtZW1waGFzaXMsLnVrLXRpbGUtc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0LWVtcGhhc2lze2NvbG9yOiNmZmYhaW1wb3J0YW50fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay10ZXh0LXByaW1hcnksLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LXByaW1hcnksLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dC1wcmltYXJ5LC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LXByaW1hcnksLnVrLWxpZ2h0IC51ay10ZXh0LXByaW1hcnksLnVrLW9mZmNhbnZhcy1iYXIgLnVrLXRleHQtcHJpbWFyeSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay10ZXh0LXByaW1hcnksLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1wcmltYXJ5LC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1wcmltYXJ5LC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtcHJpbWFyeSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtcHJpbWFyeXtjb2xvcjojZmZmIWltcG9ydGFudH0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstdGV4dC1zZWNvbmRhcnksLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay10ZXh0LXNlY29uZGFyeSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay10ZXh0LXNlY29uZGFyeSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstdGV4dC1zZWNvbmRhcnksLnVrLWxpZ2h0IC51ay10ZXh0LXNlY29uZGFyeSwudWstb2ZmY2FudmFzLWJhciAudWstdGV4dC1zZWNvbmRhcnksLnVrLW92ZXJsYXktcHJpbWFyeSAudWstdGV4dC1zZWNvbmRhcnksLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstdGV4dC1zZWNvbmRhcnksLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0LXNlY29uZGFyeSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay10ZXh0LXNlY29uZGFyeSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLXRleHQtc2Vjb25kYXJ5e2NvbG9yOiNmZmYhaW1wb3J0YW50fS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1jb2x1bW4tZGl2aWRlciwudWstY2FyZC1wcmltYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWNvbHVtbi1kaXZpZGVyLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWNvbHVtbi1kaXZpZGVyLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1jb2x1bW4tZGl2aWRlciwudWstbGlnaHQgLnVrLWNvbHVtbi1kaXZpZGVyLC51ay1vZmZjYW52YXMtYmFyIC51ay1jb2x1bW4tZGl2aWRlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1jb2x1bW4tZGl2aWRlciwudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1jb2x1bW4tZGl2aWRlciwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNvbHVtbi1kaXZpZGVyLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWNvbHVtbi1kaXZpZGVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstY29sdW1uLWRpdmlkZXJ7Y29sdW1uLXJ1bGUtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ28sLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1sb2dvLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ28sLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxvZ28sLnVrLWxpZ2h0IC51ay1sb2dvLC51ay1vZmZjYW52YXMtYmFyIC51ay1sb2dvLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxvZ28sLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ28sLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ297Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ286Zm9jdXMsLnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ286aG92ZXIsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1sb2dvOmZvY3VzLC51ay1jYXJkLXByaW1hcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstbG9nbzpob3ZlciwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1sb2dvOmZvY3VzLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ286aG92ZXIsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxvZ286Zm9jdXMsLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxvZ286aG92ZXIsLnVrLWxpZ2h0IC51ay1sb2dvOmZvY3VzLC51ay1saWdodCAudWstbG9nbzpob3ZlciwudWstb2ZmY2FudmFzLWJhciAudWstbG9nbzpmb2N1cywudWstb2ZmY2FudmFzLWJhciAudWstbG9nbzpob3ZlciwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1sb2dvOmZvY3VzLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxvZ286aG92ZXIsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbzpmb2N1cywudWstc2VjdGlvbi1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1sb2dvOmhvdmVyLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbzpmb2N1cywudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ286aG92ZXIsLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbzpmb2N1cywudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1sb2dvOmhvdmVyLC51ay10aWxlLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbzpmb2N1cywudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ286aG92ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnVrLWNhcmQtcHJpbWFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ28+Om5vdCgudWstbG9nby1pbnZlcnNlKTpub3QoOm9ubHktb2YtdHlwZSksLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1sb2dvPjpub3QoLnVrLWxvZ28taW52ZXJzZSk6bm90KDpvbmx5LW9mLXR5cGUpLC51ay1jYXJkLXNlY29uZGFyeS51ay1jYXJkLWJvZHkgLnVrLWxvZ28+Om5vdCgudWstbG9nby1pbnZlcnNlKTpub3QoOm9ubHktb2YtdHlwZSksLnVrLWNhcmQtc2Vjb25kYXJ5Pjpub3QoW2NsYXNzKj11ay1jYXJkLW1lZGlhXSkgLnVrLWxvZ28+Om5vdCgudWstbG9nby1pbnZlcnNlKTpub3QoOm9ubHktb2YtdHlwZSksLnVrLWxpZ2h0IC51ay1sb2dvPjpub3QoLnVrLWxvZ28taW52ZXJzZSk6bm90KDpvbmx5LW9mLXR5cGUpLC51ay1vZmZjYW52YXMtYmFyIC51ay1sb2dvPjpub3QoLnVrLWxvZ28taW52ZXJzZSk6bm90KDpvbmx5LW9mLXR5cGUpLC51ay1vdmVybGF5LXByaW1hcnkgLnVrLWxvZ28+Om5vdCgudWstbG9nby1pbnZlcnNlKTpub3QoOm9ubHktb2YtdHlwZSksLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbz46bm90KC51ay1sb2dvLWludmVyc2UpOm5vdCg6b25seS1vZi10eXBlKSwudWstc2VjdGlvbi1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ28+Om5vdCgudWstbG9nby1pbnZlcnNlKTpub3QoOm9ubHktb2YtdHlwZSksLnVrLXRpbGUtcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nbz46bm90KC51ay1sb2dvLWludmVyc2UpOm5vdCg6b25seS1vZi10eXBlKSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ28+Om5vdCgudWstbG9nby1pbnZlcnNlKTpub3QoOm9ubHktb2YtdHlwZSl7ZGlzcGxheTpub25lfS51ay1jYXJkLXByaW1hcnkudWstY2FyZC1ib2R5IC51ay1sb2dvLWludmVyc2UsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1sb2dvLWludmVyc2UsLnVrLWNhcmQtc2Vjb25kYXJ5LnVrLWNhcmQtYm9keSAudWstbG9nby1pbnZlcnNlLC51ay1jYXJkLXNlY29uZGFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1sb2dvLWludmVyc2UsLnVrLWxpZ2h0IC51ay1sb2dvLWludmVyc2UsLnVrLW9mZmNhbnZhcy1iYXIgLnVrLWxvZ28taW52ZXJzZSwudWstb3ZlcmxheS1wcmltYXJ5IC51ay1sb2dvLWludmVyc2UsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nby1pbnZlcnNlLC51ay1zZWN0aW9uLXNlY29uZGFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstbG9nby1pbnZlcnNlLC51ay10aWxlLXByaW1hcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ28taW52ZXJzZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWxvZ28taW52ZXJzZXtkaXNwbGF5OmlubGluZX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLWxpZ2h0IC51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLWFjY29yZGlvbi10aXRsZTo6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjEzJTIyJTIwaGVpZ2h0JTNEJTIyMTMlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMyUyMDEzJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjclMjklMjIlMjB3aWR0aCUzRCUyMjEzJTIyJTIwaGVpZ2h0JTNEJTIyMSUyMiUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjYlMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjclMjklMjIlMjB3aWR0aCUzRCUyMjElMjIlMjBoZWlnaHQlM0QlMjIxMyUyMiUyMHglM0QlMjI2JTIyJTIweSUzRCUyMjAlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UiKX0udWstY2FyZC1wcmltYXJ5LnVrLWNhcmQtYm9keSAudWstb3Blbj4udWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLWNhcmQtcHJpbWFyeT46bm90KFtjbGFzcyo9dWstY2FyZC1tZWRpYV0pIC51ay1vcGVuPi51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnkudWstY2FyZC1ib2R5IC51ay1vcGVuPi51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstY2FyZC1zZWNvbmRhcnk+Om5vdChbY2xhc3MqPXVrLWNhcmQtbWVkaWFdKSAudWstb3Blbj4udWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLWxpZ2h0IC51ay1vcGVuPi51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstb2ZmY2FudmFzLWJhciAudWstb3Blbj4udWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLW92ZXJsYXktcHJpbWFyeSAudWstb3Blbj4udWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLXNlY3Rpb24tcHJpbWFyeTpub3QoLnVrLXByZXNlcnZlLWNvbG9yKSAudWstb3Blbj4udWstYWNjb3JkaW9uLXRpdGxlOjpiZWZvcmUsLnVrLXNlY3Rpb24tc2Vjb25kYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1vcGVuPi51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstdGlsZS1wcmltYXJ5Om5vdCgudWstcHJlc2VydmUtY29sb3IpIC51ay1vcGVuPi51ay1hY2NvcmRpb24tdGl0bGU6OmJlZm9yZSwudWstdGlsZS1zZWNvbmRhcnk6bm90KC51ay1wcmVzZXJ2ZS1jb2xvcikgLnVrLW9wZW4+LnVrLWFjY29yZGlvbi10aXRsZTo6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCUyMjEzJTIyJTIwaGVpZ2h0JTNEJTIyMTMlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMyUyMDEzJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMnJnYmElMjgyNTUsJTIwMjU1LCUyMDI1NSwlMjAwLjclMjklMjIlMjB3aWR0aCUzRCUyMjEzJTIyJTIwaGVpZ2h0JTNEJTIyMSUyMiUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjYlMjIlMjAlMkYlM0UlMEElM0MlMkZzdmclM0UiKX1AbWVkaWEgcHJpbnR7Kiw6OmFmdGVyLDo6YmVmb3Jle2JhY2tncm91bmQ6MCAwIWltcG9ydGFudDtjb2xvcjojMDAwIWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50O3RleHQtc2hhZG93Om5vbmUhaW1wb3J0YW50fWEsYTp2aXNpdGVke3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YmxvY2txdW90ZSxwcmV7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O3BhZ2UtYnJlYWstaW5zaWRlOmF2b2lkfXRoZWFke2Rpc3BsYXk6dGFibGUtaGVhZGVyLWdyb3VwfWltZyx0cntwYWdlLWJyZWFrLWluc2lkZTphdm9pZH1pbWd7bWF4LXdpZHRoOjEwMCUhaW1wb3J0YW50fUBwYWdle21hcmdpbjouNWNtfWgyLGgzLHB7b3JwaGFuczozO3dpZG93czozfWgyLGgze3BhZ2UtYnJlYWstYWZ0ZXI6YXZvaWR9fQ==", +{"status":false} +], + + +[ +"uikit.js_3.2.0", +"LyohIFVJa2l0IDMuMi4wIHwgaHR0cDovL3d3dy5nZXR1aWtpdC5jb20gfCAoYykgMjAxNCAtIDIwMTkgWU9PdGhlbWUgfCBNSVQgTGljZW5zZSAqLwoKKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHsKICAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDoKICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZSgndWlraXQnLCBmYWN0b3J5KSA6CiAgICAoZ2xvYmFsID0gZ2xvYmFsIHx8IHNlbGYsIGdsb2JhbC5VSWtpdCA9IGZhY3RvcnkoKSk7Cn0odGhpcywgZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7CgogICAgdmFyIG9ialByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7CiAgICB2YXIgaGFzT3duUHJvcGVydHkgPSBvYmpQcm90b3R5cGUuaGFzT3duUHJvcGVydHk7CgogICAgZnVuY3Rpb24gaGFzT3duKG9iaiwga2V5KSB7CiAgICAgICAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpOwogICAgfQoKICAgIHZhciBoeXBoZW5hdGVDYWNoZSA9IHt9OwogICAgdmFyIGh5cGhlbmF0ZVJlID0gLyhbYS16XGRdKShbQS1aXSkvZzsKCiAgICBmdW5jdGlvbiBoeXBoZW5hdGUoc3RyKSB7CgogICAgICAgIGlmICghKHN0ciBpbiBoeXBoZW5hdGVDYWNoZSkpIHsKICAgICAgICAgICAgaHlwaGVuYXRlQ2FjaGVbc3RyXSA9IHN0cgogICAgICAgICAgICAgICAgLnJlcGxhY2UoaHlwaGVuYXRlUmUsICckMS0kMicpCiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBoeXBoZW5hdGVDYWNoZVtzdHJdOwogICAgfQoKICAgIHZhciBjYW1lbGl6ZVJlID0gLy0oXHcpL2c7CgogICAgZnVuY3Rpb24gY2FtZWxpemUoc3RyKSB7CiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUmUsIHRvVXBwZXIpOwogICAgfQoKICAgIGZ1bmN0aW9uIHRvVXBwZXIoXywgYykgewogICAgICAgIHJldHVybiBjID8gYy50b1VwcGVyQ2FzZSgpIDogJyc7CiAgICB9CgogICAgZnVuY3Rpb24gdWNmaXJzdChzdHIpIHsKICAgICAgICByZXR1cm4gc3RyLmxlbmd0aCA/IHRvVXBwZXIobnVsbCwgc3RyLmNoYXJBdCgwKSkgKyBzdHIuc2xpY2UoMSkgOiAnJzsKICAgIH0KCiAgICB2YXIgc3RyUHJvdG90eXBlID0gU3RyaW5nLnByb3RvdHlwZTsKICAgIHZhciBzdGFydHNXaXRoRm4gPSBzdHJQcm90b3R5cGUuc3RhcnRzV2l0aCB8fCBmdW5jdGlvbiAoc2VhcmNoKSB7IHJldHVybiB0aGlzLmxhc3RJbmRleE9mKHNlYXJjaCwgMCkgPT09IDA7IH07CgogICAgZnVuY3Rpb24gc3RhcnRzV2l0aChzdHIsIHNlYXJjaCkgewogICAgICAgIHJldHVybiBzdGFydHNXaXRoRm4uY2FsbChzdHIsIHNlYXJjaCk7CiAgICB9CgogICAgdmFyIGVuZHNXaXRoRm4gPSBzdHJQcm90b3R5cGUuZW5kc1dpdGggfHwgZnVuY3Rpb24gKHNlYXJjaCkgeyByZXR1cm4gdGhpcy5zdWJzdHIoLXNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7IH07CgogICAgZnVuY3Rpb24gZW5kc1dpdGgoc3RyLCBzZWFyY2gpIHsKICAgICAgICByZXR1cm4gZW5kc1dpdGhGbi5jYWxsKHN0ciwgc2VhcmNoKTsKICAgIH0KCiAgICB2YXIgYXJyUHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlOwoKICAgIHZhciBpbmNsdWRlc0ZuID0gZnVuY3Rpb24gKHNlYXJjaCwgaSkgeyByZXR1cm4gfnRoaXMuaW5kZXhPZihzZWFyY2gsIGkpOyB9OwogICAgdmFyIGluY2x1ZGVzU3RyID0gc3RyUHJvdG90eXBlLmluY2x1ZGVzIHx8IGluY2x1ZGVzRm47CiAgICB2YXIgaW5jbHVkZXNBcnJheSA9IGFyclByb3RvdHlwZS5pbmNsdWRlcyB8fCBpbmNsdWRlc0ZuOwoKICAgIGZ1bmN0aW9uIGluY2x1ZGVzKG9iaiwgc2VhcmNoKSB7CiAgICAgICAgcmV0dXJuIG9iaiAmJiAoaXNTdHJpbmcob2JqKSA/IGluY2x1ZGVzU3RyIDogaW5jbHVkZXNBcnJheSkuY2FsbChvYmosIHNlYXJjaCk7CiAgICB9CgogICAgdmFyIGZpbmRJbmRleEZuID0gYXJyUHJvdG90eXBlLmZpbmRJbmRleCB8fCBmdW5jdGlvbiAocHJlZGljYXRlKSB7CiAgICAgICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzOwoKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKHByZWRpY2F0ZS5jYWxsKGFyZ3VtZW50cyQxWzFdLCB0aGlzW2ldLCBpLCB0aGlzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIC0xOwogICAgfTsKCiAgICBmdW5jdGlvbiBmaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSkgewogICAgICAgIHJldHVybiBmaW5kSW5kZXhGbi5jYWxsKGFycmF5LCBwcmVkaWNhdGUpOwogICAgfQoKICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTsKCiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKG9iaikgewogICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzT2JqZWN0KG9iaikgewogICAgICAgIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCc7CiAgICB9CgogICAgZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHsKICAgICAgICByZXR1cm4gaXNPYmplY3Qob2JqKSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSA9PT0gb2JqUHJvdG90eXBlOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzV2luZG93KG9iaikgewogICAgICAgIHJldHVybiBpc09iamVjdChvYmopICYmIG9iaiA9PT0gb2JqLndpbmRvdzsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0RvY3VtZW50KG9iaikgewogICAgICAgIHJldHVybiBpc09iamVjdChvYmopICYmIG9iai5ub2RlVHlwZSA9PT0gOTsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0pRdWVyeShvYmopIHsKICAgICAgICByZXR1cm4gaXNPYmplY3Qob2JqKSAmJiAhIW9iai5qcXVlcnk7CiAgICB9CgogICAgZnVuY3Rpb24gaXNOb2RlKG9iaikgewogICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBOb2RlIHx8IGlzT2JqZWN0KG9iaikgJiYgb2JqLm5vZGVUeXBlID49IDE7CiAgICB9CgogICAgdmFyIHRvU3RyaW5nID0gb2JqUHJvdG90eXBlLnRvU3RyaW5nOwogICAgZnVuY3Rpb24gaXNOb2RlQ29sbGVjdGlvbihvYmopIHsKICAgICAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopLm1hdGNoKC9eXFtvYmplY3QgKE5vZGVMaXN0fEhUTUxDb2xsZWN0aW9uKVxdJC8pOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkgewogICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJzsKICAgIH0KCiAgICBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkgewogICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7CiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7CiAgICB9CgogICAgZnVuY3Rpb24gaXNOdW1lcmljKHZhbHVlKSB7CiAgICAgICAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSB8fCBpc1N0cmluZyh2YWx1ZSkgJiYgIWlzTmFOKHZhbHVlIC0gcGFyc2VGbG9hdCh2YWx1ZSkpOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzRW1wdHkob2JqKSB7CiAgICAgICAgcmV0dXJuICEoaXNBcnJheShvYmopCiAgICAgICAgICAgID8gb2JqLmxlbmd0aAogICAgICAgICAgICA6IGlzT2JqZWN0KG9iaikKICAgICAgICAgICAgICAgID8gT2JqZWN0LmtleXMob2JqKS5sZW5ndGgKICAgICAgICAgICAgICAgIDogZmFsc2UKICAgICAgICApOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlKSB7CiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB2b2lkIDA7CiAgICB9CgogICAgZnVuY3Rpb24gdG9Cb29sZWFuKHZhbHVlKSB7CiAgICAgICAgcmV0dXJuIGlzQm9vbGVhbih2YWx1ZSkKICAgICAgICAgICAgPyB2YWx1ZQogICAgICAgICAgICA6IHZhbHVlID09PSAndHJ1ZScgfHwgdmFsdWUgPT09ICcxJyB8fCB2YWx1ZSA9PT0gJycKICAgICAgICAgICAgICAgID8gdHJ1ZQogICAgICAgICAgICAgICAgOiB2YWx1ZSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gJzAnCiAgICAgICAgICAgICAgICAgICAgPyBmYWxzZQogICAgICAgICAgICAgICAgICAgIDogdmFsdWU7CiAgICB9CgogICAgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHsKICAgICAgICB2YXIgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICAgICAgICByZXR1cm4gIWlzTmFOKG51bWJlcikgPyBudW1iZXIgOiBmYWxzZTsKICAgIH0KCiAgICBmdW5jdGlvbiB0b0Zsb2F0KHZhbHVlKSB7CiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpIHx8IDA7CiAgICB9CgogICAgZnVuY3Rpb24gdG9Ob2RlKGVsZW1lbnQpIHsKICAgICAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpIHx8IGlzV2luZG93KGVsZW1lbnQpIHx8IGlzRG9jdW1lbnQoZWxlbWVudCkKICAgICAgICAgICAgPyBlbGVtZW50CiAgICAgICAgICAgIDogaXNOb2RlQ29sbGVjdGlvbihlbGVtZW50KSB8fCBpc0pRdWVyeShlbGVtZW50KQogICAgICAgICAgICAgICAgPyBlbGVtZW50WzBdCiAgICAgICAgICAgICAgICA6IGlzQXJyYXkoZWxlbWVudCkKICAgICAgICAgICAgICAgICAgICA/IHRvTm9kZShlbGVtZW50WzBdKQogICAgICAgICAgICAgICAgICAgIDogbnVsbDsKICAgIH0KCiAgICBmdW5jdGlvbiB0b05vZGVzKGVsZW1lbnQpIHsKICAgICAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpCiAgICAgICAgICAgID8gW2VsZW1lbnRdCiAgICAgICAgICAgIDogaXNOb2RlQ29sbGVjdGlvbihlbGVtZW50KQogICAgICAgICAgICAgICAgPyBhcnJQcm90b3R5cGUuc2xpY2UuY2FsbChlbGVtZW50KQogICAgICAgICAgICAgICAgOiBpc0FycmF5KGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgPyBlbGVtZW50Lm1hcCh0b05vZGUpLmZpbHRlcihCb29sZWFuKQogICAgICAgICAgICAgICAgICAgIDogaXNKUXVlcnkoZWxlbWVudCkKICAgICAgICAgICAgICAgICAgICAgICAgPyBlbGVtZW50LnRvQXJyYXkoKQogICAgICAgICAgICAgICAgICAgICAgICA6IFtdOwogICAgfQoKICAgIGZ1bmN0aW9uIHRvTGlzdCh2YWx1ZSkgewogICAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKQogICAgICAgICAgICA/IHZhbHVlCiAgICAgICAgICAgIDogaXNTdHJpbmcodmFsdWUpCiAgICAgICAgICAgICAgICA/IHZhbHVlLnNwbGl0KC8sKD8hW14oXSpcKSkvKS5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBpc051bWVyaWModmFsdWUpCiAgICAgICAgICAgICAgICAgICAgPyB0b051bWJlcih2YWx1ZSkKICAgICAgICAgICAgICAgICAgICA6IHRvQm9vbGVhbih2YWx1ZS50cmltKCkpOyB9KQogICAgICAgICAgICAgICAgOiBbdmFsdWVdOwogICAgfQoKICAgIGZ1bmN0aW9uIHRvTXModGltZSkgewogICAgICAgIHJldHVybiAhdGltZQogICAgICAgICAgICA/IDAKICAgICAgICAgICAgOiBlbmRzV2l0aCh0aW1lLCAnbXMnKQogICAgICAgICAgICAgICAgPyB0b0Zsb2F0KHRpbWUpCiAgICAgICAgICAgICAgICA6IHRvRmxvYXQodGltZSkgKiAxMDAwOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzRXF1YWwodmFsdWUsIG90aGVyKSB7CiAgICAgICAgcmV0dXJuIHZhbHVlID09PSBvdGhlcgogICAgICAgICAgICB8fCBpc09iamVjdCh2YWx1ZSkKICAgICAgICAgICAgJiYgaXNPYmplY3Qob3RoZXIpCiAgICAgICAgICAgICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IE9iamVjdC5rZXlzKG90aGVyKS5sZW5ndGgKICAgICAgICAgICAgJiYgZWFjaCh2YWx1ZSwgZnVuY3Rpb24gKHZhbCwga2V5KSB7IHJldHVybiB2YWwgPT09IG90aGVyW2tleV07IH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIHN3YXAodmFsdWUsIGEsIGIpIHsKICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKChhICsgInwiICsgYiksICdtZycpLCBmdW5jdGlvbiAobWF0Y2gpIHsKICAgICAgICAgICAgcmV0dXJuIG1hdGNoID09PSBhID8gYiA6IGE7CiAgICAgICAgfSk7CiAgICB9CgogICAgdmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgewogICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOwogICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTsKCiAgICAgICAgdGFyZ2V0ID0gT2JqZWN0KHRhcmdldCk7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciBzb3VyY2UgPSBhcmdzW2ldOwogICAgICAgICAgICBpZiAoc291cmNlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc093bihzb3VyY2UsIGtleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH07CgogICAgZnVuY3Rpb24gbGFzdChhcnJheSkgewogICAgICAgIHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsKICAgIH0KCiAgICBmdW5jdGlvbiBlYWNoKG9iaiwgY2IpIHsKICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7CiAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gY2Iob2JqW2tleV0sIGtleSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBmdW5jdGlvbiBzb3J0QnkoYXJyYXksIHByb3ApIHsKICAgICAgICByZXR1cm4gYXJyYXkuc29ydChmdW5jdGlvbiAocmVmLCByZWYkMSkgewogICAgICAgICAgICAgICAgdmFyIHByb3BBID0gcmVmW3Byb3BdOyBpZiAoIHByb3BBID09PSB2b2lkIDAgKSBwcm9wQSA9IDA7CiAgICAgICAgICAgICAgICB2YXIgcHJvcEIgPSByZWYkMVtwcm9wXTsgaWYgKCBwcm9wQiA9PT0gdm9pZCAwICkgcHJvcEIgPSAwOwoKICAgICAgICAgICAgICAgIHJldHVybiBwcm9wQSA+IHByb3BCCiAgICAgICAgICAgICAgICA/IDEKICAgICAgICAgICAgICAgIDogcHJvcEIgPiBwcm9wQQogICAgICAgICAgICAgICAgICAgID8gLTEKICAgICAgICAgICAgICAgICAgICA6IDA7CiAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgZnVuY3Rpb24gdW5pcXVlQnkoYXJyYXksIHByb3ApIHsKICAgICAgICB2YXIgc2VlbiA9IG5ldyBTZXQoKTsKICAgICAgICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uIChyZWYpIHsKICAgICAgICAgICAgdmFyIGNoZWNrID0gcmVmW3Byb3BdOwoKICAgICAgICAgICAgcmV0dXJuIHNlZW4uaGFzKGNoZWNrKQogICAgICAgICAgICA/IGZhbHNlCiAgICAgICAgICAgIDogc2Vlbi5hZGQoY2hlY2spIHx8IHRydWU7CiAgICAgICAgfSAvLyBJRSAxMSBkb2VzIG5vdCByZXR1cm4gdGhlIFNldCBvYmplY3QKICAgICAgICApOwogICAgfQoKICAgIGZ1bmN0aW9uIGNsYW1wKG51bWJlciwgbWluLCBtYXgpIHsKICAgICAgICBpZiAoIG1pbiA9PT0gdm9pZCAwICkgbWluID0gMDsKICAgICAgICBpZiAoIG1heCA9PT0gdm9pZCAwICkgbWF4ID0gMTsKCiAgICAgICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHRvTnVtYmVyKG51bWJlcikgfHwgMCwgbWluKSwgbWF4KTsKICAgIH0KCiAgICBmdW5jdGlvbiBub29wKCkge30KCiAgICBmdW5jdGlvbiBpbnRlcnNlY3RSZWN0KHIxLCByMikgewogICAgICAgIHJldHVybiByMS5sZWZ0IDwgcjIucmlnaHQgJiYKICAgICAgICAgICAgcjEucmlnaHQgPiByMi5sZWZ0ICYmCiAgICAgICAgICAgIHIxLnRvcCA8IHIyLmJvdHRvbSAmJgogICAgICAgICAgICByMS5ib3R0b20gPiByMi50b3A7CiAgICB9CgogICAgZnVuY3Rpb24gcG9pbnRJblJlY3QocG9pbnQsIHJlY3QpIHsKICAgICAgICByZXR1cm4gcG9pbnQueCA8PSByZWN0LnJpZ2h0ICYmCiAgICAgICAgICAgIHBvaW50LnggPj0gcmVjdC5sZWZ0ICYmCiAgICAgICAgICAgIHBvaW50LnkgPD0gcmVjdC5ib3R0b20gJiYKICAgICAgICAgICAgcG9pbnQueSA+PSByZWN0LnRvcDsKICAgIH0KCiAgICB2YXIgRGltZW5zaW9ucyA9IHsKCiAgICAgICAgcmF0aW86IGZ1bmN0aW9uKGRpbWVuc2lvbnMsIHByb3AsIHZhbHVlKSB7CiAgICAgICAgICAgIHZhciBvYmo7CgoKICAgICAgICAgICAgdmFyIGFQcm9wID0gcHJvcCA9PT0gJ3dpZHRoJyA/ICdoZWlnaHQnIDogJ3dpZHRoJzsKCiAgICAgICAgICAgIHJldHVybiAoIG9iaiA9IHt9LCBvYmpbYVByb3BdID0gZGltZW5zaW9uc1twcm9wXSA/IE1hdGgucm91bmQodmFsdWUgKiBkaW1lbnNpb25zW2FQcm9wXSAvIGRpbWVuc2lvbnNbcHJvcF0pIDogZGltZW5zaW9uc1thUHJvcF0sIG9ialtwcm9wXSA9IHZhbHVlLCBvYmogKTsKICAgICAgICB9LAoKICAgICAgICBjb250YWluOiBmdW5jdGlvbihkaW1lbnNpb25zLCBtYXhEaW1lbnNpb25zKSB7CiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKICAgICAgICAgICAgZGltZW5zaW9ucyA9IGFzc2lnbih7fSwgZGltZW5zaW9ucyk7CgogICAgICAgICAgICBlYWNoKGRpbWVuc2lvbnMsIGZ1bmN0aW9uIChfLCBwcm9wKSB7IHJldHVybiBkaW1lbnNpb25zID0gZGltZW5zaW9uc1twcm9wXSA+IG1heERpbWVuc2lvbnNbcHJvcF0KICAgICAgICAgICAgICAgID8gdGhpcyQxLnJhdGlvKGRpbWVuc2lvbnMsIHByb3AsIG1heERpbWVuc2lvbnNbcHJvcF0pCiAgICAgICAgICAgICAgICA6IGRpbWVuc2lvbnM7IH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiBkaW1lbnNpb25zOwogICAgICAgIH0sCgogICAgICAgIGNvdmVyOiBmdW5jdGlvbihkaW1lbnNpb25zLCBtYXhEaW1lbnNpb25zKSB7CiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKICAgICAgICAgICAgZGltZW5zaW9ucyA9IHRoaXMuY29udGFpbihkaW1lbnNpb25zLCBtYXhEaW1lbnNpb25zKTsKCiAgICAgICAgICAgIGVhY2goZGltZW5zaW9ucywgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGRpbWVuc2lvbnMgPSBkaW1lbnNpb25zW3Byb3BdIDwgbWF4RGltZW5zaW9uc1twcm9wXQogICAgICAgICAgICAgICAgPyB0aGlzJDEucmF0aW8oZGltZW5zaW9ucywgcHJvcCwgbWF4RGltZW5zaW9uc1twcm9wXSkKICAgICAgICAgICAgICAgIDogZGltZW5zaW9uczsgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuIGRpbWVuc2lvbnM7CiAgICAgICAgfQoKICAgIH07CgogICAgZnVuY3Rpb24gYXR0cihlbGVtZW50LCBuYW1lLCB2YWx1ZSkgewoKICAgICAgICBpZiAoaXNPYmplY3QobmFtZSkpIHsKICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIG5hbWUpIHsKICAgICAgICAgICAgICAgIGF0dHIoZWxlbWVudCwga2V5LCBuYW1lW2tleV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHsKICAgICAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTsKICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUobmFtZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdG9Ob2RlcyhlbGVtZW50KS5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7CgogICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5jYWxsKGVsZW1lbnQsIGF0dHIoZWxlbWVudCwgbmFtZSkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHJlbW92ZUF0dHIoZWxlbWVudCwgbmFtZSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgIH0KCiAgICBmdW5jdGlvbiBoYXNBdHRyKGVsZW1lbnQsIG5hbWUpIHsKICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShuYW1lKTsgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gcmVtb3ZlQXR0cihlbGVtZW50LCBuYW1lKSB7CiAgICAgICAgZWxlbWVudCA9IHRvTm9kZXMoZWxlbWVudCk7CiAgICAgICAgbmFtZS5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIGVsZW1lbnQuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUobmFtZSkgJiYgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7IH0KICAgICAgICAgICAgKTsgfQogICAgICAgICk7CiAgICB9CgogICAgZnVuY3Rpb24gZGF0YShlbGVtZW50LCBhdHRyaWJ1dGUpIHsKICAgICAgICBmb3IgKHZhciBpID0gMCwgYXR0cnMgPSBbYXR0cmlidXRlLCAoImRhdGEtIiArIGF0dHJpYnV0ZSldOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGhhc0F0dHIoZWxlbWVudCwgYXR0cnNbaV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXR0cihlbGVtZW50LCBhdHRyc1tpXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyogZ2xvYmFsIERvY3VtZW50VG91Y2ggKi8KCiAgICB2YXIgaXNJRSA9IC9tc2llfHRyaWRlbnQvaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTsKICAgIHZhciBpc1J0bCA9IGF0dHIoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnZGlyJykgPT09ICdydGwnOwoKICAgIHZhciBoYXNUb3VjaEV2ZW50cyA9ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdzsKICAgIHZhciBoYXNQb2ludGVyRXZlbnRzID0gd2luZG93LlBvaW50ZXJFdmVudDsKICAgIHZhciBoYXNUb3VjaCA9IGhhc1RvdWNoRXZlbnRzCiAgICAgICAgfHwgd2luZG93LkRvY3VtZW50VG91Y2ggJiYgZG9jdW1lbnQgaW5zdGFuY2VvZiBEb2N1bWVudFRvdWNoCiAgICAgICAgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzOyAvLyBJRSA+PTExCgogICAgdmFyIHBvaW50ZXJEb3duID0gaGFzUG9pbnRlckV2ZW50cyA/ICdwb2ludGVyZG93bicgOiBoYXNUb3VjaEV2ZW50cyA/ICd0b3VjaHN0YXJ0JyA6ICdtb3VzZWRvd24nOwogICAgdmFyIHBvaW50ZXJNb3ZlID0gaGFzUG9pbnRlckV2ZW50cyA/ICdwb2ludGVybW92ZScgOiBoYXNUb3VjaEV2ZW50cyA/ICd0b3VjaG1vdmUnIDogJ21vdXNlbW92ZSc7CiAgICB2YXIgcG9pbnRlclVwID0gaGFzUG9pbnRlckV2ZW50cyA/ICdwb2ludGVydXAnIDogaGFzVG91Y2hFdmVudHMgPyAndG91Y2hlbmQnIDogJ21vdXNldXAnOwogICAgdmFyIHBvaW50ZXJFbnRlciA9IGhhc1BvaW50ZXJFdmVudHMgPyAncG9pbnRlcmVudGVyJyA6IGhhc1RvdWNoRXZlbnRzID8gJycgOiAnbW91c2VlbnRlcic7CiAgICB2YXIgcG9pbnRlckxlYXZlID0gaGFzUG9pbnRlckV2ZW50cyA/ICdwb2ludGVybGVhdmUnIDogaGFzVG91Y2hFdmVudHMgPyAnJyA6ICdtb3VzZWxlYXZlJzsKICAgIHZhciBwb2ludGVyQ2FuY2VsID0gaGFzUG9pbnRlckV2ZW50cyA/ICdwb2ludGVyY2FuY2VsJyA6ICd0b3VjaGNhbmNlbCc7CgogICAgZnVuY3Rpb24gcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQpIHsKICAgICAgICByZXR1cm4gdG9Ob2RlKHNlbGVjdG9yKSB8fCBmaW5kKHNlbGVjdG9yLCBnZXRDb250ZXh0KHNlbGVjdG9yLCBjb250ZXh0KSk7CiAgICB9CgogICAgZnVuY3Rpb24gcXVlcnlBbGwoc2VsZWN0b3IsIGNvbnRleHQpIHsKICAgICAgICB2YXIgbm9kZXMgPSB0b05vZGVzKHNlbGVjdG9yKTsKICAgICAgICByZXR1cm4gbm9kZXMubGVuZ3RoICYmIG5vZGVzIHx8IGZpbmRBbGwoc2VsZWN0b3IsIGdldENvbnRleHQoc2VsZWN0b3IsIGNvbnRleHQpKTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRDb250ZXh0KHNlbGVjdG9yLCBjb250ZXh0KSB7CiAgICAgICAgaWYgKCBjb250ZXh0ID09PSB2b2lkIDAgKSBjb250ZXh0ID0gZG9jdW1lbnQ7CgogICAgICAgIHJldHVybiBpc0NvbnRleHRTZWxlY3RvcihzZWxlY3RvcikgfHwgaXNEb2N1bWVudChjb250ZXh0KQogICAgICAgICAgICA/IGNvbnRleHQKICAgICAgICAgICAgOiBjb250ZXh0Lm93bmVyRG9jdW1lbnQ7CiAgICB9CgogICAgZnVuY3Rpb24gZmluZChzZWxlY3RvciwgY29udGV4dCkgewogICAgICAgIHJldHVybiB0b05vZGUoX3F1ZXJ5KHNlbGVjdG9yLCBjb250ZXh0LCAncXVlcnlTZWxlY3RvcicpKTsKICAgIH0KCiAgICBmdW5jdGlvbiBmaW5kQWxsKHNlbGVjdG9yLCBjb250ZXh0KSB7CiAgICAgICAgcmV0dXJuIHRvTm9kZXMoX3F1ZXJ5KHNlbGVjdG9yLCBjb250ZXh0LCAncXVlcnlTZWxlY3RvckFsbCcpKTsKICAgIH0KCiAgICBmdW5jdGlvbiBfcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQsIHF1ZXJ5Rm4pIHsKICAgICAgICBpZiAoIGNvbnRleHQgPT09IHZvaWQgMCApIGNvbnRleHQgPSBkb2N1bWVudDsKCgogICAgICAgIGlmICghc2VsZWN0b3IgfHwgIWlzU3RyaW5nKHNlbGVjdG9yKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3IucmVwbGFjZShjb250ZXh0U2FuaXRpemVSZSwgJyQxIConKTsKCiAgICAgICAgdmFyIHJlbW92ZXM7CgogICAgICAgIGlmIChpc0NvbnRleHRTZWxlY3RvcihzZWxlY3RvcikpIHsKCiAgICAgICAgICAgIHJlbW92ZXMgPSBbXTsKCiAgICAgICAgICAgIHNlbGVjdG9yID0gc3BsaXRTZWxlY3RvcihzZWxlY3RvcikubWFwKGZ1bmN0aW9uIChzZWxlY3RvciwgaSkgewoKICAgICAgICAgICAgICAgIHZhciBjdHggPSBjb250ZXh0OwoKICAgICAgICAgICAgICAgIGlmIChzZWxlY3RvclswXSA9PT0gJyEnKSB7CgogICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvcnMgPSBzZWxlY3Rvci5zdWJzdHIoMSkudHJpbSgpLnNwbGl0KCcgJyk7CiAgICAgICAgICAgICAgICAgICAgY3R4ID0gY2xvc2VzdChjb250ZXh0LnBhcmVudE5vZGUsIHNlbGVjdG9yc1swXSk7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3RvcnMuc2xpY2UoMSkuam9pbignICcpLnRyaW0oKTsKCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yWzBdID09PSAnLScpIHsKCiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9ycyQxID0gc2VsZWN0b3Iuc3Vic3RyKDEpLnRyaW0oKS5zcGxpdCgnICcpOwogICAgICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gKGN0eCB8fCBjb250ZXh0KS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOwogICAgICAgICAgICAgICAgICAgIGN0eCA9IG1hdGNoZXMocHJldiwgc2VsZWN0b3Iuc3Vic3RyKDEpKSA/IHByZXYgOiBudWxsOwogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3JzJDEuc2xpY2UoMSkuam9pbignICcpOwoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIWN0eCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICghY3R4LmlkKSB7CiAgICAgICAgICAgICAgICAgICAgY3R4LmlkID0gInVrLSIgKyAoRGF0ZS5ub3coKSkgKyBpOwogICAgICAgICAgICAgICAgICAgIHJlbW92ZXMucHVzaChmdW5jdGlvbiAoKSB7IHJldHVybiByZW1vdmVBdHRyKGN0eCwgJ2lkJyk7IH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAoIiMiICsgKGVzY2FwZShjdHguaWQpKSArICIgIiArIHNlbGVjdG9yKTsKCiAgICAgICAgICAgIH0pLmZpbHRlcihCb29sZWFuKS5qb2luKCcsJyk7CgogICAgICAgICAgICBjb250ZXh0ID0gZG9jdW1lbnQ7CgogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKCiAgICAgICAgICAgIHJldHVybiBjb250ZXh0W3F1ZXJ5Rm5dKHNlbGVjdG9yKTsKCiAgICAgICAgfSBjYXRjaCAoZSkgewoKICAgICAgICAgICAgcmV0dXJuIG51bGw7CgogICAgICAgIH0gZmluYWxseSB7CgogICAgICAgICAgICByZW1vdmVzICYmIHJlbW92ZXMuZm9yRWFjaChmdW5jdGlvbiAocmVtb3ZlKSB7IHJldHVybiByZW1vdmUoKTsgfSk7CgogICAgICAgIH0KCiAgICB9CgogICAgdmFyIGNvbnRleHRTZWxlY3RvclJlID0gLyhefFteXFxdLClccypbIT4rfi1dLzsKICAgIHZhciBjb250ZXh0U2FuaXRpemVSZSA9IC8oWyE+K34tXSkoPz1ccytbIT4rfi1dfFxzKiQpL2c7CgogICAgZnVuY3Rpb24gaXNDb250ZXh0U2VsZWN0b3Ioc2VsZWN0b3IpIHsKICAgICAgICByZXR1cm4gaXNTdHJpbmcoc2VsZWN0b3IpICYmIHNlbGVjdG9yLm1hdGNoKGNvbnRleHRTZWxlY3RvclJlKTsKICAgIH0KCiAgICB2YXIgc2VsZWN0b3JSZSA9IC8uKj9bXlxcXSg/Oix8JCkvZzsKCiAgICBmdW5jdGlvbiBzcGxpdFNlbGVjdG9yKHNlbGVjdG9yKSB7CiAgICAgICAgcmV0dXJuIHNlbGVjdG9yLm1hdGNoKHNlbGVjdG9yUmUpLm1hcChmdW5jdGlvbiAoc2VsZWN0b3IpIHsgcmV0dXJuIHNlbGVjdG9yLnJlcGxhY2UoLywkLywgJycpLnRyaW0oKTsgfSk7CiAgICB9CgogICAgdmFyIGVsUHJvdG8gPSBFbGVtZW50LnByb3RvdHlwZTsKICAgIHZhciBtYXRjaGVzRm4gPSBlbFByb3RvLm1hdGNoZXMgfHwgZWxQcm90by53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHwgZWxQcm90by5tc01hdGNoZXNTZWxlY3RvcjsKCiAgICBmdW5jdGlvbiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKSB7CiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gbWF0Y2hlc0ZuLmNhbGwoZWxlbWVudCwgc2VsZWN0b3IpOyB9KTsKICAgIH0KCiAgICB2YXIgY2xvc2VzdEZuID0gZWxQcm90by5jbG9zZXN0IHx8IGZ1bmN0aW9uIChzZWxlY3RvcikgewogICAgICAgIHZhciBhbmNlc3RvciA9IHRoaXM7CgogICAgICAgIGRvIHsKCiAgICAgICAgICAgIGlmIChtYXRjaGVzKGFuY2VzdG9yLCBzZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhbmNlc3RvcjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnROb2RlOwoKICAgICAgICB9IHdoaWxlIChhbmNlc3RvciAmJiBhbmNlc3Rvci5ub2RlVHlwZSA9PT0gMSk7CiAgICB9OwoKICAgIGZ1bmN0aW9uIGNsb3Nlc3QoZWxlbWVudCwgc2VsZWN0b3IpIHsKCiAgICAgICAgaWYgKHN0YXJ0c1dpdGgoc2VsZWN0b3IsICc+JykpIHsKICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSgxKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpc05vZGUoZWxlbWVudCkKICAgICAgICAgICAgPyBjbG9zZXN0Rm4uY2FsbChlbGVtZW50LCBzZWxlY3RvcikKICAgICAgICAgICAgOiB0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gY2xvc2VzdChlbGVtZW50LCBzZWxlY3Rvcik7IH0pLmZpbHRlcihCb29sZWFuKTsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJlbnRzKGVsZW1lbnQsIHNlbGVjdG9yKSB7CiAgICAgICAgdmFyIGVsZW1lbnRzID0gW107CiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTsKCiAgICAgICAgd2hpbGUgKChlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKSAmJiBlbGVtZW50Lm5vZGVUeXBlID09PSAxKSB7CiAgICAgICAgICAgIGlmIChtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKSkgewogICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChlbGVtZW50KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGVsZW1lbnRzOwogICAgfQoKICAgIHZhciBlc2NhcGVGbiA9IHdpbmRvdy5DU1MgJiYgQ1NTLmVzY2FwZSB8fCBmdW5jdGlvbiAoY3NzKSB7IHJldHVybiBjc3MucmVwbGFjZSgvKFteXHg3Zi1cdUZGRkZcdy1dKS9nLCBmdW5jdGlvbiAobWF0Y2gpIHsgcmV0dXJuICgiXFwiICsgbWF0Y2gpOyB9KTsgfTsKICAgIGZ1bmN0aW9uIGVzY2FwZShjc3MpIHsKICAgICAgICByZXR1cm4gaXNTdHJpbmcoY3NzKSA/IGVzY2FwZUZuLmNhbGwobnVsbCwgY3NzKSA6ICcnOwogICAgfQoKICAgIHZhciB2b2lkRWxlbWVudHMgPSB7CiAgICAgICAgYXJlYTogdHJ1ZSwKICAgICAgICBiYXNlOiB0cnVlLAogICAgICAgIGJyOiB0cnVlLAogICAgICAgIGNvbDogdHJ1ZSwKICAgICAgICBlbWJlZDogdHJ1ZSwKICAgICAgICBocjogdHJ1ZSwKICAgICAgICBpbWc6IHRydWUsCiAgICAgICAgaW5wdXQ6IHRydWUsCiAgICAgICAga2V5Z2VuOiB0cnVlLAogICAgICAgIGxpbms6IHRydWUsCiAgICAgICAgbWVudWl0ZW06IHRydWUsCiAgICAgICAgbWV0YTogdHJ1ZSwKICAgICAgICBwYXJhbTogdHJ1ZSwKICAgICAgICBzb3VyY2U6IHRydWUsCiAgICAgICAgdHJhY2s6IHRydWUsCiAgICAgICAgd2JyOiB0cnVlCiAgICB9OwogICAgZnVuY3Rpb24gaXNWb2lkRWxlbWVudChlbGVtZW50KSB7CiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gdm9pZEVsZW1lbnRzW2VsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpXTsgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gaXNWaXNpYmxlKGVsZW1lbnQpIHsKICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg7IH0pOwogICAgfQoKICAgIHZhciBzZWxJbnB1dCA9ICdpbnB1dCxzZWxlY3QsdGV4dGFyZWEsYnV0dG9uJzsKICAgIGZ1bmN0aW9uIGlzSW5wdXQoZWxlbWVudCkgewogICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCwgc2VsSW5wdXQpOyB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBmaWx0ZXIoZWxlbWVudCwgc2VsZWN0b3IpIHsKICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3IpOyB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiB3aXRoaW4oZWxlbWVudCwgc2VsZWN0b3IpIHsKICAgICAgICByZXR1cm4gIWlzU3RyaW5nKHNlbGVjdG9yKQogICAgICAgICAgICA/IGVsZW1lbnQgPT09IHNlbGVjdG9yIHx8IChpc0RvY3VtZW50KHNlbGVjdG9yKQogICAgICAgICAgICAgICAgPyBzZWxlY3Rvci5kb2N1bWVudEVsZW1lbnQKICAgICAgICAgICAgICAgIDogdG9Ob2RlKHNlbGVjdG9yKSkuY29udGFpbnModG9Ob2RlKGVsZW1lbnQpKSAvLyBJRSAxMSBkb2N1bWVudCBkb2VzIG5vdCBpbXBsZW1lbnQgY29udGFpbnMKICAgICAgICAgICAgOiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKSB8fCBjbG9zZXN0KGVsZW1lbnQsIHNlbGVjdG9yKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbigpIHsKICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOwogICAgICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07CgoKICAgICAgICB2YXIgcmVmID0gZ2V0QXJncyhhcmdzKTsKICAgICAgICB2YXIgdGFyZ2V0cyA9IHJlZlswXTsKICAgICAgICB2YXIgdHlwZSA9IHJlZlsxXTsKICAgICAgICB2YXIgc2VsZWN0b3IgPSByZWZbMl07CiAgICAgICAgdmFyIGxpc3RlbmVyID0gcmVmWzNdOwogICAgICAgIHZhciB1c2VDYXB0dXJlID0gcmVmWzRdOwoKICAgICAgICB0YXJnZXRzID0gdG9FdmVudFRhcmdldHModGFyZ2V0cyk7CgogICAgICAgIGlmIChsaXN0ZW5lci5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgIGxpc3RlbmVyID0gZGV0YWlsKGxpc3RlbmVyKTsKICAgICAgICB9CgogICAgICAgIGlmIChzZWxlY3RvcikgewogICAgICAgICAgICBsaXN0ZW5lciA9IGRlbGVnYXRlKHRhcmdldHMsIHNlbGVjdG9yLCBsaXN0ZW5lcik7CiAgICAgICAgfQoKICAgICAgICBpZiAodXNlQ2FwdHVyZSAmJiB1c2VDYXB0dXJlLnNlbGYpIHsKICAgICAgICAgICAgbGlzdGVuZXIgPSBzZWxmRmlsdGVyKGxpc3RlbmVyKTsKICAgICAgICB9CgogICAgICAgIHVzZUNhcHR1cmUgPSB1c2VDYXB0dXJlRmlsdGVyKHVzZUNhcHR1cmUpOwoKICAgICAgICB0eXBlLnNwbGl0KCcgJykuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkgeyByZXR1cm4gdGFyZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uICh0YXJnZXQpIHsgcmV0dXJuIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsgfQogICAgICAgICAgICApOyB9CiAgICAgICAgKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gb2ZmKHRhcmdldHMsIHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBvZmYodGFyZ2V0cywgdHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpIHsKICAgICAgICBpZiAoIHVzZUNhcHR1cmUgPT09IHZvaWQgMCApIHVzZUNhcHR1cmUgPSBmYWxzZTsKCiAgICAgICAgdXNlQ2FwdHVyZSA9IHVzZUNhcHR1cmVGaWx0ZXIodXNlQ2FwdHVyZSk7CiAgICAgICAgdGFyZ2V0cyA9IHRvRXZlbnRUYXJnZXRzKHRhcmdldHMpOwogICAgICAgIHR5cGUuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiB0YXJnZXRzLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldCkgeyByZXR1cm4gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOyB9CiAgICAgICAgICAgICk7IH0KICAgICAgICApOwogICAgfQoKICAgIGZ1bmN0aW9uIG9uY2UoKSB7CiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDsKICAgICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdOwoKCiAgICAgICAgdmFyIHJlZiA9IGdldEFyZ3MoYXJncyk7CiAgICAgICAgdmFyIGVsZW1lbnQgPSByZWZbMF07CiAgICAgICAgdmFyIHR5cGUgPSByZWZbMV07CiAgICAgICAgdmFyIHNlbGVjdG9yID0gcmVmWzJdOwogICAgICAgIHZhciBsaXN0ZW5lciA9IHJlZlszXTsKICAgICAgICB2YXIgdXNlQ2FwdHVyZSA9IHJlZls0XTsKICAgICAgICB2YXIgY29uZGl0aW9uID0gcmVmWzVdOwogICAgICAgIHZhciBvZmYgPSBvbihlbGVtZW50LCB0eXBlLCBzZWxlY3RvciwgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgdmFyIHJlc3VsdCA9ICFjb25kaXRpb24gfHwgY29uZGl0aW9uKGUpOwogICAgICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICAgICBvZmYoKTsKICAgICAgICAgICAgICAgIGxpc3RlbmVyKGUsIHJlc3VsdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9LCB1c2VDYXB0dXJlKTsKCiAgICAgICAgcmV0dXJuIG9mZjsKICAgIH0KCiAgICBmdW5jdGlvbiB0cmlnZ2VyKHRhcmdldHMsIGV2ZW50LCBkZXRhaWwpIHsKICAgICAgICByZXR1cm4gdG9FdmVudFRhcmdldHModGFyZ2V0cykucmVkdWNlKGZ1bmN0aW9uIChub3RDYW5jZWxlZCwgdGFyZ2V0KSB7IHJldHVybiBub3RDYW5jZWxlZCAmJiB0YXJnZXQuZGlzcGF0Y2hFdmVudChjcmVhdGVFdmVudChldmVudCwgdHJ1ZSwgdHJ1ZSwgZGV0YWlsKSk7IH0KICAgICAgICAgICAgLCB0cnVlKTsKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVFdmVudChlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXRhaWwpIHsKICAgICAgICBpZiAoIGJ1YmJsZXMgPT09IHZvaWQgMCApIGJ1YmJsZXMgPSB0cnVlOwogICAgICAgIGlmICggY2FuY2VsYWJsZSA9PT0gdm9pZCAwICkgY2FuY2VsYWJsZSA9IGZhbHNlOwoKICAgICAgICBpZiAoaXNTdHJpbmcoZSkpIHsKICAgICAgICAgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7IC8vIElFIDExCiAgICAgICAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudChlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXRhaWwpOwogICAgICAgICAgICBlID0gZXZlbnQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRBcmdzKGFyZ3MpIHsKICAgICAgICBpZiAoaXNGdW5jdGlvbihhcmdzWzJdKSkgewogICAgICAgICAgICBhcmdzLnNwbGljZSgyLCAwLCBmYWxzZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBhcmdzOwogICAgfQoKICAgIGZ1bmN0aW9uIGRlbGVnYXRlKGRlbGVnYXRlcywgc2VsZWN0b3IsIGxpc3RlbmVyKSB7CiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgogICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkgewoKICAgICAgICAgICAgZGVsZWdhdGVzLmZvckVhY2goZnVuY3Rpb24gKGRlbGVnYXRlKSB7CgogICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBzZWxlY3RvclswXSA9PT0gJz4nCiAgICAgICAgICAgICAgICAgICAgPyBmaW5kQWxsKHNlbGVjdG9yLCBkZWxlZ2F0ZSkucmV2ZXJzZSgpLmZpbHRlcihmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gd2l0aGluKGUudGFyZ2V0LCBlbGVtZW50KTsgfSlbMF0KICAgICAgICAgICAgICAgICAgICA6IGNsb3Nlc3QoZS50YXJnZXQsIHNlbGVjdG9yKTsKCiAgICAgICAgICAgICAgICBpZiAoY3VycmVudCkgewogICAgICAgICAgICAgICAgICAgIGUuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnQgPSBjdXJyZW50OwoKICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci5jYWxsKHRoaXMkMSwgZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9KTsKCiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBkZXRhaWwobGlzdGVuZXIpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGlzQXJyYXkoZS5kZXRhaWwpID8gbGlzdGVuZXIuYXBwbHkodm9pZCAwLCBbZV0uY29uY2F0KGUuZGV0YWlsKSkgOiBsaXN0ZW5lcihlKTsgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBzZWxmRmlsdGVyKGxpc3RlbmVyKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGlmIChlLnRhcmdldCA9PT0gZS5jdXJyZW50VGFyZ2V0IHx8IGUudGFyZ2V0ID09PSBlLmN1cnJlbnQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lci5jYWxsKG51bGwsIGUpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiB1c2VDYXB0dXJlRmlsdGVyKG9wdGlvbnMpIHsKICAgICAgICByZXR1cm4gb3B0aW9ucyAmJiBpc0lFICYmICFpc0Jvb2xlYW4ob3B0aW9ucykKICAgICAgICAgICAgPyAhIW9wdGlvbnMuY2FwdHVyZQogICAgICAgICAgICA6IG9wdGlvbnM7CiAgICB9CgogICAgZnVuY3Rpb24gaXNFdmVudFRhcmdldCh0YXJnZXQpIHsKICAgICAgICByZXR1cm4gdGFyZ2V0ICYmICdhZGRFdmVudExpc3RlbmVyJyBpbiB0YXJnZXQ7CiAgICB9CgogICAgZnVuY3Rpb24gdG9FdmVudFRhcmdldCh0YXJnZXQpIHsKICAgICAgICByZXR1cm4gaXNFdmVudFRhcmdldCh0YXJnZXQpID8gdGFyZ2V0IDogdG9Ob2RlKHRhcmdldCk7CiAgICB9CgogICAgZnVuY3Rpb24gdG9FdmVudFRhcmdldHModGFyZ2V0KSB7CiAgICAgICAgcmV0dXJuIGlzQXJyYXkodGFyZ2V0KQogICAgICAgICAgICAgICAgPyB0YXJnZXQubWFwKHRvRXZlbnRUYXJnZXQpLmZpbHRlcihCb29sZWFuKQogICAgICAgICAgICAgICAgOiBpc1N0cmluZyh0YXJnZXQpCiAgICAgICAgICAgICAgICAgICAgPyBmaW5kQWxsKHRhcmdldCkKICAgICAgICAgICAgICAgICAgICA6IGlzRXZlbnRUYXJnZXQodGFyZ2V0KQogICAgICAgICAgICAgICAgICAgICAgICA/IFt0YXJnZXRdCiAgICAgICAgICAgICAgICAgICAgICAgIDogdG9Ob2Rlcyh0YXJnZXQpOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzVG91Y2goZSkgewogICAgICAgIHJldHVybiBlLnBvaW50ZXJUeXBlID09PSAndG91Y2gnIHx8ICEhZS50b3VjaGVzOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldEV2ZW50UG9zKGUsIHByb3ApIHsKICAgICAgICBpZiAoIHByb3AgPT09IHZvaWQgMCApIHByb3AgPSAnY2xpZW50JzsKCiAgICAgICAgdmFyIHRvdWNoZXMgPSBlLnRvdWNoZXM7CiAgICAgICAgdmFyIGNoYW5nZWRUb3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlczsKICAgICAgICB2YXIgcmVmID0gdG91Y2hlcyAmJiB0b3VjaGVzWzBdIHx8IGNoYW5nZWRUb3VjaGVzICYmIGNoYW5nZWRUb3VjaGVzWzBdIHx8IGU7CiAgICAgICAgdmFyIHggPSByZWZbKHByb3AgKyAiWCIpXTsKICAgICAgICB2YXIgeSA9IHJlZlsocHJvcCArICJZIildOwoKICAgICAgICByZXR1cm4ge3g6IHgsIHk6IHl9OwogICAgfQoKICAgIC8qIGdsb2JhbCBzZXRJbW1lZGlhdGUgKi8KCiAgICB2YXIgUHJvbWlzZSA9ICdQcm9taXNlJyBpbiB3aW5kb3cgPyB3aW5kb3cuUHJvbWlzZSA6IFByb21pc2VGbjsKCiAgICB2YXIgRGVmZXJyZWQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCiAgICAgICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICB0aGlzJDEucmVqZWN0ID0gcmVqZWN0OwogICAgICAgICAgICB0aGlzJDEucmVzb2x2ZSA9IHJlc29sdmU7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogUHJvbWlzZXMvQSsgcG9seWZpbGwgdjEuMS40IChodHRwczovL2dpdGh1Yi5jb20vYnJhbXN0ZWluL3Byb21pcykKICAgICAqLwoKICAgIHZhciBSRVNPTFZFRCA9IDA7CiAgICB2YXIgUkVKRUNURUQgPSAxOwogICAgdmFyIFBFTkRJTkcgPSAyOwoKICAgIHZhciBhc3luYyA9ICdzZXRJbW1lZGlhdGUnIGluIHdpbmRvdyA/IHNldEltbWVkaWF0ZSA6IHNldFRpbWVvdXQ7CgogICAgZnVuY3Rpb24gUHJvbWlzZUZuKGV4ZWN1dG9yKSB7CgogICAgICAgIHRoaXMuc3RhdGUgPSBQRU5ESU5HOwogICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7CiAgICAgICAgdGhpcy5kZWZlcnJlZCA9IFtdOwoKICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXM7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGV4ZWN1dG9yKAogICAgICAgICAgICAgICAgZnVuY3Rpb24gKHgpIHsKICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoeCk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZnVuY3Rpb24gKHIpIHsKICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KGUpOwogICAgICAgIH0KICAgIH0KCiAgICBQcm9taXNlRm4ucmVqZWN0ID0gZnVuY3Rpb24gKHIpIHsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2VGbihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgIHJlamVjdChyKTsKICAgICAgICB9KTsKICAgIH07CgogICAgUHJvbWlzZUZuLnJlc29sdmUgPSBmdW5jdGlvbiAoeCkgewogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgcmVzb2x2ZSh4KTsKICAgICAgICB9KTsKICAgIH07CgogICAgUHJvbWlzZUZuLmFsbCA9IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkgewogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwogICAgICAgICAgICB2YXIgY291bnQgPSAwOwoKICAgICAgICAgICAgaWYgKGl0ZXJhYmxlLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiByZXNvbHZlcihpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSB4OwogICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IDE7CgogICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PT0gaXRlcmFibGUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZXJhYmxlLmxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICBQcm9taXNlRm4ucmVzb2x2ZShpdGVyYWJsZVtpXSkudGhlbihyZXNvbHZlcihpKSwgcmVqZWN0KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfTsKCiAgICBQcm9taXNlRm4ucmFjZSA9IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2VGbihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmFibGUubGVuZ3RoOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgIFByb21pc2VGbi5yZXNvbHZlKGl0ZXJhYmxlW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH07CgogICAgdmFyIHAgPSBQcm9taXNlRm4ucHJvdG90eXBlOwoKICAgIHAucmVzb2x2ZSA9IGZ1bmN0aW9uIHJlc29sdmUoeCkgewogICAgICAgIHZhciBwcm9taXNlID0gdGhpczsKCiAgICAgICAgaWYgKHByb21pc2Uuc3RhdGUgPT09IFBFTkRJTkcpIHsKICAgICAgICAgICAgaWYgKHggPT09IHByb21pc2UpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2Ugc2V0dGxlZCB3aXRoIGl0c2VsZi4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGNhbGxlZCA9IGZhbHNlOwoKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciB0aGVuID0geCAmJiB4LnRoZW47CgogICAgICAgICAgICAgICAgaWYgKHggIT09IG51bGwgJiYgaXNPYmplY3QoeCkgJiYgaXNGdW5jdGlvbih0aGVuKSkgewogICAgICAgICAgICAgICAgICAgIHRoZW4uY2FsbCgKICAgICAgICAgICAgICAgICAgICAgICAgeCwKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qocik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7CiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHByb21pc2Uuc3RhdGUgPSBSRVNPTFZFRDsKICAgICAgICAgICAgcHJvbWlzZS52YWx1ZSA9IHg7CiAgICAgICAgICAgIHByb21pc2Uubm90aWZ5KCk7CiAgICAgICAgfQogICAgfTsKCiAgICBwLnJlamVjdCA9IGZ1bmN0aW9uIHJlamVjdChyZWFzb24pIHsKICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXM7CgogICAgICAgIGlmIChwcm9taXNlLnN0YXRlID09PSBQRU5ESU5HKSB7CiAgICAgICAgICAgIGlmIChyZWFzb24gPT09IHByb21pc2UpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2Ugc2V0dGxlZCB3aXRoIGl0c2VsZi4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHJvbWlzZS5zdGF0ZSA9IFJFSkVDVEVEOwogICAgICAgICAgICBwcm9taXNlLnZhbHVlID0gcmVhc29uOwogICAgICAgICAgICBwcm9taXNlLm5vdGlmeSgpOwogICAgICAgIH0KICAgIH07CgogICAgcC5ub3RpZnkgPSBmdW5jdGlvbiBub3RpZnkoKSB7CiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgogICAgICAgIGFzeW5jKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKHRoaXMkMS5zdGF0ZSAhPT0gUEVORElORykgewogICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMkMS5kZWZlcnJlZC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcyQxLmRlZmVycmVkLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG9uUmVzb2x2ZWQgPSByZWZbMF07CiAgICAgICAgICAgICAgICAgICAgdmFyIG9uUmVqZWN0ZWQgPSByZWZbMV07CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc29sdmUgPSByZWZbMl07CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlamVjdCA9IHJlZlszXTsKCiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5zdGF0ZSA9PT0gUkVTT0xWRUQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uUmVzb2x2ZWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvblJlc29sdmVkLmNhbGwodW5kZWZpbmVkLCB0aGlzJDEudmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzJDEudmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMkMS5zdGF0ZSA9PT0gUkVKRUNURUQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uUmVqZWN0ZWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvblJlamVjdGVkLmNhbGwodW5kZWZpbmVkLCB0aGlzJDEudmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHRoaXMkMS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH07CgogICAgcC50aGVuID0gZnVuY3Rpb24gdGhlbihvblJlc29sdmVkLCBvblJlamVjdGVkKSB7CiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgdGhpcyQxLmRlZmVycmVkLnB1c2goW29uUmVzb2x2ZWQsIG9uUmVqZWN0ZWQsIHJlc29sdmUsIHJlamVjdF0pOwogICAgICAgICAgICB0aGlzJDEubm90aWZ5KCk7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIHAuY2F0Y2ggPSBmdW5jdGlvbiAob25SZWplY3RlZCkgewogICAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTsKICAgIH07CgogICAgZnVuY3Rpb24gYWpheCh1cmwsIG9wdGlvbnMpIHsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewoKICAgICAgICAgICAgdmFyIGVudiA9IGFzc2lnbih7CiAgICAgICAgICAgICAgICBkYXRhOiBudWxsLAogICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJywKICAgICAgICAgICAgICAgIGhlYWRlcnM6IHt9LAogICAgICAgICAgICAgICAgeGhyOiBuZXcgWE1MSHR0cFJlcXVlc3QoKSwKICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQ6IG5vb3AsCiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICcnCiAgICAgICAgICAgIH0sIG9wdGlvbnMpOwoKICAgICAgICAgICAgZW52LmJlZm9yZVNlbmQoZW52KTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBlbnYueGhyOwoKICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBlbnYpIHsKICAgICAgICAgICAgICAgIGlmIChwcm9wIGluIHhocikgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CgogICAgICAgICAgICAgICAgICAgICAgICB4aHJbcHJvcF0gPSBlbnZbcHJvcF07CgogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHhoci5vcGVuKGVudi5tZXRob2QudG9VcHBlckNhc2UoKSwgdXJsKTsKCiAgICAgICAgICAgIGZvciAodmFyIGhlYWRlciBpbiBlbnYuaGVhZGVycykgewogICAgICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoaGVhZGVyLCBlbnYuaGVhZGVyc1toZWFkZXJdKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgb24oeGhyLCAnbG9hZCcsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMCB8fCB4aHIuc3RhdHVzID49IDIwMCAmJiB4aHIuc3RhdHVzIDwgMzAwIHx8IHhoci5zdGF0dXMgPT09IDMwNCkgewogICAgICAgICAgICAgICAgICAgIHJlc29sdmUoeGhyKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGFzc2lnbihFcnJvcih4aHIuc3RhdHVzVGV4dCksIHsKICAgICAgICAgICAgICAgICAgICAgICAgeGhyOiB4aHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogeGhyLnN0YXR1cwogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgb24oeGhyLCAnZXJyb3InLCBmdW5jdGlvbiAoKSB7IHJldHVybiByZWplY3QoYXNzaWduKEVycm9yKCdOZXR3b3JrIEVycm9yJyksIHt4aHI6IHhocn0pKTsgfSk7CiAgICAgICAgICAgIG9uKHhociwgJ3RpbWVvdXQnLCBmdW5jdGlvbiAoKSB7IHJldHVybiByZWplY3QoYXNzaWduKEVycm9yKCdOZXR3b3JrIFRpbWVvdXQnKSwge3hocjogeGhyfSkpOyB9KTsKCiAgICAgICAgICAgIHhoci5zZW5kKGVudi5kYXRhKTsKICAgICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRJbWFnZShzcmMsIHNyY3NldCwgc2l6ZXMpIHsKCiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpOwoKICAgICAgICAgICAgaW1nLm9uZXJyb3IgPSByZWplY3Q7CiAgICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlKGltZyk7IH07CgogICAgICAgICAgICBzaXplcyAmJiAoaW1nLnNpemVzID0gc2l6ZXMpOwogICAgICAgICAgICBzcmNzZXQgJiYgKGltZy5zcmNzZXQgPSBzcmNzZXQpOwogICAgICAgICAgICBpbWcuc3JjID0gc3JjOwogICAgICAgIH0pOwoKICAgIH0KCiAgICBmdW5jdGlvbiByZWFkeShmbikgewoKICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2xvYWRpbmcnKSB7CiAgICAgICAgICAgIGZuKCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciB1bmJpbmQgPSBvbihkb2N1bWVudCwgJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHVuYmluZCgpOwogICAgICAgICAgICBmbigpOwogICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGluZGV4KGVsZW1lbnQsIHJlZikgewogICAgICAgIHJldHVybiByZWYKICAgICAgICAgICAgPyB0b05vZGVzKGVsZW1lbnQpLmluZGV4T2YodG9Ob2RlKHJlZikpCiAgICAgICAgICAgIDogdG9Ob2RlcygoZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KSkgJiYgZWxlbWVudC5wYXJlbnROb2RlLmNoaWxkcmVuKS5pbmRleE9mKGVsZW1lbnQpOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldEluZGV4KGksIGVsZW1lbnRzLCBjdXJyZW50LCBmaW5pdGUpIHsKICAgICAgICBpZiAoIGN1cnJlbnQgPT09IHZvaWQgMCApIGN1cnJlbnQgPSAwOwogICAgICAgIGlmICggZmluaXRlID09PSB2b2lkIDAgKSBmaW5pdGUgPSBmYWxzZTsKCgogICAgICAgIGVsZW1lbnRzID0gdG9Ob2RlcyhlbGVtZW50cyk7CgogICAgICAgIHZhciBsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7CgogICAgICAgIGkgPSBpc051bWVyaWMoaSkKICAgICAgICAgICAgPyB0b051bWJlcihpKQogICAgICAgICAgICA6IGkgPT09ICduZXh0JwogICAgICAgICAgICAgICAgPyBjdXJyZW50ICsgMQogICAgICAgICAgICAgICAgOiBpID09PSAncHJldmlvdXMnCiAgICAgICAgICAgICAgICAgICAgPyBjdXJyZW50IC0gMQogICAgICAgICAgICAgICAgICAgIDogaW5kZXgoZWxlbWVudHMsIGkpOwoKICAgICAgICBpZiAoZmluaXRlKSB7CiAgICAgICAgICAgIHJldHVybiBjbGFtcChpLCAwLCBsZW5ndGggLSAxKTsKICAgICAgICB9CgogICAgICAgIGkgJT0gbGVuZ3RoOwoKICAgICAgICByZXR1cm4gaSA8IDAgPyBpICsgbGVuZ3RoIDogaTsKICAgIH0KCiAgICBmdW5jdGlvbiBlbXB0eShlbGVtZW50KSB7CiAgICAgICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSAnJzsKICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgIH0KCiAgICBmdW5jdGlvbiBodG1sKHBhcmVudCwgaHRtbCkgewogICAgICAgIHBhcmVudCA9ICQocGFyZW50KTsKICAgICAgICByZXR1cm4gaXNVbmRlZmluZWQoaHRtbCkKICAgICAgICAgICAgPyBwYXJlbnQuaW5uZXJIVE1MCiAgICAgICAgICAgIDogYXBwZW5kKHBhcmVudC5oYXNDaGlsZE5vZGVzKCkgPyBlbXB0eShwYXJlbnQpIDogcGFyZW50LCBodG1sKTsKICAgIH0KCiAgICBmdW5jdGlvbiBwcmVwZW5kKHBhcmVudCwgZWxlbWVudCkgewoKICAgICAgICBwYXJlbnQgPSAkKHBhcmVudCk7CgogICAgICAgIGlmICghcGFyZW50Lmhhc0NoaWxkTm9kZXMoKSkgewogICAgICAgICAgICByZXR1cm4gYXBwZW5kKHBhcmVudCwgZWxlbWVudCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHBhcmVudC5maXJzdENoaWxkKTsgfSk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGFwcGVuZChwYXJlbnQsIGVsZW1lbnQpIHsKICAgICAgICBwYXJlbnQgPSAkKHBhcmVudCk7CiAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7IH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGJlZm9yZShyZWYsIGVsZW1lbnQpIHsKICAgICAgICByZWYgPSAkKHJlZik7CiAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiByZWYucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgcmVmKTsgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gYWZ0ZXIocmVmLCBlbGVtZW50KSB7CiAgICAgICAgcmVmID0gJChyZWYpOwogICAgICAgIHJldHVybiBpbnNlcnROb2RlcyhlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gcmVmLm5leHRTaWJsaW5nCiAgICAgICAgICAgID8gYmVmb3JlKHJlZi5uZXh0U2libGluZywgZWxlbWVudCkKICAgICAgICAgICAgOiBhcHBlbmQocmVmLnBhcmVudE5vZGUsIGVsZW1lbnQpOyB9CiAgICAgICAgKTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbnNlcnROb2RlcyhlbGVtZW50LCBmbikgewogICAgICAgIGVsZW1lbnQgPSBpc1N0cmluZyhlbGVtZW50KSA/IGZyYWdtZW50KGVsZW1lbnQpIDogZWxlbWVudDsKICAgICAgICByZXR1cm4gZWxlbWVudAogICAgICAgICAgICA/ICdsZW5ndGgnIGluIGVsZW1lbnQKICAgICAgICAgICAgICAgID8gdG9Ob2RlcyhlbGVtZW50KS5tYXAoZm4pCiAgICAgICAgICAgICAgICA6IGZuKGVsZW1lbnQpCiAgICAgICAgICAgIDogbnVsbDsKICAgIH0KCiAgICBmdW5jdGlvbiByZW1vdmUoZWxlbWVudCkgewogICAgICAgIHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnBhcmVudE5vZGUgJiYgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpOyB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiB3cmFwQWxsKGVsZW1lbnQsIHN0cnVjdHVyZSkgewoKICAgICAgICBzdHJ1Y3R1cmUgPSB0b05vZGUoYmVmb3JlKGVsZW1lbnQsIHN0cnVjdHVyZSkpOwoKICAgICAgICB3aGlsZSAoc3RydWN0dXJlLmZpcnN0Q2hpbGQpIHsKICAgICAgICAgICAgc3RydWN0dXJlID0gc3RydWN0dXJlLmZpcnN0Q2hpbGQ7CiAgICAgICAgfQoKICAgICAgICBhcHBlbmQoc3RydWN0dXJlLCBlbGVtZW50KTsKCiAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKICAgIH0KCiAgICBmdW5jdGlvbiB3cmFwSW5uZXIoZWxlbWVudCwgc3RydWN0dXJlKSB7CiAgICAgICAgcmV0dXJuIHRvTm9kZXModG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzQ2hpbGROb2RlcyA/IHdyYXBBbGwodG9Ob2RlcyhlbGVtZW50LmNoaWxkTm9kZXMpLCBzdHJ1Y3R1cmUpIDogYXBwZW5kKGVsZW1lbnQsIHN0cnVjdHVyZSk7IH0KICAgICAgICApKTsKICAgIH0KCiAgICBmdW5jdGlvbiB1bndyYXAoZWxlbWVudCkgewogICAgICAgIHRvTm9kZXMoZWxlbWVudCkKICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlOyB9KQogICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIHNlbGYpIHsgcmV0dXJuIHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4OyB9KQogICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAocGFyZW50KSB7CiAgICAgICAgICAgICAgICBiZWZvcmUocGFyZW50LCBwYXJlbnQuY2hpbGROb2Rlcyk7CiAgICAgICAgICAgICAgICByZW1vdmUocGFyZW50KTsKICAgICAgICAgICAgfSk7CiAgICB9CgogICAgdmFyIGZyYWdtZW50UmUgPSAvXlxzKjwoXHcrfCEpW14+XSo+LzsKICAgIHZhciBzaW5nbGVUYWdSZSA9IC9ePChcdyspXHMqXC8/Pig/OjxcL1wxPik/JC87CgogICAgZnVuY3Rpb24gZnJhZ21lbnQoaHRtbCkgewoKICAgICAgICB2YXIgbWF0Y2hlcyA9IHNpbmdsZVRhZ1JlLmV4ZWMoaHRtbCk7CiAgICAgICAgaWYgKG1hdGNoZXMpIHsKICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobWF0Y2hlc1sxXSk7CiAgICAgICAgfQoKICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgaWYgKGZyYWdtZW50UmUudGVzdChodG1sKSkgewogICAgICAgICAgICBjb250YWluZXIuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBodG1sLnRyaW0oKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29udGFpbmVyLnRleHRDb250ZW50ID0gaHRtbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBjb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGggPiAxID8gdG9Ob2Rlcyhjb250YWluZXIuY2hpbGROb2RlcykgOiBjb250YWluZXIuZmlyc3RDaGlsZDsKCiAgICB9CgogICAgZnVuY3Rpb24gYXBwbHkobm9kZSwgZm4pIHsKCiAgICAgICAgaWYgKCFub2RlIHx8IG5vZGUubm9kZVR5cGUgIT09IDEpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgZm4obm9kZSk7CiAgICAgICAgbm9kZSA9IG5vZGUuZmlyc3RFbGVtZW50Q2hpbGQ7CiAgICAgICAgd2hpbGUgKG5vZGUpIHsKICAgICAgICAgICAgYXBwbHkobm9kZSwgZm4pOwogICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0RWxlbWVudFNpYmxpbmc7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uICQoc2VsZWN0b3IsIGNvbnRleHQpIHsKICAgICAgICByZXR1cm4gIWlzU3RyaW5nKHNlbGVjdG9yKQogICAgICAgICAgICA/IHRvTm9kZShzZWxlY3RvcikKICAgICAgICAgICAgOiBpc0h0bWwoc2VsZWN0b3IpCiAgICAgICAgICAgICAgICA/IHRvTm9kZShmcmFnbWVudChzZWxlY3RvcikpCiAgICAgICAgICAgICAgICA6IGZpbmQoc2VsZWN0b3IsIGNvbnRleHQpOwogICAgfQoKICAgIGZ1bmN0aW9uICQkKHNlbGVjdG9yLCBjb250ZXh0KSB7CiAgICAgICAgcmV0dXJuICFpc1N0cmluZyhzZWxlY3RvcikKICAgICAgICAgICAgPyB0b05vZGVzKHNlbGVjdG9yKQogICAgICAgICAgICA6IGlzSHRtbChzZWxlY3RvcikKICAgICAgICAgICAgICAgID8gdG9Ob2RlcyhmcmFnbWVudChzZWxlY3RvcikpCiAgICAgICAgICAgICAgICA6IGZpbmRBbGwoc2VsZWN0b3IsIGNvbnRleHQpOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzSHRtbChzdHIpIHsKICAgICAgICByZXR1cm4gc3RyWzBdID09PSAnPCcgfHwgc3RyLm1hdGNoKC9eXHMqPC8pOwogICAgfQoKICAgIGZ1bmN0aW9uIGFkZENsYXNzKGVsZW1lbnQpIHsKICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsKICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07CgogICAgICAgIGFwcGx5JDEoZWxlbWVudCwgYXJncywgJ2FkZCcpOwogICAgfQoKICAgIGZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsZW1lbnQpIHsKICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsKICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07CgogICAgICAgIGFwcGx5JDEoZWxlbWVudCwgYXJncywgJ3JlbW92ZScpOwogICAgfQoKICAgIGZ1bmN0aW9uIHJlbW92ZUNsYXNzZXMoZWxlbWVudCwgY2xzKSB7CiAgICAgICAgYXR0cihlbGVtZW50LCAnY2xhc3MnLCBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuICh2YWx1ZSB8fCAnJykucmVwbGFjZShuZXcgUmVnRXhwKCgiXFxiIiArIGNscyArICJcXGIiKSwgJ2cnKSwgJycpOyB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiByZXBsYWNlQ2xhc3MoZWxlbWVudCkgewogICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOwogICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTsKCiAgICAgICAgYXJnc1swXSAmJiByZW1vdmVDbGFzcyhlbGVtZW50LCBhcmdzWzBdKTsKICAgICAgICBhcmdzWzFdICYmIGFkZENsYXNzKGVsZW1lbnQsIGFyZ3NbMV0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIGNscykgewogICAgICAgIHJldHVybiBjbHMgJiYgdG9Ob2RlcyhlbGVtZW50KS5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbHMuc3BsaXQoJyAnKVswXSk7IH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIHRvZ2dsZUNsYXNzKGVsZW1lbnQpIHsKICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsKICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07CgoKICAgICAgICBpZiAoIWFyZ3MubGVuZ3RoKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGFyZ3MgPSBnZXRBcmdzJDEoYXJncyk7CgogICAgICAgIHZhciBmb3JjZSA9ICFpc1N0cmluZyhsYXN0KGFyZ3MpKSA/IGFyZ3MucG9wKCkgOiBbXTsgLy8gaW4gaU9TIDkuMyBmb3JjZSA9PT0gdW5kZWZpbmVkIGV2YWx1YXRlcyB0byBmYWxzZQoKICAgICAgICBhcmdzID0gYXJncy5maWx0ZXIoQm9vbGVhbik7CgogICAgICAgIHRvTm9kZXMoZWxlbWVudCkuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7CiAgICAgICAgICAgIHZhciBjbGFzc0xpc3QgPSByZWYuY2xhc3NMaXN0OwoKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBzdXBwb3J0cy5Gb3JjZQogICAgICAgICAgICAgICAgICAgID8gY2xhc3NMaXN0LnRvZ2dsZS5hcHBseShjbGFzc0xpc3QsIFthcmdzW2ldXS5jb25jYXQoZm9yY2UpKQogICAgICAgICAgICAgICAgICAgIDogKGNsYXNzTGlzdFsoIWlzVW5kZWZpbmVkKGZvcmNlKSA/IGZvcmNlIDogIWNsYXNzTGlzdC5jb250YWlucyhhcmdzW2ldKSkgPyAnYWRkJyA6ICdyZW1vdmUnXShhcmdzW2ldKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICB9CgogICAgZnVuY3Rpb24gYXBwbHkkMShlbGVtZW50LCBhcmdzLCBmbikgewogICAgICAgIGFyZ3MgPSBnZXRBcmdzJDEoYXJncykuZmlsdGVyKEJvb2xlYW4pOwoKICAgICAgICBhcmdzLmxlbmd0aCAmJiB0b05vZGVzKGVsZW1lbnQpLmZvckVhY2goZnVuY3Rpb24gKHJlZikgewogICAgICAgICAgICB2YXIgY2xhc3NMaXN0ID0gcmVmLmNsYXNzTGlzdDsKCiAgICAgICAgICAgIHN1cHBvcnRzLk11bHRpcGxlCiAgICAgICAgICAgICAgICA/IGNsYXNzTGlzdFtmbl0uYXBwbHkoY2xhc3NMaXN0LCBhcmdzKQogICAgICAgICAgICAgICAgOiBhcmdzLmZvckVhY2goZnVuY3Rpb24gKGNscykgeyByZXR1cm4gY2xhc3NMaXN0W2ZuXShjbHMpOyB9KTsKICAgICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRBcmdzJDEoYXJncykgewogICAgICAgIHJldHVybiBhcmdzLnJlZHVjZShmdW5jdGlvbiAoYXJncywgYXJnKSB7IHJldHVybiBhcmdzLmNvbmNhdC5jYWxsKGFyZ3MsIGlzU3RyaW5nKGFyZykgJiYgaW5jbHVkZXMoYXJnLCAnICcpID8gYXJnLnRyaW0oKS5zcGxpdCgnICcpIDogYXJnKTsgfQogICAgICAgICAgICAsIFtdKTsKICAgIH0KCiAgICAvLyBJRSAxMQogICAgdmFyIHN1cHBvcnRzID0gewoKICAgICAgICBnZXQgTXVsdGlwbGUoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldCgnX211bHRpcGxlJyk7CiAgICAgICAgfSwKCiAgICAgICAgZ2V0IEZvcmNlKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ19mb3JjZScpOwogICAgICAgIH0sCgogICAgICAgIGdldDogZnVuY3Rpb24oa2V5KSB7CgogICAgICAgICAgICBpZiAoIWhhc093bih0aGlzLCBrZXkpKSB7CiAgICAgICAgICAgICAgICB2YXIgcmVmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnXycpOwogICAgICAgICAgICAgICAgdmFyIGNsYXNzTGlzdCA9IHJlZi5jbGFzc0xpc3Q7CiAgICAgICAgICAgICAgICBjbGFzc0xpc3QuYWRkKCdhJywgJ2InKTsKICAgICAgICAgICAgICAgIGNsYXNzTGlzdC50b2dnbGUoJ2MnLCBmYWxzZSk7CiAgICAgICAgICAgICAgICB0aGlzLl9tdWx0aXBsZSA9IGNsYXNzTGlzdC5jb250YWlucygnYicpOwogICAgICAgICAgICAgICAgdGhpcy5fZm9yY2UgPSAhY2xhc3NMaXN0LmNvbnRhaW5zKCdjJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0aGlzW2tleV07CiAgICAgICAgfQoKICAgIH07CgogICAgdmFyIGNzc051bWJlciA9IHsKICAgICAgICAnYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCc6IHRydWUsCiAgICAgICAgJ2NvbHVtbi1jb3VudCc6IHRydWUsCiAgICAgICAgJ2ZpbGwtb3BhY2l0eSc6IHRydWUsCiAgICAgICAgJ2ZsZXgtZ3Jvdyc6IHRydWUsCiAgICAgICAgJ2ZsZXgtc2hyaW5rJzogdHJ1ZSwKICAgICAgICAnZm9udC13ZWlnaHQnOiB0cnVlLAogICAgICAgICdsaW5lLWhlaWdodCc6IHRydWUsCiAgICAgICAgJ29wYWNpdHknOiB0cnVlLAogICAgICAgICdvcmRlcic6IHRydWUsCiAgICAgICAgJ29ycGhhbnMnOiB0cnVlLAogICAgICAgICdzdHJva2UtZGFzaGFycmF5JzogdHJ1ZSwKICAgICAgICAnc3Ryb2tlLWRhc2hvZmZzZXQnOiB0cnVlLAogICAgICAgICd3aWRvd3MnOiB0cnVlLAogICAgICAgICd6LWluZGV4JzogdHJ1ZSwKICAgICAgICAnem9vbSc6IHRydWUKICAgIH07CgogICAgZnVuY3Rpb24gY3NzKGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSkgewoKICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHsKCiAgICAgICAgICAgIGlmIChpc1N0cmluZyhwcm9wZXJ0eSkpIHsKCiAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHByb3BOYW1lKHByb3BlcnR5KTsKCiAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFN0eWxlKGVsZW1lbnQsIHByb3BlcnR5KTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlICYmICFpc051bWJlcih2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KHByb3BlcnR5KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBpc051bWVyaWModmFsdWUpICYmICFjc3NOdW1iZXJbcHJvcGVydHldID8gKHZhbHVlICsgInB4IikgOiB2YWx1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShwcm9wZXJ0eSkpIHsKCiAgICAgICAgICAgICAgICB2YXIgc3R5bGVzID0gZ2V0U3R5bGVzKGVsZW1lbnQpOwoKICAgICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eS5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgICAgIHByb3BzW3Byb3BlcnR5XSA9IHN0eWxlc1twcm9wTmFtZShwcm9wZXJ0eSldOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wczsKICAgICAgICAgICAgICAgIH0sIHt9KTsKCiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QocHJvcGVydHkpKSB7CiAgICAgICAgICAgICAgICBlYWNoKHByb3BlcnR5LCBmdW5jdGlvbiAodmFsdWUsIHByb3BlcnR5KSB7IHJldHVybiBjc3MoZWxlbWVudCwgcHJvcGVydHksIHZhbHVlKTsgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwoKICAgICAgICB9KVswXTsKCiAgICB9CgogICAgZnVuY3Rpb24gZ2V0U3R5bGVzKGVsZW1lbnQsIHBzZXVkb0VsdCkgewogICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIHBzZXVkb0VsdCk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0U3R5bGUoZWxlbWVudCwgcHJvcGVydHksIHBzZXVkb0VsdCkgewogICAgICAgIHJldHVybiBnZXRTdHlsZXMoZWxlbWVudCwgcHNldWRvRWx0KVtwcm9wZXJ0eV07CiAgICB9CgogICAgdmFyIHZhcnMgPSB7fTsKCiAgICBmdW5jdGlvbiBnZXRDc3NWYXIobmFtZSkgewoKICAgICAgICB2YXIgZG9jRWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CgogICAgICAgIGlmICghaXNJRSkgewogICAgICAgICAgICByZXR1cm4gZ2V0U3R5bGVzKGRvY0VsKS5nZXRQcm9wZXJ0eVZhbHVlKCgiLS11ay0iICsgbmFtZSkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEobmFtZSBpbiB2YXJzKSkgewoKICAgICAgICAgICAgLyogdXNhZ2UgaW4gY3NzOiAudWstbmFtZTpiZWZvcmUgeyBjb250ZW50OiJ4eXoiIH0gKi8KCiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gYXBwZW5kKGRvY0VsLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CgogICAgICAgICAgICBhZGRDbGFzcyhlbGVtZW50LCAoInVrLSIgKyBuYW1lKSk7CgogICAgICAgICAgICB2YXJzW25hbWVdID0gZ2V0U3R5bGUoZWxlbWVudCwgJ2NvbnRlbnQnLCAnOmJlZm9yZScpLnJlcGxhY2UoL15bIiddKC4qKVsiJ10kLywgJyQxJyk7CgogICAgICAgICAgICByZW1vdmUoZWxlbWVudCk7CgogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHZhcnNbbmFtZV07CgogICAgfQoKICAgIHZhciBjc3NQcm9wcyA9IHt9OwoKICAgIGZ1bmN0aW9uIHByb3BOYW1lKG5hbWUpIHsKCiAgICAgICAgdmFyIHJldCA9IGNzc1Byb3BzW25hbWVdOwogICAgICAgIGlmICghcmV0KSB7CiAgICAgICAgICAgIHJldCA9IGNzc1Byb3BzW25hbWVdID0gdmVuZG9yUHJvcE5hbWUobmFtZSkgfHwgbmFtZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJldDsKICAgIH0KCiAgICB2YXIgY3NzUHJlZml4ZXMgPSBbJ3dlYmtpdCcsICdtb3onLCAnbXMnXTsKCiAgICBmdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZShuYW1lKSB7CgogICAgICAgIG5hbWUgPSBoeXBoZW5hdGUobmFtZSk7CgogICAgICAgIHZhciByZWYgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CiAgICAgICAgdmFyIHN0eWxlID0gcmVmLnN0eWxlOwoKICAgICAgICBpZiAobmFtZSBpbiBzdHlsZSkgewogICAgICAgICAgICByZXR1cm4gbmFtZTsKICAgICAgICB9CgogICAgICAgIHZhciBpID0gY3NzUHJlZml4ZXMubGVuZ3RoLCBwcmVmaXhlZE5hbWU7CgogICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgcHJlZml4ZWROYW1lID0gIi0iICsgKGNzc1ByZWZpeGVzW2ldKSArICItIiArIG5hbWU7CiAgICAgICAgICAgIGlmIChwcmVmaXhlZE5hbWUgaW4gc3R5bGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXhlZE5hbWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gdHJhbnNpdGlvbihlbGVtZW50LCBwcm9wcywgZHVyYXRpb24sIHRpbWluZykgewogICAgICAgIGlmICggZHVyYXRpb24gPT09IHZvaWQgMCApIGR1cmF0aW9uID0gNDAwOwogICAgICAgIGlmICggdGltaW5nID09PSB2b2lkIDAgKSB0aW1pbmcgPSAnbGluZWFyJzsKCgogICAgICAgIHJldHVybiBQcm9taXNlLmFsbCh0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewoKICAgICAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJvcHMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBjc3MoZWxlbWVudCwgbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgbmFtZSwgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRyaWdnZXIoZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnKTsgfSwgZHVyYXRpb24pOwoKICAgICAgICAgICAgICAgIG9uY2UoZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQgdHJhbnNpdGlvbmNhbmNlbGVkJywgZnVuY3Rpb24gKHJlZikgewogICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7CgogICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7CiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTsKICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgewogICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1wcm9wZXJ0eSc6ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nOiAnJwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICd0cmFuc2l0aW9uY2FuY2VsZWQnID8gcmVqZWN0KCkgOiByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICB9LCB7c2VsZjogdHJ1ZX0pOwoKICAgICAgICAgICAgICAgIGFkZENsYXNzKGVsZW1lbnQsICd1ay10cmFuc2l0aW9uJyk7CiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgYXNzaWduKHsKICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1wcm9wZXJ0eSc6IE9iamVjdC5rZXlzKHByb3BzKS5tYXAocHJvcE5hbWUpLmpvaW4oJywnKSwKICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6IChkdXJhdGlvbiArICJtcyIpLAogICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbic6IHRpbWluZwogICAgICAgICAgICAgICAgfSwgcHJvcHMpKTsKCiAgICAgICAgICAgIH0pOyB9CiAgICAgICAgKSk7CgogICAgfQoKICAgIHZhciBUcmFuc2l0aW9uID0gewoKICAgICAgICBzdGFydDogdHJhbnNpdGlvbiwKCiAgICAgICAgc3RvcDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICB0cmlnZ2VyKGVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJyk7CiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKICAgICAgICB9LAoKICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgICAgdHJpZ2dlcihlbGVtZW50LCAndHJhbnNpdGlvbmNhbmNlbGVkJyk7CiAgICAgICAgfSwKCiAgICAgICAgaW5Qcm9ncmVzczogZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICByZXR1cm4gaGFzQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTsKICAgICAgICB9CgogICAgfTsKCiAgICB2YXIgYW5pbWF0aW9uUHJlZml4ID0gJ3VrLWFuaW1hdGlvbi0nOwogICAgdmFyIGNsc0NhbmNlbEFuaW1hdGlvbiA9ICd1ay1jYW5jZWwtYW5pbWF0aW9uJzsKCiAgICBmdW5jdGlvbiBhbmltYXRlKGVsZW1lbnQsIGFuaW1hdGlvbiwgZHVyYXRpb24sIG9yaWdpbiwgb3V0KSB7CiAgICAgICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzOwogICAgICAgIGlmICggZHVyYXRpb24gPT09IHZvaWQgMCApIGR1cmF0aW9uID0gMjAwOwoKCiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CgogICAgICAgICAgICAgICAgaWYgKGhhc0NsYXNzKGVsZW1lbnQsIGNsc0NhbmNlbEFuaW1hdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBhbmltYXRlLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzJDEpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsgfQogICAgICAgICAgICAgICAgICAgICAgICApOyB9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIGNscyA9IGFuaW1hdGlvbiArICIgIiArIGFuaW1hdGlvblByZWZpeCArIChvdXQgPyAnbGVhdmUnIDogJ2VudGVyJyk7CgogICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgoYW5pbWF0aW9uLCBhbmltYXRpb25QcmVmaXgpKSB7CgogICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xzICs9ICIgdWstdHJhbnNmb3JtLW9yaWdpbi0iICsgb3JpZ2luOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKG91dCkgewogICAgICAgICAgICAgICAgICAgICAgICBjbHMgKz0gIiAiICsgYW5pbWF0aW9uUHJlZml4ICsgInJldmVyc2UiOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmVzZXQoKTsKCiAgICAgICAgICAgICAgICBvbmNlKGVsZW1lbnQsICdhbmltYXRpb25lbmQgYW5pbWF0aW9uY2FuY2VsJywgZnVuY3Rpb24gKHJlZikgewogICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7CgoKICAgICAgICAgICAgICAgICAgICB2YXIgaGFzUmVzZXQgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdhbmltYXRpb25jYW5jZWwnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNSZXNldCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFzUmVzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKGVsZW1lbnQsIGNsc0NhbmNlbEFuaW1hdGlvbik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsc0NhbmNlbEFuaW1hdGlvbik7IH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgfSwge3NlbGY6IHRydWV9KTsKCiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgJ2FuaW1hdGlvbkR1cmF0aW9uJywgKGR1cmF0aW9uICsgIm1zIikpOwogICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgY2xzKTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiByZXNldCgpIHsKICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJycpOwogICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzZXMoZWxlbWVudCwgKGFuaW1hdGlvblByZWZpeCArICJcXFMqIikpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSk7IH0KICAgICAgICApKTsKCiAgICB9CgogICAgdmFyIGluUHJvZ3Jlc3MgPSBuZXcgUmVnRXhwKChhbmltYXRpb25QcmVmaXggKyAiKGVudGVyfGxlYXZlKSIpKTsKICAgIHZhciBBbmltYXRpb24gPSB7CgogICAgICAgIGluOiBmdW5jdGlvbihlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4pIHsKICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGUoZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luLCBmYWxzZSk7CiAgICAgICAgfSwKCiAgICAgICAgb3V0OiBmdW5jdGlvbihlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4pIHsKICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGUoZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luLCB0cnVlKTsKICAgICAgICB9LAoKICAgICAgICBpblByb2dyZXNzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgICAgIHJldHVybiBpblByb2dyZXNzLnRlc3QoYXR0cihlbGVtZW50LCAnY2xhc3MnKSk7CiAgICAgICAgfSwKCiAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgICAgIHRyaWdnZXIoZWxlbWVudCwgJ2FuaW1hdGlvbmNhbmNlbCcpOwogICAgICAgIH0KCiAgICB9OwoKICAgIHZhciBkaXJzID0gewogICAgICAgIHdpZHRoOiBbJ3gnLCAnbGVmdCcsICdyaWdodCddLAogICAgICAgIGhlaWdodDogWyd5JywgJ3RvcCcsICdib3R0b20nXQogICAgfTsKCiAgICBmdW5jdGlvbiBwb3NpdGlvbkF0KGVsZW1lbnQsIHRhcmdldCwgZWxBdHRhY2gsIHRhcmdldEF0dGFjaCwgZWxPZmZzZXQsIHRhcmdldE9mZnNldCwgZmxpcCwgYm91bmRhcnkpIHsKCiAgICAgICAgZWxBdHRhY2ggPSBnZXRQb3MoZWxBdHRhY2gpOwogICAgICAgIHRhcmdldEF0dGFjaCA9IGdldFBvcyh0YXJnZXRBdHRhY2gpOwoKICAgICAgICB2YXIgZmxpcHBlZCA9IHtlbGVtZW50OiBlbEF0dGFjaCwgdGFyZ2V0OiB0YXJnZXRBdHRhY2h9OwoKICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIXRhcmdldCkgewogICAgICAgICAgICByZXR1cm4gZmxpcHBlZDsKICAgICAgICB9CgogICAgICAgIHZhciBkaW0gPSBnZXREaW1lbnNpb25zKGVsZW1lbnQpOwogICAgICAgIHZhciB0YXJnZXREaW0gPSBnZXREaW1lbnNpb25zKHRhcmdldCk7CiAgICAgICAgdmFyIHBvc2l0aW9uID0gdGFyZ2V0RGltOwoKICAgICAgICBtb3ZlVG8ocG9zaXRpb24sIGVsQXR0YWNoLCBkaW0sIC0xKTsKICAgICAgICBtb3ZlVG8ocG9zaXRpb24sIHRhcmdldEF0dGFjaCwgdGFyZ2V0RGltLCAxKTsKCiAgICAgICAgZWxPZmZzZXQgPSBnZXRPZmZzZXRzKGVsT2Zmc2V0LCBkaW0ud2lkdGgsIGRpbS5oZWlnaHQpOwogICAgICAgIHRhcmdldE9mZnNldCA9IGdldE9mZnNldHModGFyZ2V0T2Zmc2V0LCB0YXJnZXREaW0ud2lkdGgsIHRhcmdldERpbS5oZWlnaHQpOwoKICAgICAgICBlbE9mZnNldFsneCddICs9IHRhcmdldE9mZnNldFsneCddOwogICAgICAgIGVsT2Zmc2V0Wyd5J10gKz0gdGFyZ2V0T2Zmc2V0Wyd5J107CgogICAgICAgIHBvc2l0aW9uLmxlZnQgKz0gZWxPZmZzZXRbJ3gnXTsKICAgICAgICBwb3NpdGlvbi50b3AgKz0gZWxPZmZzZXRbJ3knXTsKCiAgICAgICAgaWYgKGZsaXApIHsKCiAgICAgICAgICAgIHZhciBib3VuZGFyaWVzID0gW2dldERpbWVuc2lvbnMoZ2V0V2luZG93KGVsZW1lbnQpKV07CgogICAgICAgICAgICBpZiAoYm91bmRhcnkpIHsKICAgICAgICAgICAgICAgIGJvdW5kYXJpZXMudW5zaGlmdChnZXREaW1lbnNpb25zKGJvdW5kYXJ5KSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVhY2goZGlycywgZnVuY3Rpb24gKHJlZiwgcHJvcCkgewogICAgICAgICAgICAgICAgdmFyIGRpciA9IHJlZlswXTsKICAgICAgICAgICAgICAgIHZhciBhbGlnbiA9IHJlZlsxXTsKICAgICAgICAgICAgICAgIHZhciBhbGlnbkZsaXAgPSByZWZbMl07CgoKICAgICAgICAgICAgICAgIGlmICghKGZsaXAgPT09IHRydWUgfHwgaW5jbHVkZXMoZmxpcCwgZGlyKSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYm91bmRhcmllcy5zb21lKGZ1bmN0aW9uIChib3VuZGFyeSkgewoKICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbU9mZnNldCA9IGVsQXR0YWNoW2Rpcl0gPT09IGFsaWduCiAgICAgICAgICAgICAgICAgICAgICAgID8gLWRpbVtwcm9wXQogICAgICAgICAgICAgICAgICAgICAgICA6IGVsQXR0YWNoW2Rpcl0gPT09IGFsaWduRmxpcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkaW1bcHJvcF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMDsKCiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldE9mZnNldCA9IHRhcmdldEF0dGFjaFtkaXJdID09PSBhbGlnbgogICAgICAgICAgICAgICAgICAgICAgICA/IHRhcmdldERpbVtwcm9wXQogICAgICAgICAgICAgICAgICAgICAgICA6IHRhcmdldEF0dGFjaFtkaXJdID09PSBhbGlnbkZsaXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gLXRhcmdldERpbVtwcm9wXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwOwoKICAgICAgICAgICAgICAgICAgICBpZiAocG9zaXRpb25bYWxpZ25dIDwgYm91bmRhcnlbYWxpZ25dIHx8IHBvc2l0aW9uW2FsaWduXSArIGRpbVtwcm9wXSA+IGJvdW5kYXJ5W2FsaWduRmxpcF0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZW50ZXJPZmZzZXQgPSBkaW1bcHJvcF0gLyAyOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VudGVyVGFyZ2V0T2Zmc2V0ID0gdGFyZ2V0QXR0YWNoW2Rpcl0gPT09ICdjZW50ZXInID8gLXRhcmdldERpbVtwcm9wXSAvIDIgOiAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsQXR0YWNoW2Rpcl0gPT09ICdjZW50ZXInICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5KGNlbnRlck9mZnNldCwgY2VudGVyVGFyZ2V0T2Zmc2V0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYXBwbHkoLWNlbnRlck9mZnNldCwgLWNlbnRlclRhcmdldE9mZnNldCkKICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBhcHBseShlbGVtT2Zmc2V0LCB0YXJnZXRPZmZzZXQpOwoKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFwcGx5KGVsZW1PZmZzZXQsIHRhcmdldE9mZnNldCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1ZhbCA9IHBvc2l0aW9uW2FsaWduXSArIGVsZW1PZmZzZXQgKyB0YXJnZXRPZmZzZXQgLSBlbE9mZnNldFtkaXJdICogMjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWwgPj0gYm91bmRhcnlbYWxpZ25dICYmIG5ld1ZhbCArIGRpbVtwcm9wXSA8PSBib3VuZGFyeVthbGlnbkZsaXBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblthbGlnbl0gPSBuZXdWYWw7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWydlbGVtZW50JywgJ3RhcmdldCddLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxpcHBlZFtlbF1bZGlyXSA9ICFlbGVtT2Zmc2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZmxpcHBlZFtlbF1bZGlyXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZsaXBwZWRbZWxdW2Rpcl0gPT09IGRpcnNbcHJvcF1bMV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZGlyc1twcm9wXVsyXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBkaXJzW3Byb3BdWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBvZmZzZXQoZWxlbWVudCwgcG9zaXRpb24pOwoKICAgICAgICByZXR1cm4gZmxpcHBlZDsKICAgIH0KCiAgICBmdW5jdGlvbiBvZmZzZXQoZWxlbWVudCwgY29vcmRpbmF0ZXMpIHsKCiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTsKCiAgICAgICAgaWYgKGNvb3JkaW5hdGVzKSB7CgogICAgICAgICAgICB2YXIgY3VycmVudE9mZnNldCA9IG9mZnNldChlbGVtZW50KTsKICAgICAgICAgICAgdmFyIHBvcyA9IGNzcyhlbGVtZW50LCAncG9zaXRpb24nKTsKCiAgICAgICAgICAgIFsnbGVmdCcsICd0b3AnXS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7CiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiBjb29yZGluYXRlcykgewogICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGNzcyhlbGVtZW50LCBwcm9wKTsKICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgcHJvcCwgY29vcmRpbmF0ZXNbcHJvcF0gLSBjdXJyZW50T2Zmc2V0W3Byb3BdCiAgICAgICAgICAgICAgICAgICAgICAgICsgdG9GbG9hdChwb3MgPT09ICdhYnNvbHV0ZScgJiYgdmFsdWUgPT09ICdhdXRvJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwb3NpdGlvbihlbGVtZW50KVtwcm9wXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHJldHVybiBnZXREaW1lbnNpb25zKGVsZW1lbnQpOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkgewoKICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpOwoKICAgICAgICBpZiAoIWVsZW1lbnQpIHsKICAgICAgICAgICAgcmV0dXJuIHt9OwogICAgICAgIH0KCiAgICAgICAgdmFyIHJlZiA9IGdldFdpbmRvdyhlbGVtZW50KTsKICAgICAgICB2YXIgdG9wID0gcmVmLnBhZ2VZT2Zmc2V0OwogICAgICAgIHZhciBsZWZ0ID0gcmVmLnBhZ2VYT2Zmc2V0OwoKICAgICAgICBpZiAoaXNXaW5kb3coZWxlbWVudCkpIHsKCiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBlbGVtZW50LmlubmVySGVpZ2h0OwogICAgICAgICAgICB2YXIgd2lkdGggPSBlbGVtZW50LmlubmVyV2lkdGg7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdG9wOiB0b3AsCiAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0LAogICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsCiAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsCiAgICAgICAgICAgICAgICBib3R0b206IHRvcCArIGhlaWdodCwKICAgICAgICAgICAgICAgIHJpZ2h0OiBsZWZ0ICsgd2lkdGgKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIHZhciBzdHlsZSwgaGlkZGVuOwoKICAgICAgICBpZiAoIWlzVmlzaWJsZShlbGVtZW50KSAmJiBjc3MoZWxlbWVudCwgJ2Rpc3BsYXknKSA9PT0gJ25vbmUnKSB7CgogICAgICAgICAgICBzdHlsZSA9IGF0dHIoZWxlbWVudCwgJ3N0eWxlJyk7CiAgICAgICAgICAgIGhpZGRlbiA9IGF0dHIoZWxlbWVudCwgJ2hpZGRlbicpOwoKICAgICAgICAgICAgYXR0cihlbGVtZW50LCB7CiAgICAgICAgICAgICAgICBzdHlsZTogKChzdHlsZSB8fCAnJykgKyAiO2Rpc3BsYXk6YmxvY2sgIWltcG9ydGFudDsiKSwKICAgICAgICAgICAgICAgIGhpZGRlbjogbnVsbAogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKCiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChzdHlsZSkpIHsKICAgICAgICAgICAgYXR0cihlbGVtZW50LCB7c3R5bGU6IHN0eWxlLCBoaWRkZW46IGhpZGRlbn0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgaGVpZ2h0OiByZWN0LmhlaWdodCwKICAgICAgICAgICAgd2lkdGg6IHJlY3Qud2lkdGgsCiAgICAgICAgICAgIHRvcDogcmVjdC50b3AgKyB0b3AsCiAgICAgICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIGxlZnQsCiAgICAgICAgICAgIGJvdHRvbTogcmVjdC5ib3R0b20gKyB0b3AsCiAgICAgICAgICAgIHJpZ2h0OiByZWN0LnJpZ2h0ICsgbGVmdAogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gcG9zaXRpb24oZWxlbWVudCkgewogICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7CgogICAgICAgIHZhciBwYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudCB8fCBnZXREb2NFbChlbGVtZW50KTsKICAgICAgICB2YXIgcGFyZW50T2Zmc2V0ID0gb2Zmc2V0KHBhcmVudCk7CiAgICAgICAgdmFyIHJlZiA9IFsndG9wJywgJ2xlZnQnXS5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wKSB7CiAgICAgICAgICAgIHZhciBwcm9wTmFtZSA9IHVjZmlyc3QocHJvcCk7CiAgICAgICAgICAgIHByb3BzW3Byb3BdIC09IHBhcmVudE9mZnNldFtwcm9wXQogICAgICAgICAgICAgICAgKyB0b0Zsb2F0KGNzcyhlbGVtZW50LCAoIm1hcmdpbiIgKyBwcm9wTmFtZSkpKQogICAgICAgICAgICAgICAgKyB0b0Zsb2F0KGNzcyhwYXJlbnQsICgiYm9yZGVyIiArIHByb3BOYW1lICsgIldpZHRoIikpKTsKICAgICAgICAgICAgcmV0dXJuIHByb3BzOwogICAgICAgIH0sIG9mZnNldChlbGVtZW50KSk7CiAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7CiAgICAgICAgdmFyIGxlZnQgPSByZWYubGVmdDsKCiAgICAgICAgcmV0dXJuIHt0b3A6IHRvcCwgbGVmdDogbGVmdH07CiAgICB9CgogICAgdmFyIGhlaWdodCA9IGRpbWVuc2lvbignaGVpZ2h0Jyk7CiAgICB2YXIgd2lkdGggPSBkaW1lbnNpb24oJ3dpZHRoJyk7CgogICAgZnVuY3Rpb24gZGltZW5zaW9uKHByb3ApIHsKICAgICAgICB2YXIgcHJvcE5hbWUgPSB1Y2ZpcnN0KHByb3ApOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCwgdmFsdWUpIHsKCiAgICAgICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7CgogICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7CgogICAgICAgICAgICAgICAgaWYgKGlzV2luZG93KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRbKCJpbm5lciIgKyBwcm9wTmFtZSldOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChpc0RvY3VtZW50KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRvYyA9IGVsZW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heChkb2NbKCJvZmZzZXQiICsgcHJvcE5hbWUpXSwgZG9jWygic2Nyb2xsIiArIHByb3BOYW1lKV0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhbHVlID0gY3NzKGVsZW1lbnQsIHByb3ApOwogICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gJ2F1dG8nID8gZWxlbWVudFsoIm9mZnNldCIgKyBwcm9wTmFtZSldIDogdG9GbG9hdCh2YWx1ZSkgfHwgMDsKCiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgLSBib3hNb2RlbEFkanVzdChwcm9wLCBlbGVtZW50KTsKCiAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIHByb3AsICF2YWx1ZSAmJiB2YWx1ZSAhPT0gMAogICAgICAgICAgICAgICAgICAgID8gJycKICAgICAgICAgICAgICAgICAgICA6ICt2YWx1ZSArIGJveE1vZGVsQWRqdXN0KHByb3AsIGVsZW1lbnQpICsgJ3B4JwogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBib3hNb2RlbEFkanVzdChwcm9wLCBlbGVtZW50LCBzaXppbmcpIHsKICAgICAgICBpZiAoIHNpemluZyA9PT0gdm9pZCAwICkgc2l6aW5nID0gJ2JvcmRlci1ib3gnOwoKICAgICAgICByZXR1cm4gY3NzKGVsZW1lbnQsICdib3hTaXppbmcnKSA9PT0gc2l6aW5nCiAgICAgICAgICAgID8gZGlyc1twcm9wXS5zbGljZSgxKS5tYXAodWNmaXJzdCkucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgeyByZXR1cm4gdmFsdWUKICAgICAgICAgICAgICAgICsgdG9GbG9hdChjc3MoZWxlbWVudCwgKCJwYWRkaW5nIiArIHByb3ApKSkKICAgICAgICAgICAgICAgICsgdG9GbG9hdChjc3MoZWxlbWVudCwgKCJib3JkZXIiICsgcHJvcCArICJXaWR0aCIpKSk7IH0KICAgICAgICAgICAgICAgICwgMCkKICAgICAgICAgICAgOiAwOwogICAgfQoKICAgIGZ1bmN0aW9uIG1vdmVUbyhwb3NpdGlvbiwgYXR0YWNoLCBkaW0sIGZhY3RvcikgewogICAgICAgIGVhY2goZGlycywgZnVuY3Rpb24gKHJlZiwgcHJvcCkgewogICAgICAgICAgICB2YXIgZGlyID0gcmVmWzBdOwogICAgICAgICAgICB2YXIgYWxpZ24gPSByZWZbMV07CiAgICAgICAgICAgIHZhciBhbGlnbkZsaXAgPSByZWZbMl07CgogICAgICAgICAgICBpZiAoYXR0YWNoW2Rpcl0gPT09IGFsaWduRmxpcCkgewogICAgICAgICAgICAgICAgcG9zaXRpb25bYWxpZ25dICs9IGRpbVtwcm9wXSAqIGZhY3RvcjsKICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRhY2hbZGlyXSA9PT0gJ2NlbnRlcicpIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uW2FsaWduXSArPSBkaW1bcHJvcF0gKiBmYWN0b3IgLyAyOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0UG9zKHBvcykgewoKICAgICAgICB2YXIgeCA9IC9sZWZ0fGNlbnRlcnxyaWdodC87CiAgICAgICAgdmFyIHkgPSAvdG9wfGNlbnRlcnxib3R0b20vOwoKICAgICAgICBwb3MgPSAocG9zIHx8ICcnKS5zcGxpdCgnICcpOwoKICAgICAgICBpZiAocG9zLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICBwb3MgPSB4LnRlc3QocG9zWzBdKQogICAgICAgICAgICAgICAgPyBwb3MuY29uY2F0KFsnY2VudGVyJ10pCiAgICAgICAgICAgICAgICA6IHkudGVzdChwb3NbMF0pCiAgICAgICAgICAgICAgICAgICAgPyBbJ2NlbnRlciddLmNvbmNhdChwb3MpCiAgICAgICAgICAgICAgICAgICAgOiBbJ2NlbnRlcicsICdjZW50ZXInXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHg6IHgudGVzdChwb3NbMF0pID8gcG9zWzBdIDogJ2NlbnRlcicsCiAgICAgICAgICAgIHk6IHkudGVzdChwb3NbMV0pID8gcG9zWzFdIDogJ2NlbnRlcicKICAgICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIGdldE9mZnNldHMob2Zmc2V0cywgd2lkdGgsIGhlaWdodCkgewoKICAgICAgICB2YXIgcmVmID0gKG9mZnNldHMgfHwgJycpLnNwbGl0KCcgJyk7CiAgICAgICAgdmFyIHggPSByZWZbMF07CiAgICAgICAgdmFyIHkgPSByZWZbMV07CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHg6IHggPyB0b0Zsb2F0KHgpICogKGVuZHNXaXRoKHgsICclJykgPyB3aWR0aCAvIDEwMCA6IDEpIDogMCwKICAgICAgICAgICAgeTogeSA/IHRvRmxvYXQoeSkgKiAoZW5kc1dpdGgoeSwgJyUnKSA/IGhlaWdodCAvIDEwMCA6IDEpIDogMAogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gZmxpcFBvc2l0aW9uKHBvcykgewogICAgICAgIHN3aXRjaCAocG9zKSB7CiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOgogICAgICAgICAgICAgICAgcmV0dXJuICdyaWdodCc7CiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzoKICAgICAgICAgICAgICAgIHJldHVybiAnbGVmdCc7CiAgICAgICAgICAgIGNhc2UgJ3RvcCc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ2JvdHRvbSc7CiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvcCc7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gcG9zOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBpc0luVmlldyhlbGVtZW50LCB0b3BPZmZzZXQsIGxlZnRPZmZzZXQpIHsKICAgICAgICBpZiAoIHRvcE9mZnNldCA9PT0gdm9pZCAwICkgdG9wT2Zmc2V0ID0gMDsKICAgICAgICBpZiAoIGxlZnRPZmZzZXQgPT09IHZvaWQgMCApIGxlZnRPZmZzZXQgPSAwOwoKCiAgICAgICAgaWYgKCFpc1Zpc2libGUoZWxlbWVudCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTsKCiAgICAgICAgdmFyIHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTsKICAgICAgICB2YXIgY2xpZW50ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICB2YXIgYm91bmRpbmcgPSB7CiAgICAgICAgICAgIHRvcDogLXRvcE9mZnNldCwKICAgICAgICAgICAgbGVmdDogLWxlZnRPZmZzZXQsCiAgICAgICAgICAgIGJvdHRvbTogdG9wT2Zmc2V0ICsgaGVpZ2h0KHdpbiksCiAgICAgICAgICAgIHJpZ2h0OiBsZWZ0T2Zmc2V0ICsgd2lkdGgod2luKQogICAgICAgIH07CgogICAgICAgIHJldHVybiBpbnRlcnNlY3RSZWN0KGNsaWVudCwgYm91bmRpbmcpIHx8IHBvaW50SW5SZWN0KHt4OiBjbGllbnQubGVmdCwgeTogY2xpZW50LnRvcH0sIGJvdW5kaW5nKTsKCiAgICB9CgogICAgZnVuY3Rpb24gc2Nyb2xsZWRPdmVyKGVsZW1lbnQsIGhlaWdodE9mZnNldCkgewogICAgICAgIGlmICggaGVpZ2h0T2Zmc2V0ID09PSB2b2lkIDAgKSBoZWlnaHRPZmZzZXQgPSAwOwoKCiAgICAgICAgaWYgKCFpc1Zpc2libGUoZWxlbWVudCkpIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpOwoKICAgICAgICB2YXIgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpOwogICAgICAgIHZhciBkb2MgPSBnZXREb2N1bWVudChlbGVtZW50KTsKICAgICAgICB2YXIgZWxIZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodCArIGhlaWdodE9mZnNldDsKICAgICAgICB2YXIgcmVmID0gb2Zmc2V0UG9zaXRpb24oZWxlbWVudCk7CiAgICAgICAgdmFyIHRvcCA9IHJlZlswXTsKICAgICAgICB2YXIgdnAgPSBoZWlnaHQod2luKTsKICAgICAgICB2YXIgdmggPSB2cCArIE1hdGgubWluKDAsIHRvcCAtIHZwKTsKICAgICAgICB2YXIgZGlmZiA9IE1hdGgubWF4KDAsIHZwIC0gKGhlaWdodChkb2MpICsgaGVpZ2h0T2Zmc2V0IC0gKHRvcCArIGVsSGVpZ2h0KSkpOwoKICAgICAgICByZXR1cm4gY2xhbXAoKCh2aCArIHdpbi5wYWdlWU9mZnNldCAtIHRvcCkgLyAoKHZoICsgKGVsSGVpZ2h0IC0gKGRpZmYgPCB2cCA/IGRpZmYgOiAwKSkpIC8gMTAwKSkgLyAxMDApOwogICAgfQoKICAgIGZ1bmN0aW9uIHNjcm9sbFRvcChlbGVtZW50LCB0b3ApIHsKICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpOwoKICAgICAgICBpZiAoaXNXaW5kb3coZWxlbWVudCkgfHwgaXNEb2N1bWVudChlbGVtZW50KSkgewogICAgICAgICAgICB2YXIgcmVmID0gZ2V0V2luZG93KGVsZW1lbnQpOwogICAgICAgICAgICB2YXIgc2Nyb2xsVG8gPSByZWYuc2Nyb2xsVG87CiAgICAgICAgICAgIHZhciBwYWdlWE9mZnNldCA9IHJlZi5wYWdlWE9mZnNldDsKICAgICAgICAgICAgc2Nyb2xsVG8ocGFnZVhPZmZzZXQsIHRvcCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxUb3AgPSB0b3A7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIG9mZnNldFBvc2l0aW9uKGVsZW1lbnQpIHsKICAgICAgICB2YXIgb2Zmc2V0ID0gWzAsIDBdOwoKICAgICAgICBkbyB7CgogICAgICAgICAgICBvZmZzZXRbMF0gKz0gZWxlbWVudC5vZmZzZXRUb3A7CiAgICAgICAgICAgIG9mZnNldFsxXSArPSBlbGVtZW50Lm9mZnNldExlZnQ7CgogICAgICAgICAgICBpZiAoY3NzKGVsZW1lbnQsICdwb3NpdGlvbicpID09PSAnZml4ZWQnKSB7CiAgICAgICAgICAgICAgICB2YXIgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpOwogICAgICAgICAgICAgICAgb2Zmc2V0WzBdICs9IHdpbi5wYWdlWU9mZnNldDsKICAgICAgICAgICAgICAgIG9mZnNldFsxXSArPSB3aW4ucGFnZVhPZmZzZXQ7CiAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0OwogICAgICAgICAgICB9CgogICAgICAgIH0gd2hpbGUgKChlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQpKTsKCiAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgIH0KCiAgICBmdW5jdGlvbiB0b1B4KHZhbHVlLCBwcm9wZXJ0eSwgZWxlbWVudCkgewogICAgICAgIGlmICggcHJvcGVydHkgPT09IHZvaWQgMCApIHByb3BlcnR5ID0gJ3dpZHRoJzsKICAgICAgICBpZiAoIGVsZW1lbnQgPT09IHZvaWQgMCApIGVsZW1lbnQgPSB3aW5kb3c7CgogICAgICAgIHJldHVybiBpc051bWVyaWModmFsdWUpCiAgICAgICAgICAgID8gK3ZhbHVlCiAgICAgICAgICAgIDogZW5kc1dpdGgodmFsdWUsICd2aCcpCiAgICAgICAgICAgICAgICA/IHBlcmNlbnQoaGVpZ2h0KGdldFdpbmRvdyhlbGVtZW50KSksIHZhbHVlKQogICAgICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJ3Z3JykKICAgICAgICAgICAgICAgICAgICA/IHBlcmNlbnQod2lkdGgoZ2V0V2luZG93KGVsZW1lbnQpKSwgdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJyUnKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBlcmNlbnQoZ2V0RGltZW5zaW9ucyhlbGVtZW50KVtwcm9wZXJ0eV0sIHZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA6IHRvRmxvYXQodmFsdWUpOwogICAgfQoKICAgIGZ1bmN0aW9uIHBlcmNlbnQoYmFzZSwgdmFsdWUpIHsKICAgICAgICByZXR1cm4gYmFzZSAqIHRvRmxvYXQodmFsdWUpIC8gMTAwOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldFdpbmRvdyhlbGVtZW50KSB7CiAgICAgICAgcmV0dXJuIGlzV2luZG93KGVsZW1lbnQpID8gZWxlbWVudCA6IGdldERvY3VtZW50KGVsZW1lbnQpLmRlZmF1bHRWaWV3OwogICAgfQoKICAgIGZ1bmN0aW9uIGdldERvY3VtZW50KGVsZW1lbnQpIHsKICAgICAgICByZXR1cm4gdG9Ob2RlKGVsZW1lbnQpLm93bmVyRG9jdW1lbnQ7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0RG9jRWwoZWxlbWVudCkgewogICAgICAgIHJldHVybiBnZXREb2N1bWVudChlbGVtZW50KS5kb2N1bWVudEVsZW1lbnQ7CiAgICB9CgogICAgLyoKICAgICAgICBCYXNlZCBvbjoKICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTYgV2lsc29uIFBhZ2Ugd2lsc29ucGFnZUBtZS5jb20KICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vd2lsc29ucGFnZS9mYXN0ZG9tCiAgICAqLwoKICAgIHZhciBmYXN0ZG9tID0gewoKICAgICAgICByZWFkczogW10sCiAgICAgICAgd3JpdGVzOiBbXSwKCiAgICAgICAgcmVhZDogZnVuY3Rpb24odGFzaykgewogICAgICAgICAgICB0aGlzLnJlYWRzLnB1c2godGFzayk7CiAgICAgICAgICAgIHNjaGVkdWxlRmx1c2goKTsKICAgICAgICAgICAgcmV0dXJuIHRhc2s7CiAgICAgICAgfSwKCiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHRhc2spIHsKICAgICAgICAgICAgdGhpcy53cml0ZXMucHVzaCh0YXNrKTsKICAgICAgICAgICAgc2NoZWR1bGVGbHVzaCgpOwogICAgICAgICAgICByZXR1cm4gdGFzazsKICAgICAgICB9LAoKICAgICAgICBjbGVhcjogZnVuY3Rpb24odGFzaykgewogICAgICAgICAgICByZXR1cm4gcmVtb3ZlJDEodGhpcy5yZWFkcywgdGFzaykgfHwgcmVtb3ZlJDEodGhpcy53cml0ZXMsIHRhc2spOwogICAgICAgIH0sCgogICAgICAgIGZsdXNoOiBmbHVzaAoKICAgIH07CgogICAgZnVuY3Rpb24gZmx1c2goKSB7CiAgICAgICAgcnVuVGFza3MoZmFzdGRvbS5yZWFkcyk7CiAgICAgICAgcnVuVGFza3MoZmFzdGRvbS53cml0ZXMuc3BsaWNlKDAsIGZhc3Rkb20ud3JpdGVzLmxlbmd0aCkpOwoKICAgICAgICBmYXN0ZG9tLnNjaGVkdWxlZCA9IGZhbHNlOwoKICAgICAgICBpZiAoZmFzdGRvbS5yZWFkcy5sZW5ndGggfHwgZmFzdGRvbS53cml0ZXMubGVuZ3RoKSB7CiAgICAgICAgICAgIHNjaGVkdWxlRmx1c2godHJ1ZSk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHNjaGVkdWxlRmx1c2gobWljcm90YXNrKSB7CiAgICAgICAgaWYgKCBtaWNyb3Rhc2sgPT09IHZvaWQgMCApIG1pY3JvdGFzayA9IGZhbHNlOwoKICAgICAgICBpZiAoIWZhc3Rkb20uc2NoZWR1bGVkKSB7CiAgICAgICAgICAgIGZhc3Rkb20uc2NoZWR1bGVkID0gdHJ1ZTsKICAgICAgICAgICAgaWYgKG1pY3JvdGFzaykgewogICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmbHVzaCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZmx1c2gpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHJ1blRhc2tzKHRhc2tzKSB7CiAgICAgICAgdmFyIHRhc2s7CiAgICAgICAgd2hpbGUgKCh0YXNrID0gdGFza3Muc2hpZnQoKSkpIHsKICAgICAgICAgICAgdGFzaygpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiByZW1vdmUkMShhcnJheSwgaXRlbSkgewogICAgICAgIHZhciBpbmRleCA9IGFycmF5LmluZGV4T2YoaXRlbSk7CiAgICAgICAgcmV0dXJuICEhfmluZGV4ICYmICEhYXJyYXkuc3BsaWNlKGluZGV4LCAxKTsKICAgIH0KCiAgICBmdW5jdGlvbiBNb3VzZVRyYWNrZXIoKSB7fQoKICAgIE1vdXNlVHJhY2tlci5wcm90b3R5cGUgPSB7CgogICAgICAgIHBvc2l0aW9uczogW10sCiAgICAgICAgcG9zaXRpb246IG51bGwsCgogICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IFtdOwogICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gbnVsbDsKCiAgICAgICAgICAgIHZhciB0aWNraW5nID0gZmFsc2U7CiAgICAgICAgICAgIHRoaXMudW5iaW5kID0gb24oZG9jdW1lbnQsICdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZSkgewoKICAgICAgICAgICAgICAgIGlmICh0aWNraW5nKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgICAgICB2YXIgdGltZSA9IERhdGUubm93KCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMkMS5wb3NpdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbmd0aCA9IHJlZi5sZW5ndGg7CgogICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggJiYgKHRpbWUgLSB0aGlzJDEucG9zaXRpb25zW2xlbmd0aCAtIDFdLnRpbWUgPiAxMDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wb3NpdGlvbnMuc3BsaWNlKDAsIGxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zaXRpb25zLnB1c2goe3RpbWU6IHRpbWUsIHg6IGUucGFnZVgsIHk6IGUucGFnZVl9KTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5wb3NpdGlvbnMubGVuZ3RoID4gNSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zaXRpb25zLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB0aWNraW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9LCA1KTsKCiAgICAgICAgICAgICAgICB0aWNraW5nID0gdHJ1ZTsKICAgICAgICAgICAgfSk7CgogICAgICAgIH0sCgogICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICh0aGlzLnVuYmluZCkgewogICAgICAgICAgICAgICAgdGhpcy51bmJpbmQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIG1vdmVzVG86IGZ1bmN0aW9uKHRhcmdldCkgewoKICAgICAgICAgICAgaWYgKHRoaXMucG9zaXRpb25zLmxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHAgPSBvZmZzZXQodGFyZ2V0KTsKICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gbGFzdCh0aGlzLnBvc2l0aW9ucyk7CiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLnBvc2l0aW9uczsKICAgICAgICAgICAgdmFyIHByZXZQb3MgPSByZWZbMF07CgogICAgICAgICAgICBpZiAocC5sZWZ0IDw9IHBvc2l0aW9uLnggJiYgcG9zaXRpb24ueCA8PSBwLnJpZ2h0ICYmIHAudG9wIDw9IHBvc2l0aW9uLnkgJiYgcG9zaXRpb24ueSA8PSBwLmJvdHRvbSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgcG9pbnRzID0gWwogICAgICAgICAgICAgICAgW3t4OiBwLmxlZnQsIHk6IHAudG9wfSwge3g6IHAucmlnaHQsIHk6IHAuYm90dG9tfV0sCiAgICAgICAgICAgICAgICBbe3g6IHAucmlnaHQsIHk6IHAudG9wfSwge3g6IHAubGVmdCwgeTogcC5ib3R0b219XQogICAgICAgICAgICBdOwoKICAgICAgICAgICAgaWYgKHAucmlnaHQgPD0gcG9zaXRpb24ueCkgOyBlbHNlIGlmIChwLmxlZnQgPj0gcG9zaXRpb24ueCkgewogICAgICAgICAgICAgICAgcG9pbnRzWzBdLnJldmVyc2UoKTsKICAgICAgICAgICAgICAgIHBvaW50c1sxXS5yZXZlcnNlKCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAocC5ib3R0b20gPD0gcG9zaXRpb24ueSkgewogICAgICAgICAgICAgICAgcG9pbnRzWzBdLnJldmVyc2UoKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChwLnRvcCA+PSBwb3NpdGlvbi55KSB7CiAgICAgICAgICAgICAgICBwb2ludHNbMV0ucmV2ZXJzZSgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gISFwb2ludHMucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIHBvaW50KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHNsb3BlKHByZXZQb3MsIHBvaW50WzBdKSA8IHNsb3BlKHBvc2l0aW9uLCBwb2ludFswXSkgJiYgc2xvcGUocHJldlBvcywgcG9pbnRbMV0pID4gc2xvcGUocG9zaXRpb24sIHBvaW50WzFdKSk7CiAgICAgICAgICAgIH0sIDApOwogICAgICAgIH0KCiAgICB9OwoKICAgIGZ1bmN0aW9uIHNsb3BlKGEsIGIpIHsKICAgICAgICByZXR1cm4gKGIueSAtIGEueSkgLyAoYi54IC0gYS54KTsKICAgIH0KCiAgICB2YXIgc3RyYXRzID0ge307CgogICAgc3RyYXRzLmV2ZW50cyA9CiAgICBzdHJhdHMuY3JlYXRlZCA9CiAgICBzdHJhdHMuYmVmb3JlQ29ubmVjdCA9CiAgICBzdHJhdHMuY29ubmVjdGVkID0KICAgIHN0cmF0cy5iZWZvcmVEaXNjb25uZWN0ID0KICAgIHN0cmF0cy5kaXNjb25uZWN0ZWQgPQogICAgc3RyYXRzLmRlc3Ryb3kgPSBjb25jYXRTdHJhdDsKCiAgICAvLyBhcmdzIHN0cmF0ZWd5CiAgICBzdHJhdHMuYXJncyA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7CiAgICAgICAgcmV0dXJuIGNoaWxkVmFsICE9PSBmYWxzZSAmJiBjb25jYXRTdHJhdChjaGlsZFZhbCB8fCBwYXJlbnRWYWwpOwogICAgfTsKCiAgICAvLyB1cGRhdGUgc3RyYXRlZ3kKICAgIHN0cmF0cy51cGRhdGUgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkgewogICAgICAgIHJldHVybiBzb3J0QnkoY29uY2F0U3RyYXQocGFyZW50VmFsLCBpc0Z1bmN0aW9uKGNoaWxkVmFsKSA/IHtyZWFkOiBjaGlsZFZhbH0gOiBjaGlsZFZhbCksICdvcmRlcicpOwogICAgfTsKCiAgICAvLyBwcm9wZXJ0eSBzdHJhdGVneQogICAgc3RyYXRzLnByb3BzID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHsKCiAgICAgICAgaWYgKGlzQXJyYXkoY2hpbGRWYWwpKSB7CiAgICAgICAgICAgIGNoaWxkVmFsID0gY2hpbGRWYWwucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7CiAgICAgICAgICAgICAgICB2YWx1ZVtrZXldID0gU3RyaW5nOwogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICAgICB9LCB7fSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3RyYXRzLm1ldGhvZHMocGFyZW50VmFsLCBjaGlsZFZhbCk7CiAgICB9OwoKICAgIC8vIGV4dGVuZCBzdHJhdGVneQogICAgc3RyYXRzLmNvbXB1dGVkID0KICAgIHN0cmF0cy5tZXRob2RzID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHsKICAgICAgICByZXR1cm4gY2hpbGRWYWwKICAgICAgICAgICAgPyBwYXJlbnRWYWwKICAgICAgICAgICAgICAgID8gYXNzaWduKHt9LCBwYXJlbnRWYWwsIGNoaWxkVmFsKQogICAgICAgICAgICAgICAgOiBjaGlsZFZhbAogICAgICAgICAgICA6IHBhcmVudFZhbDsKICAgIH07CgogICAgLy8gZGF0YSBzdHJhdGVneQogICAgc3RyYXRzLmRhdGEgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCwgdm0pIHsKCiAgICAgICAgaWYgKCF2bSkgewoKICAgICAgICAgICAgaWYgKCFjaGlsZFZhbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZhbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFwYXJlbnRWYWwpIHsKICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZFZhbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2bSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlRm5EYXRhKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKTsKICAgICAgICAgICAgfTsKCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbWVyZ2VGbkRhdGEocGFyZW50VmFsLCBjaGlsZFZhbCwgdm0pOwogICAgfTsKCiAgICBmdW5jdGlvbiBtZXJnZUZuRGF0YShwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSkgewogICAgICAgIHJldHVybiBzdHJhdHMuY29tcHV0ZWQoCiAgICAgICAgICAgIGlzRnVuY3Rpb24ocGFyZW50VmFsKQogICAgICAgICAgICAgICAgPyBwYXJlbnRWYWwuY2FsbCh2bSwgdm0pCiAgICAgICAgICAgICAgICA6IHBhcmVudFZhbCwKICAgICAgICAgICAgaXNGdW5jdGlvbihjaGlsZFZhbCkKICAgICAgICAgICAgICAgID8gY2hpbGRWYWwuY2FsbCh2bSwgdm0pCiAgICAgICAgICAgICAgICA6IGNoaWxkVmFsCiAgICAgICAgKTsKICAgIH0KCiAgICAvLyBjb25jYXQgc3RyYXRlZ3kKICAgIGZ1bmN0aW9uIGNvbmNhdFN0cmF0KHBhcmVudFZhbCwgY2hpbGRWYWwpIHsKCiAgICAgICAgcGFyZW50VmFsID0gcGFyZW50VmFsICYmICFpc0FycmF5KHBhcmVudFZhbCkgPyBbcGFyZW50VmFsXSA6IHBhcmVudFZhbDsKCiAgICAgICAgcmV0dXJuIGNoaWxkVmFsCiAgICAgICAgICAgID8gcGFyZW50VmFsCiAgICAgICAgICAgICAgICA/IHBhcmVudFZhbC5jb25jYXQoY2hpbGRWYWwpCiAgICAgICAgICAgICAgICA6IGlzQXJyYXkoY2hpbGRWYWwpCiAgICAgICAgICAgICAgICAgICAgPyBjaGlsZFZhbAogICAgICAgICAgICAgICAgICAgIDogW2NoaWxkVmFsXQogICAgICAgICAgICA6IHBhcmVudFZhbDsKICAgIH0KCiAgICAvLyBkZWZhdWx0IHN0cmF0ZWd5CiAgICBmdW5jdGlvbiBkZWZhdWx0U3RyYXQocGFyZW50VmFsLCBjaGlsZFZhbCkgewogICAgICAgIHJldHVybiBpc1VuZGVmaW5lZChjaGlsZFZhbCkgPyBwYXJlbnRWYWwgOiBjaGlsZFZhbDsKICAgIH0KCiAgICBmdW5jdGlvbiBtZXJnZU9wdGlvbnMocGFyZW50LCBjaGlsZCwgdm0pIHsKCiAgICAgICAgdmFyIG9wdGlvbnMgPSB7fTsKCiAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2hpbGQpKSB7CiAgICAgICAgICAgIGNoaWxkID0gY2hpbGQub3B0aW9uczsKICAgICAgICB9CgogICAgICAgIGlmIChjaGlsZC5leHRlbmRzKSB7CiAgICAgICAgICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLmV4dGVuZHMsIHZtKTsKICAgICAgICB9CgogICAgICAgIGlmIChjaGlsZC5taXhpbnMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgICAgICAgICBwYXJlbnQgPSBtZXJnZU9wdGlvbnMocGFyZW50LCBjaGlsZC5taXhpbnNbaV0sIHZtKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yICh2YXIga2V5IGluIHBhcmVudCkgewogICAgICAgICAgICBtZXJnZUtleShrZXkpOwogICAgICAgIH0KCiAgICAgICAgZm9yICh2YXIga2V5JDEgaW4gY2hpbGQpIHsKICAgICAgICAgICAgaWYgKCFoYXNPd24ocGFyZW50LCBrZXkkMSkpIHsKICAgICAgICAgICAgICAgIG1lcmdlS2V5KGtleSQxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbWVyZ2VLZXkoa2V5KSB7CiAgICAgICAgICAgIG9wdGlvbnNba2V5XSA9IChzdHJhdHNba2V5XSB8fCBkZWZhdWx0U3RyYXQpKHBhcmVudFtrZXldLCBjaGlsZFtrZXldLCB2bSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gb3B0aW9uczsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZU9wdGlvbnMob3B0aW9ucywgYXJncykgewogICAgICAgIHZhciBvYmo7CgogICAgICAgIGlmICggYXJncyA9PT0gdm9pZCAwICkgYXJncyA9IFtdOwoKICAgICAgICB0cnkgewoKICAgICAgICAgICAgcmV0dXJuICFvcHRpb25zCiAgICAgICAgICAgICAgICA/IHt9CiAgICAgICAgICAgICAgICA6IHN0YXJ0c1dpdGgob3B0aW9ucywgJ3snKQogICAgICAgICAgICAgICAgICAgID8gSlNPTi5wYXJzZShvcHRpb25zKQogICAgICAgICAgICAgICAgICAgIDogYXJncy5sZW5ndGggJiYgIWluY2x1ZGVzKG9wdGlvbnMsICc6JykKICAgICAgICAgICAgICAgICAgICAgICAgPyAoKCBvYmogPSB7fSwgb2JqW2FyZ3NbMF1dID0gb3B0aW9ucywgb2JqICkpCiAgICAgICAgICAgICAgICAgICAgICAgIDogb3B0aW9ucy5zcGxpdCgnOycpLnJlZHVjZShmdW5jdGlvbiAob3B0aW9ucywgb3B0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb3B0aW9uLnNwbGl0KC86KC4qKS8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IHJlZlswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHJlZlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgJiYgIWlzVW5kZWZpbmVkKHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNba2V5LnRyaW0oKV0gPSB2YWx1ZS50cmltKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uczsKICAgICAgICAgICAgICAgICAgICAgICAgfSwge30pOwoKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIHJldHVybiB7fTsKICAgICAgICB9CgogICAgfQoKICAgIHZhciBpZCA9IDA7CgogICAgdmFyIFBsYXllciA9IGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgdGhpcy5pZCA9ICsraWQ7CiAgICAgICAgdGhpcy5lbCA9IHRvTm9kZShlbCk7CiAgICB9OwoKICAgIFBsYXllci5wcm90b3R5cGUuaXNWaWRlbyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1lvdXR1YmUoKSB8fCB0aGlzLmlzVmltZW8oKSB8fCB0aGlzLmlzSFRNTDUoKTsKICAgIH07CgogICAgUGxheWVyLnByb3RvdHlwZS5pc0hUTUw1ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiB0aGlzLmVsLnRhZ05hbWUgPT09ICdWSURFTyc7CiAgICB9OwoKICAgIFBsYXllci5wcm90b3R5cGUuaXNJRnJhbWUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZWwudGFnTmFtZSA9PT0gJ0lGUkFNRSc7CiAgICB9OwoKICAgIFBsYXllci5wcm90b3R5cGUuaXNZb3V0dWJlID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiB0aGlzLmlzSUZyYW1lKCkgJiYgISF0aGlzLmVsLnNyYy5tYXRjaCgvXC9cLy4qP3lvdXR1YmUoLW5vY29va2llKT9cLlthLXpdK1wvKHdhdGNoXD92PVteJlxzXSt8ZW1iZWQpfHlvdXR1XC5iZVwvLiovKTsKICAgIH07CgogICAgUGxheWVyLnByb3RvdHlwZS5pc1ZpbWVvID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiB0aGlzLmlzSUZyYW1lKCkgJiYgISF0aGlzLmVsLnNyYy5tYXRjaCgvdmltZW9cLmNvbVwvdmlkZW9cLy4qLyk7CiAgICB9OwoKICAgIFBsYXllci5wcm90b3R5cGUuZW5hYmxlQXBpID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgIGlmICh0aGlzLnJlYWR5KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWR5OwogICAgICAgIH0KCiAgICAgICAgdmFyIHlvdXR1YmUgPSB0aGlzLmlzWW91dHViZSgpOwogICAgICAgIHZhciB2aW1lbyA9IHRoaXMuaXNWaW1lbygpOwoKICAgICAgICB2YXIgcG9sbGVyOwoKICAgICAgICBpZiAoeW91dHViZSB8fCB2aW1lbykgewoKICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZHkgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkgewoKICAgICAgICAgICAgICAgIG9uY2UodGhpcyQxLmVsLCAnbG9hZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoeW91dHViZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2V2ZW50OiAnbGlzdGVuaW5nJywgaWQ6IHRoaXMkMS5pZH0pOyB9OwogICAgICAgICAgICAgICAgICAgICAgICBwb2xsZXIgPSBzZXRJbnRlcnZhbChsaXN0ZW5lciwgMTAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBsaXN0ZW4oZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIHlvdXR1YmUgJiYgZGF0YS5pZCA9PT0gdGhpcyQxLmlkICYmIGRhdGEuZXZlbnQgPT09ICdvblJlYWR5JyB8fCB2aW1lbyAmJiBOdW1iZXIoZGF0YS5wbGF5ZXJfaWQpID09PSB0aGlzJDEuaWQ7IH0pCiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxlciAmJiBjbGVhckludGVydmFsKHBvbGxlcik7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgYXR0cih0aGlzJDEuZWwsICdzcmMnLCAoIiIgKyAodGhpcyQxLmVsLnNyYykgKyAoaW5jbHVkZXModGhpcyQxLmVsLnNyYywgJz8nKSA/ICcmJyA6ICc/JykgKyAoeW91dHViZSA/ICdlbmFibGVqc2FwaT0xJyA6ICgiYXBpPTEmcGxheWVyX2lkPSIgKyAodGhpcyQxLmlkKSkpKSk7CgogICAgICAgICAgICB9KTsKCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CgogICAgfTsKCiAgICBQbGF5ZXIucHJvdG90eXBlLnBsYXkgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgaWYgKCF0aGlzLmlzVmlkZW8oKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAodGhpcy5pc0lGcmFtZSgpKSB7CiAgICAgICAgICAgIHRoaXMuZW5hYmxlQXBpKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2Z1bmM6ICdwbGF5VmlkZW8nLCBtZXRob2Q6ICdwbGF5J30pOyB9KTsKICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNIVE1MNSgpKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXMuZWwucGxheSgpOwoKICAgICAgICAgICAgICAgIGlmIChwcm9taXNlKSB7CiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5jYXRjaChub29wKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICB9CiAgICB9OwoKICAgIFBsYXllci5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgaWYgKCF0aGlzLmlzVmlkZW8oKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAodGhpcy5pc0lGcmFtZSgpKSB7CiAgICAgICAgICAgIHRoaXMuZW5hYmxlQXBpKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2Z1bmM6ICdwYXVzZVZpZGVvJywgbWV0aG9kOiAncGF1c2UnfSk7IH0pOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0hUTUw1KCkpIHsKICAgICAgICAgICAgdGhpcy5lbC5wYXVzZSgpOwogICAgICAgIH0KICAgIH07CgogICAgUGxheWVyLnByb3RvdHlwZS5tdXRlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgIGlmICghdGhpcy5pc1ZpZGVvKCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuaXNJRnJhbWUoKSkgewogICAgICAgICAgICB0aGlzLmVuYWJsZUFwaSgpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gcG9zdCh0aGlzJDEuZWwsIHtmdW5jOiAnbXV0ZScsIG1ldGhvZDogJ3NldFZvbHVtZScsIHZhbHVlOiAwfSk7IH0pOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0hUTUw1KCkpIHsKICAgICAgICAgICAgdGhpcy5lbC5tdXRlZCA9IHRydWU7CiAgICAgICAgICAgIGF0dHIodGhpcy5lbCwgJ211dGVkJywgJycpOwogICAgICAgIH0KCiAgICB9OwoKICAgIGZ1bmN0aW9uIHBvc3QoZWwsIGNtZCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGVsLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoYXNzaWduKHtldmVudDogJ2NvbW1hbmQnfSwgY21kKSksICcqJyk7CiAgICAgICAgfSBjYXRjaCAoZSkge30KICAgIH0KCiAgICBmdW5jdGlvbiBsaXN0ZW4oY2IpIHsKCiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CgogICAgICAgICAgICBvbmNlKHdpbmRvdywgJ21lc3NhZ2UnLCBmdW5jdGlvbiAoXywgZGF0YSkgeyByZXR1cm4gcmVzb2x2ZShkYXRhKTsgfSwgZmFsc2UsIGZ1bmN0aW9uIChyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBkYXRhID0gcmVmLmRhdGE7CgoKICAgICAgICAgICAgICAgIGlmICghZGF0YSB8fCAhaXNTdHJpbmcoZGF0YSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEgJiYgY2IoZGF0YSk7CgogICAgICAgICAgICB9KTsKCiAgICAgICAgfSk7CgogICAgfQoKICAgIHZhciBJbnRlcnNlY3Rpb25PYnNlcnZlciA9ICdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93CiAgICAgICAgPyB3aW5kb3cuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIKICAgICAgICA6IC8qQF9fUFVSRV9fKi8oZnVuY3Rpb24gKCkgewogICAgICAgIGZ1bmN0aW9uIEludGVyc2VjdGlvbk9ic2VydmVyQ2xhc3MoY2FsbGJhY2ssIHJlZikgewogICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKICAgICAgICAgICAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9OwogICAgICAgICAgICB2YXIgcm9vdE1hcmdpbiA9IHJlZi5yb290TWFyZ2luOyBpZiAoIHJvb3RNYXJnaW4gPT09IHZvaWQgMCApIHJvb3RNYXJnaW4gPSAnMCAwJzsKCgogICAgICAgICAgICAgICAgdGhpcy50YXJnZXRzID0gW107CgogICAgICAgICAgICAgICAgdmFyIHJlZiQxID0gKHJvb3RNYXJnaW4gfHwgJzAgMCcpLnNwbGl0KCcgJykubWFwKHRvRmxvYXQpOwogICAgICAgICAgICB2YXIgb2Zmc2V0VG9wID0gcmVmJDFbMF07CiAgICAgICAgICAgIHZhciBvZmZzZXRMZWZ0ID0gcmVmJDFbMV07CgogICAgICAgICAgICAgICAgdGhpcy5vZmZzZXRUb3AgPSBvZmZzZXRUb3A7CiAgICAgICAgICAgICAgICB0aGlzLm9mZnNldExlZnQgPSBvZmZzZXRMZWZ0OwoKICAgICAgICAgICAgICAgIHZhciBwZW5kaW5nOwogICAgICAgICAgICAgICAgdGhpcy5hcHBseSA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHBlbmRpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcGVuZGluZyA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlY29yZHMgPSB0aGlzJDEudGFrZVJlY29yZHMoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvcmRzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVjb3JkcywgdGhpcyQxKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcGVuZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0pOyB9KTsKCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIHRoaXMub2ZmID0gb24od2luZG93LCAnc2Nyb2xsIHJlc2l6ZSBsb2FkJywgdGhpcy5hcHBseSwge3Bhc3NpdmU6IHRydWUsIGNhcHR1cmU6IHRydWV9KTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIEludGVyc2VjdGlvbk9ic2VydmVyQ2xhc3MucHJvdG90eXBlLnRha2VSZWNvcmRzID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0cy5maWx0ZXIoZnVuY3Rpb24gKGVudHJ5KSB7CgogICAgICAgICAgICAgICAgICAgIHZhciBpblZpZXcgPSBpc0luVmlldyhlbnRyeS50YXJnZXQsIHRoaXMkMS5vZmZzZXRUb3AsIHRoaXMkMS5vZmZzZXRMZWZ0KTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nID09PSBudWxsIHx8IGluVmlldyBeIGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LmlzSW50ZXJzZWN0aW5nID0gaW5WaWV3OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZlckNsYXNzLnByb3RvdHlwZS5vYnNlcnZlID0gZnVuY3Rpb24gKHRhcmdldCkgewogICAgICAgICAgICAgICAgdGhpcy50YXJnZXRzLnB1c2goewogICAgICAgICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgIGlzSW50ZXJzZWN0aW5nOiBudWxsCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHRoaXMuYXBwbHkoKTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIEludGVyc2VjdGlvbk9ic2VydmVyQ2xhc3MucHJvdG90eXBlLmRpc2Nvbm5lY3QgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB0aGlzLnRhcmdldHMgPSBbXTsKICAgICAgICAgICAgICAgIHRoaXMub2ZmKCk7CiAgICAgICAgICAgIH07CgogICAgICAgIHJldHVybiBJbnRlcnNlY3Rpb25PYnNlcnZlckNsYXNzOwogICAgfSgpKTsKCgoKICAgIHZhciB1dGlsID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoewogICAgICAgIGFqYXg6IGFqYXgsCiAgICAgICAgZ2V0SW1hZ2U6IGdldEltYWdlLAogICAgICAgIHRyYW5zaXRpb246IHRyYW5zaXRpb24sCiAgICAgICAgVHJhbnNpdGlvbjogVHJhbnNpdGlvbiwKICAgICAgICBhbmltYXRlOiBhbmltYXRlLAogICAgICAgIEFuaW1hdGlvbjogQW5pbWF0aW9uLAogICAgICAgIGF0dHI6IGF0dHIsCiAgICAgICAgaGFzQXR0cjogaGFzQXR0ciwKICAgICAgICByZW1vdmVBdHRyOiByZW1vdmVBdHRyLAogICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgYWRkQ2xhc3M6IGFkZENsYXNzLAogICAgICAgIHJlbW92ZUNsYXNzOiByZW1vdmVDbGFzcywKICAgICAgICByZW1vdmVDbGFzc2VzOiByZW1vdmVDbGFzc2VzLAogICAgICAgIHJlcGxhY2VDbGFzczogcmVwbGFjZUNsYXNzLAogICAgICAgIGhhc0NsYXNzOiBoYXNDbGFzcywKICAgICAgICB0b2dnbGVDbGFzczogdG9nZ2xlQ2xhc3MsCiAgICAgICAgcG9zaXRpb25BdDogcG9zaXRpb25BdCwKICAgICAgICBvZmZzZXQ6IG9mZnNldCwKICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sCiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsCiAgICAgICAgd2lkdGg6IHdpZHRoLAogICAgICAgIGJveE1vZGVsQWRqdXN0OiBib3hNb2RlbEFkanVzdCwKICAgICAgICBmbGlwUG9zaXRpb246IGZsaXBQb3NpdGlvbiwKICAgICAgICBpc0luVmlldzogaXNJblZpZXcsCiAgICAgICAgc2Nyb2xsZWRPdmVyOiBzY3JvbGxlZE92ZXIsCiAgICAgICAgc2Nyb2xsVG9wOiBzY3JvbGxUb3AsCiAgICAgICAgb2Zmc2V0UG9zaXRpb246IG9mZnNldFBvc2l0aW9uLAogICAgICAgIHRvUHg6IHRvUHgsCiAgICAgICAgcmVhZHk6IHJlYWR5LAogICAgICAgIGluZGV4OiBpbmRleCwKICAgICAgICBnZXRJbmRleDogZ2V0SW5kZXgsCiAgICAgICAgZW1wdHk6IGVtcHR5LAogICAgICAgIGh0bWw6IGh0bWwsCiAgICAgICAgcHJlcGVuZDogcHJlcGVuZCwKICAgICAgICBhcHBlbmQ6IGFwcGVuZCwKICAgICAgICBiZWZvcmU6IGJlZm9yZSwKICAgICAgICBhZnRlcjogYWZ0ZXIsCiAgICAgICAgcmVtb3ZlOiByZW1vdmUsCiAgICAgICAgd3JhcEFsbDogd3JhcEFsbCwKICAgICAgICB3cmFwSW5uZXI6IHdyYXBJbm5lciwKICAgICAgICB1bndyYXA6IHVud3JhcCwKICAgICAgICBmcmFnbWVudDogZnJhZ21lbnQsCiAgICAgICAgYXBwbHk6IGFwcGx5LAogICAgICAgICQ6ICQsCiAgICAgICAgJCQ6ICQkLAogICAgICAgIGlzSUU6IGlzSUUsCiAgICAgICAgaXNSdGw6IGlzUnRsLAogICAgICAgIGhhc1RvdWNoOiBoYXNUb3VjaCwKICAgICAgICBwb2ludGVyRG93bjogcG9pbnRlckRvd24sCiAgICAgICAgcG9pbnRlck1vdmU6IHBvaW50ZXJNb3ZlLAogICAgICAgIHBvaW50ZXJVcDogcG9pbnRlclVwLAogICAgICAgIHBvaW50ZXJFbnRlcjogcG9pbnRlckVudGVyLAogICAgICAgIHBvaW50ZXJMZWF2ZTogcG9pbnRlckxlYXZlLAogICAgICAgIHBvaW50ZXJDYW5jZWw6IHBvaW50ZXJDYW5jZWwsCiAgICAgICAgb246IG9uLAogICAgICAgIG9mZjogb2ZmLAogICAgICAgIG9uY2U6IG9uY2UsCiAgICAgICAgdHJpZ2dlcjogdHJpZ2dlciwKICAgICAgICBjcmVhdGVFdmVudDogY3JlYXRlRXZlbnQsCiAgICAgICAgdG9FdmVudFRhcmdldHM6IHRvRXZlbnRUYXJnZXRzLAogICAgICAgIGlzVG91Y2g6IGlzVG91Y2gsCiAgICAgICAgZ2V0RXZlbnRQb3M6IGdldEV2ZW50UG9zLAogICAgICAgIGZhc3Rkb206IGZhc3Rkb20sCiAgICAgICAgaXNWb2lkRWxlbWVudDogaXNWb2lkRWxlbWVudCwKICAgICAgICBpc1Zpc2libGU6IGlzVmlzaWJsZSwKICAgICAgICBzZWxJbnB1dDogc2VsSW5wdXQsCiAgICAgICAgaXNJbnB1dDogaXNJbnB1dCwKICAgICAgICBmaWx0ZXI6IGZpbHRlciwKICAgICAgICB3aXRoaW46IHdpdGhpbiwKICAgICAgICBoYXNPd246IGhhc093biwKICAgICAgICBoeXBoZW5hdGU6IGh5cGhlbmF0ZSwKICAgICAgICBjYW1lbGl6ZTogY2FtZWxpemUsCiAgICAgICAgdWNmaXJzdDogdWNmaXJzdCwKICAgICAgICBzdGFydHNXaXRoOiBzdGFydHNXaXRoLAogICAgICAgIGVuZHNXaXRoOiBlbmRzV2l0aCwKICAgICAgICBpbmNsdWRlczogaW5jbHVkZXMsCiAgICAgICAgZmluZEluZGV4OiBmaW5kSW5kZXgsCiAgICAgICAgaXNBcnJheTogaXNBcnJheSwKICAgICAgICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uLAogICAgICAgIGlzT2JqZWN0OiBpc09iamVjdCwKICAgICAgICBpc1BsYWluT2JqZWN0OiBpc1BsYWluT2JqZWN0LAogICAgICAgIGlzV2luZG93OiBpc1dpbmRvdywKICAgICAgICBpc0RvY3VtZW50OiBpc0RvY3VtZW50LAogICAgICAgIGlzSlF1ZXJ5OiBpc0pRdWVyeSwKICAgICAgICBpc05vZGU6IGlzTm9kZSwKICAgICAgICBpc05vZGVDb2xsZWN0aW9uOiBpc05vZGVDb2xsZWN0aW9uLAogICAgICAgIGlzQm9vbGVhbjogaXNCb29sZWFuLAogICAgICAgIGlzU3RyaW5nOiBpc1N0cmluZywKICAgICAgICBpc051bWJlcjogaXNOdW1iZXIsCiAgICAgICAgaXNOdW1lcmljOiBpc051bWVyaWMsCiAgICAgICAgaXNFbXB0eTogaXNFbXB0eSwKICAgICAgICBpc1VuZGVmaW5lZDogaXNVbmRlZmluZWQsCiAgICAgICAgdG9Cb29sZWFuOiB0b0Jvb2xlYW4sCiAgICAgICAgdG9OdW1iZXI6IHRvTnVtYmVyLAogICAgICAgIHRvRmxvYXQ6IHRvRmxvYXQsCiAgICAgICAgdG9Ob2RlOiB0b05vZGUsCiAgICAgICAgdG9Ob2RlczogdG9Ob2RlcywKICAgICAgICB0b0xpc3Q6IHRvTGlzdCwKICAgICAgICB0b01zOiB0b01zLAogICAgICAgIGlzRXF1YWw6IGlzRXF1YWwsCiAgICAgICAgc3dhcDogc3dhcCwKICAgICAgICBhc3NpZ246IGFzc2lnbiwKICAgICAgICBsYXN0OiBsYXN0LAogICAgICAgIGVhY2g6IGVhY2gsCiAgICAgICAgc29ydEJ5OiBzb3J0QnksCiAgICAgICAgdW5pcXVlQnk6IHVuaXF1ZUJ5LAogICAgICAgIGNsYW1wOiBjbGFtcCwKICAgICAgICBub29wOiBub29wLAogICAgICAgIGludGVyc2VjdFJlY3Q6IGludGVyc2VjdFJlY3QsCiAgICAgICAgcG9pbnRJblJlY3Q6IHBvaW50SW5SZWN0LAogICAgICAgIERpbWVuc2lvbnM6IERpbWVuc2lvbnMsCiAgICAgICAgTW91c2VUcmFja2VyOiBNb3VzZVRyYWNrZXIsCiAgICAgICAgbWVyZ2VPcHRpb25zOiBtZXJnZU9wdGlvbnMsCiAgICAgICAgcGFyc2VPcHRpb25zOiBwYXJzZU9wdGlvbnMsCiAgICAgICAgUGxheWVyOiBQbGF5ZXIsCiAgICAgICAgUHJvbWlzZTogUHJvbWlzZSwKICAgICAgICBEZWZlcnJlZDogRGVmZXJyZWQsCiAgICAgICAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyLAogICAgICAgIHF1ZXJ5OiBxdWVyeSwKICAgICAgICBxdWVyeUFsbDogcXVlcnlBbGwsCiAgICAgICAgZmluZDogZmluZCwKICAgICAgICBmaW5kQWxsOiBmaW5kQWxsLAogICAgICAgIG1hdGNoZXM6IG1hdGNoZXMsCiAgICAgICAgY2xvc2VzdDogY2xvc2VzdCwKICAgICAgICBwYXJlbnRzOiBwYXJlbnRzLAogICAgICAgIGVzY2FwZTogZXNjYXBlLAogICAgICAgIGNzczogY3NzLAogICAgICAgIGdldFN0eWxlczogZ2V0U3R5bGVzLAogICAgICAgIGdldFN0eWxlOiBnZXRTdHlsZSwKICAgICAgICBnZXRDc3NWYXI6IGdldENzc1ZhciwKICAgICAgICBwcm9wTmFtZTogcHJvcE5hbWUKICAgIH0pOwoKICAgIGZ1bmN0aW9uIGNvbXBvbmVudEFQSSAoVUlraXQpIHsKCiAgICAgICAgdmFyIERBVEEgPSBVSWtpdC5kYXRhOwoKICAgICAgICB2YXIgY29tcG9uZW50cyA9IHt9OwoKICAgICAgICBVSWtpdC5jb21wb25lbnQgPSBmdW5jdGlvbiAobmFtZSwgb3B0aW9ucykgewoKICAgICAgICAgICAgaWYgKCFvcHRpb25zKSB7CgogICAgICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QoY29tcG9uZW50c1tuYW1lXSkpIHsKICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzW25hbWVdID0gVUlraXQuZXh0ZW5kKGNvbXBvbmVudHNbbmFtZV0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRzW25hbWVdOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgVUlraXRbbmFtZV0gPSBmdW5jdGlvbiAoZWxlbWVudCwgZGF0YSkgewogICAgICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzQXJyYXkgPSBBcnJheShpKTsKICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgYXJnc0FycmF5W2ldID0gYXJndW1lbnRzW2ldOwoKCiAgICAgICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gVUlraXQuY29tcG9uZW50KG5hbWUpOwoKICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBjb21wb25lbnQoe2RhdGE6IGVsZW1lbnR9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50Lm9wdGlvbnMuZnVuY3Rpb25hbCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgY29tcG9uZW50KHtkYXRhOiBbXS5jb25jYXQoIGFyZ3NBcnJheSApfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSA/IGluaXQoZWxlbWVudCkgOiAkJChlbGVtZW50KS5tYXAoaW5pdClbMF07CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaW5pdChlbGVtZW50KSB7CgogICAgICAgICAgICAgICAgICAgIHZhciBpbnN0YW5jZSA9IFVJa2l0LmdldENvbXBvbmVudChlbGVtZW50LCBuYW1lKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuJGRlc3Ryb3koKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBjb21wb25lbnQoe2VsOiBlbGVtZW50LCBkYXRhOiBkYXRhfSk7CgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHZhciBvcHQgPSBpc1BsYWluT2JqZWN0KG9wdGlvbnMpID8gYXNzaWduKHt9LCBvcHRpb25zKSA6IG9wdGlvbnMub3B0aW9uczsKCiAgICAgICAgICAgIG9wdC5uYW1lID0gbmFtZTsKCiAgICAgICAgICAgIGlmIChvcHQuaW5zdGFsbCkgewogICAgICAgICAgICAgICAgb3B0Lmluc3RhbGwoVUlraXQsIG9wdCwgbmFtZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChVSWtpdC5faW5pdGlhbGl6ZWQgJiYgIW9wdC5mdW5jdGlvbmFsKSB7CiAgICAgICAgICAgICAgICB2YXIgaWQgPSBoeXBoZW5hdGUobmFtZSk7CiAgICAgICAgICAgICAgICBmYXN0ZG9tLnJlYWQoZnVuY3Rpb24gKCkgeyByZXR1cm4gVUlraXRbbmFtZV0oKCJbdWstIiArIGlkICsgIl0sW2RhdGEtdWstIiArIGlkICsgIl0iKSk7IH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gY29tcG9uZW50c1tuYW1lXSA9IGlzUGxhaW5PYmplY3Qob3B0aW9ucykgPyBvcHQgOiBvcHRpb25zOwogICAgICAgIH07CgogICAgICAgIFVJa2l0LmdldENvbXBvbmVudHMgPSBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50W0RBVEFdIHx8IHt9OyB9OwogICAgICAgIFVJa2l0LmdldENvbXBvbmVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBuYW1lKSB7IHJldHVybiBVSWtpdC5nZXRDb21wb25lbnRzKGVsZW1lbnQpW25hbWVdOyB9OwoKICAgICAgICBVSWtpdC5jb25uZWN0ID0gZnVuY3Rpb24gKG5vZGUpIHsKCiAgICAgICAgICAgIGlmIChub2RlW0RBVEFdKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIG5vZGVbREFUQV0pIHsKICAgICAgICAgICAgICAgICAgICBub2RlW0RBVEFdW25hbWVdLl9jYWxsQ29ubmVjdGVkKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7CgogICAgICAgICAgICAgICAgdmFyIG5hbWUkMSA9IGdldENvbXBvbmVudE5hbWUobm9kZS5hdHRyaWJ1dGVzW2ldLm5hbWUpOwoKICAgICAgICAgICAgICAgIGlmIChuYW1lJDEgJiYgbmFtZSQxIGluIGNvbXBvbmVudHMpIHsKICAgICAgICAgICAgICAgICAgICBVSWtpdFtuYW1lJDFdKG5vZGUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICB9OwoKICAgICAgICBVSWtpdC5kaXNjb25uZWN0ID0gZnVuY3Rpb24gKG5vZGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBub2RlW0RBVEFdKSB7CiAgICAgICAgICAgICAgICBub2RlW0RBVEFdW25hbWVdLl9jYWxsRGlzY29ubmVjdGVkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnROYW1lKGF0dHJpYnV0ZSkgewogICAgICAgIHJldHVybiBzdGFydHNXaXRoKGF0dHJpYnV0ZSwgJ3VrLScpIHx8IHN0YXJ0c1dpdGgoYXR0cmlidXRlLCAnZGF0YS11ay0nKQogICAgICAgICAgICA/IGNhbWVsaXplKGF0dHJpYnV0ZS5yZXBsYWNlKCdkYXRhLXVrLScsICcnKS5yZXBsYWNlKCd1ay0nLCAnJykpCiAgICAgICAgICAgIDogZmFsc2U7CiAgICB9CgogICAgZnVuY3Rpb24gYm9vdCAoVUlraXQpIHsKCiAgICAgICAgdmFyIGNvbm5lY3QgPSBVSWtpdC5jb25uZWN0OwogICAgICAgIHZhciBkaXNjb25uZWN0ID0gVUlraXQuZGlzY29ubmVjdDsKCiAgICAgICAgaWYgKCEoJ011dGF0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkpIHsKCiAgICAgICAgICAgIGZhc3Rkb20ucmVhZChpbml0KTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgIChuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3QoKTsKICAgICAgICAgICAgICAgICAgICBpbml0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9KSkub2JzZXJ2ZShkb2N1bWVudCwge2NoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOwoKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7CgogICAgICAgICAgICBhcHBseShkb2N1bWVudC5ib2R5LCBjb25uZWN0KTsKCiAgICAgICAgICAgIC8vIFNhZmFyaSByZW5kZXJzIHByaW9yIHRvIGZpcnN0IGFuaW1hdGlvbiBmcmFtZQogICAgICAgICAgICBmYXN0ZG9tLmZsdXNoKCk7CgogICAgICAgICAgICAobmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKG11dGF0aW9ucykgeyByZXR1cm4gbXV0YXRpb25zLmZvckVhY2goYXBwbHlNdXRhdGlvbik7IH0pKS5vYnNlcnZlKGRvY3VtZW50LCB7CiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsCiAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLAogICAgICAgICAgICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZSwKICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBVSWtpdC5faW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYXBwbHlNdXRhdGlvbihtdXRhdGlvbikgewoKICAgICAgICAgICAgdmFyIHRhcmdldCA9IG11dGF0aW9uLnRhcmdldDsKICAgICAgICAgICAgdmFyIHR5cGUgPSBtdXRhdGlvbi50eXBlOwoKICAgICAgICAgICAgdmFyIHVwZGF0ZSA9IHR5cGUgIT09ICdhdHRyaWJ1dGVzJwogICAgICAgICAgICAgICAgPyBhcHBseUNoaWxkTGlzdChtdXRhdGlvbikKICAgICAgICAgICAgICAgIDogYXBwbHlBdHRyaWJ1dGUobXV0YXRpb24pOwoKICAgICAgICAgICAgdXBkYXRlICYmIFVJa2l0LnVwZGF0ZSh0YXJnZXQpOwoKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGFwcGx5QXR0cmlidXRlKHJlZikgewogICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDsKICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSByZWYuYXR0cmlidXRlTmFtZTsKCgogICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PT0gJ2hyZWYnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGF0dHJpYnV0ZU5hbWUpOwoKICAgICAgICAgICAgaWYgKCFuYW1lIHx8ICEobmFtZSBpbiBVSWtpdCkpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGhhc0F0dHIodGFyZ2V0LCBhdHRyaWJ1dGVOYW1lKSkgewogICAgICAgICAgICAgICAgVUlraXRbbmFtZV0odGFyZ2V0KTsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gVUlraXQuZ2V0Q29tcG9uZW50KHRhcmdldCwgbmFtZSk7CgogICAgICAgICAgICBpZiAoY29tcG9uZW50KSB7CiAgICAgICAgICAgICAgICBjb21wb25lbnQuJGRlc3Ryb3koKTsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYXBwbHlDaGlsZExpc3QocmVmKSB7CiAgICAgICAgICAgIHZhciBhZGRlZE5vZGVzID0gcmVmLmFkZGVkTm9kZXM7CiAgICAgICAgICAgIHZhciByZW1vdmVkTm9kZXMgPSByZWYucmVtb3ZlZE5vZGVzOwoKCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWRkZWROb2Rlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYXBwbHkoYWRkZWROb2Rlc1tpXSwgY29ubmVjdCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHJlbW92ZWROb2Rlcy5sZW5ndGg7IGkkMSsrKSB7CiAgICAgICAgICAgICAgICBhcHBseShyZW1vdmVkTm9kZXNbaSQxXSwgZGlzY29ubmVjdCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYXBwbHkobm9kZSwgZm4pIHsKCiAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSAxIHx8IGhhc0F0dHIobm9kZSwgJ3VrLW5vLWJvb3QnKSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmbihub2RlKTsKICAgICAgICAgICAgbm9kZSA9IG5vZGUuZmlyc3RFbGVtZW50Q2hpbGQ7CiAgICAgICAgICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IG5vZGUubmV4dEVsZW1lbnRTaWJsaW5nOwogICAgICAgICAgICAgICAgYXBwbHkobm9kZSwgZm4pOwogICAgICAgICAgICAgICAgbm9kZSA9IG5leHQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQoKICAgIGZ1bmN0aW9uIGdsb2JhbEFQSSAoVUlraXQpIHsKCiAgICAgICAgdmFyIERBVEEgPSBVSWtpdC5kYXRhOwoKICAgICAgICBVSWtpdC51c2UgPSBmdW5jdGlvbiAocGx1Z2luKSB7CgogICAgICAgICAgICBpZiAocGx1Z2luLmluc3RhbGxlZCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwbHVnaW4uY2FsbChudWxsLCB0aGlzKTsKICAgICAgICAgICAgcGx1Z2luLmluc3RhbGxlZCA9IHRydWU7CgogICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9OwoKICAgICAgICBVSWtpdC5taXhpbiA9IGZ1bmN0aW9uIChtaXhpbiwgY29tcG9uZW50KSB7CiAgICAgICAgICAgIGNvbXBvbmVudCA9IChpc1N0cmluZyhjb21wb25lbnQpID8gVUlraXQuY29tcG9uZW50KGNvbXBvbmVudCkgOiBjb21wb25lbnQpIHx8IHRoaXM7CiAgICAgICAgICAgIGNvbXBvbmVudC5vcHRpb25zID0gbWVyZ2VPcHRpb25zKGNvbXBvbmVudC5vcHRpb25zLCBtaXhpbik7CiAgICAgICAgfTsKCiAgICAgICAgVUlraXQuZXh0ZW5kID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKCiAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoKICAgICAgICAgICAgdmFyIFN1cGVyID0gdGhpczsKICAgICAgICAgICAgdmFyIFN1YiA9IGZ1bmN0aW9uIFVJa2l0Q29tcG9uZW50KG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBTdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpOwogICAgICAgICAgICBTdWIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3ViOwogICAgICAgICAgICBTdWIub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhTdXBlci5vcHRpb25zLCBvcHRpb25zKTsKCiAgICAgICAgICAgIFN1Yi5zdXBlciA9IFN1cGVyOwogICAgICAgICAgICBTdWIuZXh0ZW5kID0gU3VwZXIuZXh0ZW5kOwoKICAgICAgICAgICAgcmV0dXJuIFN1YjsKICAgICAgICB9OwoKICAgICAgICBVSWtpdC51cGRhdGUgPSBmdW5jdGlvbiAoZWxlbWVudCwgZSkgewoKICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQgPyB0b05vZGUoZWxlbWVudCkgOiBkb2N1bWVudC5ib2R5OwoKICAgICAgICAgICAgcGF0aChlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gdXBkYXRlKGVsZW1lbnRbREFUQV0sIGUpOyB9KTsKICAgICAgICAgICAgYXBwbHkoZWxlbWVudCwgZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHVwZGF0ZShlbGVtZW50W0RBVEFdLCBlKTsgfSk7CgogICAgICAgIH07CgogICAgICAgIHZhciBjb250YWluZXI7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFVJa2l0LCAnY29udGFpbmVyJywgewoKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIgfHwgZG9jdW1lbnQuYm9keTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICAgICAgY29udGFpbmVyID0gJChlbGVtZW50KTsKICAgICAgICAgICAgfQoKICAgICAgICB9KTsKCiAgICAgICAgZnVuY3Rpb24gdXBkYXRlKGRhdGEsIGUpIHsKCiAgICAgICAgICAgIGlmICghZGF0YSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIGRhdGEpIHsKICAgICAgICAgICAgICAgIGlmIChkYXRhW25hbWVdLl9jb25uZWN0ZWQpIHsKICAgICAgICAgICAgICAgICAgICBkYXRhW25hbWVdLl9jYWxsVXBkYXRlKGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcGF0aChub2RlLCBmbikgewogICAgICAgICAgICBpZiAobm9kZSAmJiBub2RlICE9PSBkb2N1bWVudC5ib2R5ICYmIG5vZGUucGFyZW50Tm9kZSkgewogICAgICAgICAgICAgICAgcGF0aChub2RlLnBhcmVudE5vZGUsIGZuKTsKICAgICAgICAgICAgICAgIGZuKG5vZGUucGFyZW50Tm9kZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQoKICAgIGZ1bmN0aW9uIGhvb2tzQVBJIChVSWtpdCkgewoKICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxIb29rID0gZnVuY3Rpb24gKGhvb2spIHsKICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgdmFyIGhhbmRsZXJzID0gdGhpcy4kb3B0aW9uc1tob29rXTsKCiAgICAgICAgICAgIGlmIChoYW5kbGVycykgewogICAgICAgICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gaGFuZGxlci5jYWxsKHRoaXMkMSk7IH0pOwogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgVUlraXQucHJvdG90eXBlLl9jYWxsQ29ubmVjdGVkID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgaWYgKHRoaXMuX2Nvbm5lY3RlZCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aGlzLl9kYXRhID0ge307CiAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVkcyA9IHt9OwogICAgICAgICAgICB0aGlzLl9pbml0UHJvcHMoKTsKCiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdiZWZvcmVDb25uZWN0Jyk7CiAgICAgICAgICAgIHRoaXMuX2Nvbm5lY3RlZCA9IHRydWU7CgogICAgICAgICAgICB0aGlzLl9pbml0RXZlbnRzKCk7CiAgICAgICAgICAgIHRoaXMuX2luaXRPYnNlcnZlcigpOwoKICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2Nvbm5lY3RlZCcpOwogICAgICAgICAgICB0aGlzLl9jYWxsVXBkYXRlKCk7CiAgICAgICAgfTsKCiAgICAgICAgVUlraXQucHJvdG90eXBlLl9jYWxsRGlzY29ubmVjdGVkID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgaWYgKCF0aGlzLl9jb25uZWN0ZWQpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2JlZm9yZURpc2Nvbm5lY3QnKTsKCiAgICAgICAgICAgIGlmICh0aGlzLl9vYnNlcnZlcikgewogICAgICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwogICAgICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aGlzLl91bmJpbmRFdmVudHMoKTsKICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2Rpc2Nvbm5lY3RlZCcpOwoKICAgICAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gZmFsc2U7CgogICAgICAgIH07CgogICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbFVwZGF0ZSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwogICAgICAgICAgICBpZiAoIGUgPT09IHZvaWQgMCApIGUgPSAndXBkYXRlJzsKCgogICAgICAgICAgICB2YXIgdHlwZSA9IGUudHlwZSB8fCBlOwoKICAgICAgICAgICAgaWYgKGluY2x1ZGVzKFsndXBkYXRlJywgJ3Jlc2l6ZSddLCB0eXBlKSkgewogICAgICAgICAgICAgICAgdGhpcy5fY2FsbFdhdGNoZXMoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHVwZGF0ZXMgPSB0aGlzLiRvcHRpb25zLnVwZGF0ZTsKICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuX2ZyYW1lczsKICAgICAgICAgICAgdmFyIHJlYWRzID0gcmVmLnJlYWRzOwogICAgICAgICAgICB2YXIgd3JpdGVzID0gcmVmLndyaXRlczsKCiAgICAgICAgICAgIGlmICghdXBkYXRlcykgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICB1cGRhdGVzLmZvckVhY2goZnVuY3Rpb24gKHJlZiwgaSkgewogICAgICAgICAgICAgICAgdmFyIHJlYWQgPSByZWYucmVhZDsKICAgICAgICAgICAgICAgIHZhciB3cml0ZSA9IHJlZi53cml0ZTsKICAgICAgICAgICAgICAgIHZhciBldmVudHMgPSByZWYuZXZlbnRzOwoKCiAgICAgICAgICAgICAgICBpZiAodHlwZSAhPT0gJ3VwZGF0ZScgJiYgIWluY2x1ZGVzKGV2ZW50cywgdHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHJlYWQgJiYgIWluY2x1ZGVzKGZhc3Rkb20ucmVhZHMsIHJlYWRzW2ldKSkgewogICAgICAgICAgICAgICAgICAgIHJlYWRzW2ldID0gZmFzdGRvbS5yZWFkKGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzJDEuX2Nvbm5lY3RlZCAmJiByZWFkLmNhbGwodGhpcyQxLCB0aGlzJDEuX2RhdGEsIHR5cGUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UgJiYgd3JpdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rkb20uY2xlYXIod3JpdGVzW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbih0aGlzJDEuX2RhdGEsIHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAod3JpdGUgJiYgIWluY2x1ZGVzKGZhc3Rkb20ud3JpdGVzLCB3cml0ZXNbaV0pKSB7CiAgICAgICAgICAgICAgICAgICAgd3JpdGVzW2ldID0gZmFzdGRvbS53cml0ZShmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuX2Nvbm5lY3RlZCAmJiB3cml0ZS5jYWxsKHRoaXMkMSwgdGhpcyQxLl9kYXRhLCB0eXBlKTsgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9KTsKCiAgICAgICAgfTsKCiAgICB9CgogICAgZnVuY3Rpb24gc3RhdGVBUEkgKFVJa2l0KSB7CgogICAgICAgIHZhciB1aWQgPSAwOwoKICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAob3B0aW9ucykgewoKICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICAgICAgICAgIG9wdGlvbnMuZGF0YSA9IG5vcm1hbGl6ZURhdGEob3B0aW9ucywgdGhpcy5jb25zdHJ1Y3Rvci5vcHRpb25zKTsKCiAgICAgICAgICAgIHRoaXMuJG9wdGlvbnMgPSBtZXJnZU9wdGlvbnModGhpcy5jb25zdHJ1Y3Rvci5vcHRpb25zLCBvcHRpb25zLCB0aGlzKTsKICAgICAgICAgICAgdGhpcy4kZWwgPSBudWxsOwogICAgICAgICAgICB0aGlzLiRwcm9wcyA9IHt9OwoKICAgICAgICAgICAgdGhpcy5fZnJhbWVzID0ge3JlYWRzOiB7fSwgd3JpdGVzOiB7fX07CiAgICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IFtdOwoKICAgICAgICAgICAgdGhpcy5fdWlkID0gdWlkKys7CiAgICAgICAgICAgIHRoaXMuX2luaXREYXRhKCk7CiAgICAgICAgICAgIHRoaXMuX2luaXRNZXRob2RzKCk7CiAgICAgICAgICAgIHRoaXMuX2luaXRDb21wdXRlZHMoKTsKICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2NyZWF0ZWQnKTsKCiAgICAgICAgICAgIGlmIChvcHRpb25zLmVsKSB7CiAgICAgICAgICAgICAgICB0aGlzLiRtb3VudChvcHRpb25zLmVsKTsKICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIFVJa2l0LnByb3RvdHlwZS5faW5pdERhdGEgPSBmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9uczsKICAgICAgICAgICAgdmFyIGRhdGEgPSByZWYuZGF0YTsgaWYgKCBkYXRhID09PSB2b2lkIDAgKSBkYXRhID0ge307CgogICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSkgewogICAgICAgICAgICAgICAgdGhpcy4kcHJvcHNba2V5XSA9IHRoaXNba2V5XSA9IGRhdGFba2V5XTsKICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIFVJa2l0LnByb3RvdHlwZS5faW5pdE1ldGhvZHMgPSBmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9uczsKICAgICAgICAgICAgdmFyIG1ldGhvZHMgPSByZWYubWV0aG9kczsKCiAgICAgICAgICAgIGlmIChtZXRob2RzKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kcykgewogICAgICAgICAgICAgICAgICAgIHRoaXNba2V5XSA9IG1ldGhvZHNba2V5XS5iaW5kKHRoaXMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0Q29tcHV0ZWRzID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7CiAgICAgICAgICAgIHZhciBjb21wdXRlZCA9IHJlZi5jb21wdXRlZDsKCiAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVkcyA9IHt9OwoKICAgICAgICAgICAgaWYgKGNvbXB1dGVkKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQpIHsKICAgICAgICAgICAgICAgICAgICByZWdpc3RlckNvbXB1dGVkKHRoaXMsIGtleSwgY29tcHV0ZWRba2V5XSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxXYXRjaGVzID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7CiAgICAgICAgICAgIHZhciBjb21wdXRlZCA9IHJlZi4kb3B0aW9ucy5jb21wdXRlZDsKICAgICAgICAgICAgdmFyIF9jb21wdXRlZHMgPSByZWYuX2NvbXB1dGVkczsKCiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBfY29tcHV0ZWRzKSB7CgogICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gX2NvbXB1dGVkc1trZXldOwogICAgICAgICAgICAgICAgZGVsZXRlIF9jb21wdXRlZHNba2V5XTsKCiAgICAgICAgICAgICAgICBpZiAoY29tcHV0ZWRba2V5XS53YXRjaCAmJiAhaXNFcXVhbCh2YWx1ZSwgdGhpc1trZXldKSkgewogICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkW2tleV0ud2F0Y2guY2FsbCh0aGlzLCB0aGlzW2tleV0sIHZhbHVlKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgfTsKCiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0UHJvcHMgPSBmdW5jdGlvbiAocHJvcHMpIHsKCiAgICAgICAgICAgIHZhciBrZXk7CgogICAgICAgICAgICBwcm9wcyA9IHByb3BzIHx8IGdldFByb3BzKHRoaXMuJG9wdGlvbnMsIHRoaXMuJG5hbWUpOwoKICAgICAgICAgICAgZm9yIChrZXkgaW4gcHJvcHMpIHsKICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQocHJvcHNba2V5XSkpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRwcm9wc1trZXldID0gcHJvcHNba2V5XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGV4Y2x1ZGUgPSBbdGhpcy4kb3B0aW9ucy5jb21wdXRlZCwgdGhpcy4kb3B0aW9ucy5tZXRob2RzXTsKICAgICAgICAgICAgZm9yIChrZXkgaW4gdGhpcy4kcHJvcHMpIHsKICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gcHJvcHMgJiYgbm90SW4oZXhjbHVkZSwga2V5KSkgewogICAgICAgICAgICAgICAgICAgIHRoaXNba2V5XSA9IHRoaXMuJHByb3BzW2tleV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXRFdmVudHMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zOwogICAgICAgICAgICB2YXIgZXZlbnRzID0gcmVmLmV2ZW50czsKCiAgICAgICAgICAgIGlmIChldmVudHMpIHsKCiAgICAgICAgICAgICAgICBldmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNPd24oZXZlbnQsICdoYW5kbGVyJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlckV2ZW50KHRoaXMkMSwgZXZlbnRba2V5XSwga2V5KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRXZlbnQodGhpcyQxLCBldmVudCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgVUlraXQucHJvdG90eXBlLl91bmJpbmRFdmVudHMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHRoaXMuX2V2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uICh1bmJpbmQpIHsgcmV0dXJuIHVuYmluZCgpOyB9KTsKICAgICAgICAgICAgdGhpcy5fZXZlbnRzID0gW107CiAgICAgICAgfTsKCiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0T2JzZXJ2ZXIgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zOwogICAgICAgICAgICB2YXIgYXR0cnMgPSByZWYuYXR0cnM7CiAgICAgICAgICAgIHZhciBwcm9wcyA9IHJlZi5wcm9wczsKICAgICAgICAgICAgdmFyIGVsID0gcmVmLmVsOwogICAgICAgICAgICBpZiAodGhpcy5fb2JzZXJ2ZXIgfHwgIXByb3BzIHx8IGF0dHJzID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBhdHRycyA9IGlzQXJyYXkoYXR0cnMpID8gYXR0cnMgOiBPYmplY3Qua2V5cyhwcm9wcyk7CgogICAgICAgICAgICB0aGlzLl9vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGdldFByb3BzKHRoaXMkMS4kb3B0aW9ucywgdGhpcyQxLiRuYW1lKTsKICAgICAgICAgICAgICAgIGlmIChhdHRycy5zb21lKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICFpc1VuZGVmaW5lZChkYXRhW2tleV0pICYmIGRhdGFba2V5XSAhPT0gdGhpcyQxLiRwcm9wc1trZXldOyB9KSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMkMS4kcmVzZXQoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgdmFyIGZpbHRlciA9IGF0dHJzLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBoeXBoZW5hdGUoa2V5KTsgfSkuY29uY2F0KHRoaXMuJG5hbWUpOwoKICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZShlbCwgewogICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwKICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogZmlsdGVyLmNvbmNhdChmaWx0ZXIubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICgiZGF0YS0iICsga2V5KTsgfSkpCiAgICAgICAgICAgIH0pOwogICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uIGdldFByb3BzKG9wdHMsIG5hbWUpIHsKCiAgICAgICAgICAgIHZhciBkYXRhJDEgPSB7fTsKICAgICAgICAgICAgdmFyIGFyZ3MgPSBvcHRzLmFyZ3M7IGlmICggYXJncyA9PT0gdm9pZCAwICkgYXJncyA9IFtdOwogICAgICAgICAgICB2YXIgcHJvcHMgPSBvcHRzLnByb3BzOyBpZiAoIHByb3BzID09PSB2b2lkIDAgKSBwcm9wcyA9IHt9OwogICAgICAgICAgICB2YXIgZWwgPSBvcHRzLmVsOwoKICAgICAgICAgICAgaWYgKCFwcm9wcykgewogICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7CiAgICAgICAgICAgICAgICB2YXIgcHJvcCA9IGh5cGhlbmF0ZShrZXkpOwogICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZGF0YShlbCwgcHJvcCk7CgogICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2YWx1ZSkpIHsKCiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwcm9wc1trZXldID09PSBCb29sZWFuICYmIHZhbHVlID09PSAnJwogICAgICAgICAgICAgICAgICAgICAgICA/IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgOiBjb2VyY2UocHJvcHNba2V5XSwgdmFsdWUpOwoKICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gJ3RhcmdldCcgJiYgKCF2YWx1ZSB8fCBzdGFydHNXaXRoKHZhbHVlLCAnXycpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGRhdGEkMVtrZXldID0gdmFsdWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBvcHRpb25zID0gcGFyc2VPcHRpb25zKGRhdGEoZWwsIG5hbWUpLCBhcmdzKTsKCiAgICAgICAgICAgIGZvciAodmFyIGtleSQxIGluIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIHZhciBwcm9wJDEgPSBjYW1lbGl6ZShrZXkkMSk7CiAgICAgICAgICAgICAgICBpZiAocHJvcHNbcHJvcCQxXSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YSQxW3Byb3AkMV0gPSBjb2VyY2UocHJvcHNbcHJvcCQxXSwgb3B0aW9uc1trZXkkMV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gZGF0YSQxOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcmVnaXN0ZXJDb21wdXRlZChjb21wb25lbnQsIGtleSwgY2IpIHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbXBvbmVudCwga2V5LCB7CgogICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSwKCiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgICAgICB2YXIgX2NvbXB1dGVkcyA9IGNvbXBvbmVudC5fY29tcHV0ZWRzOwogICAgICAgICAgICAgICAgICAgIHZhciAkcHJvcHMgPSBjb21wb25lbnQuJHByb3BzOwogICAgICAgICAgICAgICAgICAgIHZhciAkZWwgPSBjb21wb25lbnQuJGVsOwoKICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc093bihfY29tcHV0ZWRzLCBrZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9jb21wdXRlZHNba2V5XSA9IChjYi5nZXQgfHwgY2IpLmNhbGwoY29tcG9uZW50LCAkcHJvcHMsICRlbCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbXB1dGVkc1trZXldOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHZhbHVlKSB7CgogICAgICAgICAgICAgICAgICAgIHZhciBfY29tcHV0ZWRzID0gY29tcG9uZW50Ll9jb21wdXRlZHM7CgogICAgICAgICAgICAgICAgICAgIF9jb21wdXRlZHNba2V5XSA9IGNiLnNldCA/IGNiLnNldC5jYWxsKGNvbXBvbmVudCwgdmFsdWUpIDogdmFsdWU7CgogICAgICAgICAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZChfY29tcHV0ZWRzW2tleV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBfY29tcHV0ZWRzW2tleV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50KGNvbXBvbmVudCwgZXZlbnQsIGtleSkgewoKICAgICAgICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KGV2ZW50KSkgewogICAgICAgICAgICAgICAgZXZlbnQgPSAoe25hbWU6IGtleSwgaGFuZGxlcjogZXZlbnR9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIG5hbWUgPSBldmVudC5uYW1lOwogICAgICAgICAgICB2YXIgZWwgPSBldmVudC5lbDsKICAgICAgICAgICAgdmFyIGhhbmRsZXIgPSBldmVudC5oYW5kbGVyOwogICAgICAgICAgICB2YXIgY2FwdHVyZSA9IGV2ZW50LmNhcHR1cmU7CiAgICAgICAgICAgIHZhciBwYXNzaXZlID0gZXZlbnQucGFzc2l2ZTsKICAgICAgICAgICAgdmFyIGRlbGVnYXRlID0gZXZlbnQuZGVsZWdhdGU7CiAgICAgICAgICAgIHZhciBmaWx0ZXIgPSBldmVudC5maWx0ZXI7CiAgICAgICAgICAgIHZhciBzZWxmID0gZXZlbnQuc2VsZjsKICAgICAgICAgICAgZWwgPSBpc0Z1bmN0aW9uKGVsKQogICAgICAgICAgICAgICAgPyBlbC5jYWxsKGNvbXBvbmVudCkKICAgICAgICAgICAgICAgIDogZWwgfHwgY29tcG9uZW50LiRlbDsKCiAgICAgICAgICAgIGlmIChpc0FycmF5KGVsKSkgewogICAgICAgICAgICAgICAgZWwuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHJlZ2lzdGVyRXZlbnQoY29tcG9uZW50LCBhc3NpZ24oe30sIGV2ZW50LCB7ZWw6IGVsfSksIGtleSk7IH0pOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWVsIHx8IGZpbHRlciAmJiAhZmlsdGVyLmNhbGwoY29tcG9uZW50KSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb21wb25lbnQuX2V2ZW50cy5wdXNoKAogICAgICAgICAgICAgICAgb24oCiAgICAgICAgICAgICAgICAgICAgZWwsCiAgICAgICAgICAgICAgICAgICAgbmFtZSwKICAgICAgICAgICAgICAgICAgICAhZGVsZWdhdGUKICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgIDogaXNTdHJpbmcoZGVsZWdhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGRlbGVnYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRlbGVnYXRlLmNhbGwoY29tcG9uZW50KSwKICAgICAgICAgICAgICAgICAgICBpc1N0cmluZyhoYW5kbGVyKSA/IGNvbXBvbmVudFtoYW5kbGVyXSA6IGhhbmRsZXIuYmluZChjb21wb25lbnQpLAogICAgICAgICAgICAgICAgICAgIHtwYXNzaXZlOiBwYXNzaXZlLCBjYXB0dXJlOiBjYXB0dXJlLCBzZWxmOiBzZWxmfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApOwoKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG5vdEluKG9wdGlvbnMsIGtleSkgewogICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5ldmVyeShmdW5jdGlvbiAoYXJyKSB7IHJldHVybiAhYXJyIHx8ICFoYXNPd24oYXJyLCBrZXkpOyB9KTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGNvZXJjZSh0eXBlLCB2YWx1ZSkgewoKICAgICAgICAgICAgaWYgKHR5cGUgPT09IEJvb2xlYW4pIHsKICAgICAgICAgICAgICAgIHJldHVybiB0b0Jvb2xlYW4odmFsdWUpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IE51bWJlcikgewogICAgICAgICAgICAgICAgcmV0dXJuIHRvTnVtYmVyKHZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbGlzdCcpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0b0xpc3QodmFsdWUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gdHlwZSA/IHR5cGUodmFsdWUpIDogdmFsdWU7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBub3JtYWxpemVEYXRhKHJlZiwgcmVmJDEpIHsKICAgICAgICAgICAgdmFyIGRhdGEgPSByZWYuZGF0YTsKICAgICAgICAgICAgdmFyIGVsID0gcmVmLmVsOwogICAgICAgICAgICB2YXIgYXJncyA9IHJlZiQxLmFyZ3M7CiAgICAgICAgICAgIHZhciBwcm9wcyA9IHJlZiQxLnByb3BzOyBpZiAoIHByb3BzID09PSB2b2lkIDAgKSBwcm9wcyA9IHt9OwoKICAgICAgICAgICAgZGF0YSA9IGlzQXJyYXkoZGF0YSkKICAgICAgICAgICAgICAgID8gIWlzRW1wdHkoYXJncykKICAgICAgICAgICAgICAgICAgICA/IGRhdGEuc2xpY2UoMCwgYXJncy5sZW5ndGgpLnJlZHVjZShmdW5jdGlvbiAoZGF0YSwgdmFsdWUsIGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWduKGRhdGEsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbYXJnc1tpbmRleF1dID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgICAgICAgICAgfSwge30pCiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQKICAgICAgICAgICAgICAgIDogZGF0YTsKCiAgICAgICAgICAgIGlmIChkYXRhKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZChkYXRhW2tleV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2tleV07CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gcHJvcHNba2V5XSA/IGNvZXJjZShwcm9wc1trZXldLCBkYXRhW2tleV0pIDogZGF0YVtrZXldOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGluc3RhbmNlQVBJIChVSWtpdCkgewoKICAgICAgICB2YXIgREFUQSA9IFVJa2l0LmRhdGE7CgogICAgICAgIFVJa2l0LnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoZWwpIHsKCiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zOwogICAgICAgICAgICB2YXIgbmFtZSA9IHJlZi5uYW1lOwoKICAgICAgICAgICAgaWYgKCFlbFtEQVRBXSkgewogICAgICAgICAgICAgICAgZWxbREFUQV0gPSB7fTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGVsW0RBVEFdW25hbWVdKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsW0RBVEFdW25hbWVdID0gdGhpczsKCiAgICAgICAgICAgIHRoaXMuJGVsID0gdGhpcy4kb3B0aW9ucy5lbCA9IHRoaXMuJG9wdGlvbnMuZWwgfHwgZWw7CgogICAgICAgICAgICBpZiAod2l0aGluKGVsLCBkb2N1bWVudCkpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxDb25uZWN0ZWQoKTsKICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIFVJa2l0LnByb3RvdHlwZS4kZW1pdCA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHRoaXMuX2NhbGxVcGRhdGUoZSk7CiAgICAgICAgfTsKCiAgICAgICAgVUlraXQucHJvdG90eXBlLiRyZXNldCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdGhpcy5fY2FsbERpc2Nvbm5lY3RlZCgpOwogICAgICAgICAgICB0aGlzLl9jYWxsQ29ubmVjdGVkKCk7CiAgICAgICAgfTsKCiAgICAgICAgVUlraXQucHJvdG90eXBlLiRkZXN0cm95ID0gZnVuY3Rpb24gKHJlbW92ZUVsKSB7CiAgICAgICAgICAgIGlmICggcmVtb3ZlRWwgPT09IHZvaWQgMCApIHJlbW92ZUVsID0gZmFsc2U7CgoKICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7CiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDsKICAgICAgICAgICAgdmFyIG5hbWUgPSByZWYubmFtZTsKCiAgICAgICAgICAgIGlmIChlbCkgewogICAgICAgICAgICAgICAgdGhpcy5fY2FsbERpc2Nvbm5lY3RlZCgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnZGVzdHJveScpOwoKICAgICAgICAgICAgaWYgKCFlbCB8fCAhZWxbREFUQV0pIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZGVsZXRlIGVsW0RBVEFdW25hbWVdOwoKICAgICAgICAgICAgaWYgKCFpc0VtcHR5KGVsW0RBVEFdKSkgewogICAgICAgICAgICAgICAgZGVsZXRlIGVsW0RBVEFdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAocmVtb3ZlRWwpIHsKICAgICAgICAgICAgICAgIHJlbW92ZSh0aGlzLiRlbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBVSWtpdC5wcm90b3R5cGUuJGNyZWF0ZSA9IGZ1bmN0aW9uIChjb21wb25lbnQsIGVsZW1lbnQsIGRhdGEpIHsKICAgICAgICAgICAgcmV0dXJuIFVJa2l0W2NvbXBvbmVudF0oZWxlbWVudCwgZGF0YSk7CiAgICAgICAgfTsKCiAgICAgICAgVUlraXQucHJvdG90eXBlLiR1cGRhdGUgPSBVSWtpdC51cGRhdGU7CiAgICAgICAgVUlraXQucHJvdG90eXBlLiRnZXRDb21wb25lbnQgPSBVSWtpdC5nZXRDb21wb25lbnQ7CgogICAgICAgIHZhciBuYW1lcyA9IHt9OwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFVJa2l0LnByb3RvdHlwZSwgewoKICAgICAgICAgICAgJGNvbnRhaW5lcjogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihVSWtpdCwgJ2NvbnRhaW5lcicpLAoKICAgICAgICAgICAgJG5hbWU6IHsKCiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zOwogICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gcmVmLm5hbWU7CgogICAgICAgICAgICAgICAgICAgIGlmICghbmFtZXNbbmFtZV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNbbmFtZV0gPSBVSWtpdC5wcmVmaXggKyBoeXBoZW5hdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZXNbbmFtZV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgIH0pOwoKICAgIH0KCiAgICB2YXIgVUlraXQgPSBmdW5jdGlvbiAob3B0aW9ucykgewogICAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7CiAgICB9OwoKICAgIFVJa2l0LnV0aWwgPSB1dGlsOwogICAgVUlraXQuZGF0YSA9ICdfX3Vpa2l0X18nOwogICAgVUlraXQucHJlZml4ID0gJ3VrLSc7CiAgICBVSWtpdC5vcHRpb25zID0ge307CgogICAgZ2xvYmFsQVBJKFVJa2l0KTsKICAgIGhvb2tzQVBJKFVJa2l0KTsKICAgIHN0YXRlQVBJKFVJa2l0KTsKICAgIGNvbXBvbmVudEFQSShVSWtpdCk7CiAgICBpbnN0YW5jZUFQSShVSWtpdCk7CgogICAgdmFyIENsYXNzID0gewoKICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAhaGFzQ2xhc3ModGhpcy4kZWwsIHRoaXMuJG5hbWUpICYmIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLiRuYW1lKTsKICAgICAgICB9CgogICAgfTsKCiAgICB2YXIgVG9nZ2xhYmxlID0gewoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBjbHM6IEJvb2xlYW4sCiAgICAgICAgICAgIGFuaW1hdGlvbjogJ2xpc3QnLAogICAgICAgICAgICBkdXJhdGlvbjogTnVtYmVyLAogICAgICAgICAgICBvcmlnaW46IFN0cmluZywKICAgICAgICAgICAgdHJhbnNpdGlvbjogU3RyaW5nLAogICAgICAgICAgICBxdWV1ZWQ6IEJvb2xlYW4KICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGNsczogZmFsc2UsCiAgICAgICAgICAgIGFuaW1hdGlvbjogW2ZhbHNlXSwKICAgICAgICAgICAgZHVyYXRpb246IDIwMCwKICAgICAgICAgICAgb3JpZ2luOiBmYWxzZSwKICAgICAgICAgICAgdHJhbnNpdGlvbjogJ2xpbmVhcicsCiAgICAgICAgICAgIHF1ZXVlZDogZmFsc2UsCgogICAgICAgICAgICBpbml0UHJvcHM6IHsKICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnJywKICAgICAgICAgICAgICAgIGhlaWdodDogJycsCiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiAnJywKICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206ICcnLAogICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnJywKICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogJycKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGhpZGVQcm9wczogewogICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLAogICAgICAgICAgICAgICAgaGVpZ2h0OiAwLAogICAgICAgICAgICAgICAgcGFkZGluZ1RvcDogMCwKICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IDAsCiAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IDAsCiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IDAKICAgICAgICAgICAgfQoKICAgICAgICB9LAoKICAgICAgICBjb21wdXRlZDogewoKICAgICAgICAgICAgaGFzQW5pbWF0aW9uOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uOwoKICAgICAgICAgICAgICAgIHJldHVybiAhIWFuaW1hdGlvblswXTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGhhc1RyYW5zaXRpb246IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIGFuaW1hdGlvbiA9IHJlZi5hbmltYXRpb247CgogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFzQW5pbWF0aW9uICYmIGFuaW1hdGlvblswXSA9PT0gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICB9LAoKICAgICAgICBtZXRob2RzOiB7CgogICAgICAgICAgICB0b2dnbGVFbGVtZW50OiBmdW5jdGlvbih0YXJnZXRzLCBzaG93LCBhbmltYXRlKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsKCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cyA9IHRvTm9kZXModGFyZ2V0cyk7CgogICAgICAgICAgICAgICAgICAgIHZhciBhbGwgPSBmdW5jdGlvbiAodGFyZ2V0cykgeyByZXR1cm4gUHJvbWlzZS5hbGwodGFyZ2V0cy5tYXAoZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZUVsZW1lbnQoZWwsIHNob3csIGFuaW1hdGUpOyB9KSk7IH07CiAgICAgICAgICAgICAgICAgICAgdmFyIHRvZ2dsZWQgPSB0YXJnZXRzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5pc1RvZ2dsZWQoZWwpOyB9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgdW50b2dnbGVkID0gdGFyZ2V0cy5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiAhaW5jbHVkZXModG9nZ2xlZCwgZWwpOyB9KTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIHA7CgogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcyQxLnF1ZXVlZCB8fCAhaXNVbmRlZmluZWQoYW5pbWF0ZSkgfHwgIWlzVW5kZWZpbmVkKHNob3cpIHx8ICF0aGlzJDEuaGFzQW5pbWF0aW9uIHx8IHRhcmdldHMubGVuZ3RoIDwgMikgewoKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGFsbCh1bnRvZ2dsZWQuY29uY2F0KHRvZ2dsZWQpKTsKCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbCA9IGJvZHkuc2Nyb2xsVG9wOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWwgPSB0b2dnbGVkWzBdOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5Qcm9ncmVzcyA9IEFuaW1hdGlvbi5pblByb2dyZXNzKGVsKSAmJiBoYXNDbGFzcyhlbCwgJ3VrLWFuaW1hdGlvbi1sZWF2ZScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgVHJhbnNpdGlvbi5pblByb2dyZXNzKGVsKSAmJiBlbC5zdHlsZS5oZWlnaHQgPT09ICcwcHgnOwoKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGFsbCh0b2dnbGVkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5Qcm9ncmVzcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHAudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBhbGwodW50b2dnbGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5LnNjcm9sbFRvcCA9IHNjcm9sbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcC50aGVuKHJlc29sdmUsIG5vb3ApOwoKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgdG9nZ2xlTm93OiBmdW5jdGlvbih0YXJnZXRzLCBzaG93KSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIFByb21pc2UuYWxsKHRvTm9kZXModGFyZ2V0cykubWFwKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gdGhpcyQxLl90b2dnbGVFbGVtZW50KGVsLCBzaG93LCBmYWxzZSk7IH0pKS50aGVuKHJlc29sdmUsIG5vb3ApOyB9KTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGlzVG9nZ2xlZDogZnVuY3Rpb24oZWwpIHsKICAgICAgICAgICAgICAgIHZhciBub2RlcyA9IHRvTm9kZXMoZWwgfHwgdGhpcy4kZWwpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xzCiAgICAgICAgICAgICAgICAgICAgPyBoYXNDbGFzcyhub2RlcywgdGhpcy5jbHMuc3BsaXQoJyAnKVswXSkKICAgICAgICAgICAgICAgICAgICA6ICFoYXNBdHRyKG5vZGVzLCAnaGlkZGVuJyk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB1cGRhdGVBcmlhOiBmdW5jdGlvbihlbCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xzID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIGF0dHIoZWwsICdhcmlhLWhpZGRlbicsICF0aGlzLmlzVG9nZ2xlZChlbCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgX3RvZ2dsZUVsZW1lbnQ6IGZ1bmN0aW9uKGVsLCBzaG93LCBhbmltYXRlKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICAgICAgc2hvdyA9IGlzQm9vbGVhbihzaG93KQogICAgICAgICAgICAgICAgICAgID8gc2hvdwogICAgICAgICAgICAgICAgICAgIDogQW5pbWF0aW9uLmluUHJvZ3Jlc3MoZWwpCiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFzQ2xhc3MoZWwsICd1ay1hbmltYXRpb24tbGVhdmUnKQogICAgICAgICAgICAgICAgICAgICAgICA6IFRyYW5zaXRpb24uaW5Qcm9ncmVzcyhlbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZWwuc3R5bGUuaGVpZ2h0ID09PSAnMHB4JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAhdGhpcy5pc1RvZ2dsZWQoZWwpOwoKICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcihlbCwgKCJiZWZvcmUiICsgKHNob3cgPyAnc2hvdycgOiAnaGlkZScpKSwgW3RoaXNdKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBwcm9taXNlID0gKAogICAgICAgICAgICAgICAgICAgIGlzRnVuY3Rpb24oYW5pbWF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgPyBhbmltYXRlCiAgICAgICAgICAgICAgICAgICAgICAgIDogYW5pbWF0ZSA9PT0gZmFsc2UgfHwgIXRoaXMuaGFzQW5pbWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX3RvZ2dsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmhhc1RyYW5zaXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRvZ2dsZUhlaWdodCh0aGlzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdG9nZ2xlQW5pbWF0aW9uKHRoaXMpCiAgICAgICAgICAgICAgICApKGVsLCBzaG93KTsKCiAgICAgICAgICAgICAgICB0cmlnZ2VyKGVsLCBzaG93ID8gJ3Nob3cnIDogJ2hpZGUnLCBbdGhpc10pOwoKICAgICAgICAgICAgICAgIHZhciBmaW5hbCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKGVsLCBzaG93ID8gJ3Nob3duJyA6ICdoaWRkZW4nLCBbdGhpcyQxXSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiR1cGRhdGUoZWwpOwogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZSA/IHByb21pc2UudGhlbihmaW5hbCkgOiBQcm9taXNlLnJlc29sdmUoZmluYWwoKSk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBfdG9nZ2xlOiBmdW5jdGlvbihlbCwgdG9nZ2xlZCkgewoKICAgICAgICAgICAgICAgIGlmICghZWwpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdG9nZ2xlZCA9IEJvb2xlYW4odG9nZ2xlZCk7CgogICAgICAgICAgICAgICAgdmFyIGNoYW5nZWQ7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5jbHMpIHsKICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gaW5jbHVkZXModGhpcy5jbHMsICcgJykgfHwgdG9nZ2xlZCAhPT0gaGFzQ2xhc3MoZWwsIHRoaXMuY2xzKTsKICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIHRvZ2dsZUNsYXNzKGVsLCB0aGlzLmNscywgaW5jbHVkZXModGhpcy5jbHMsICcgJykgPyB1bmRlZmluZWQgOiB0b2dnbGVkKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRvZ2dsZWQgPT09IGhhc0F0dHIoZWwsICdoaWRkZW4nKTsKICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIGF0dHIoZWwsICdoaWRkZW4nLCAhdG9nZ2xlZCA/ICcnIDogbnVsbCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJCQoJ1thdXRvZm9jdXNdJywgZWwpLnNvbWUoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBpc1Zpc2libGUoZWwpID8gZWwuZm9jdXMoKSB8fCB0cnVlIDogZWwuYmx1cigpOyB9KTsKCiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoZWwpOwogICAgICAgICAgICAgICAgY2hhbmdlZCAmJiB0aGlzLiR1cGRhdGUoZWwpOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9OwoKICAgIGZ1bmN0aW9uIHRvZ2dsZUhlaWdodChyZWYpIHsKICAgICAgICB2YXIgaXNUb2dnbGVkID0gcmVmLmlzVG9nZ2xlZDsKICAgICAgICB2YXIgZHVyYXRpb24gPSByZWYuZHVyYXRpb247CiAgICAgICAgdmFyIGluaXRQcm9wcyA9IHJlZi5pbml0UHJvcHM7CiAgICAgICAgdmFyIGhpZGVQcm9wcyA9IHJlZi5oaWRlUHJvcHM7CiAgICAgICAgdmFyIHRyYW5zaXRpb24gPSByZWYudHJhbnNpdGlvbjsKICAgICAgICB2YXIgX3RvZ2dsZSA9IHJlZi5fdG9nZ2xlOwoKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGVsLCBzaG93KSB7CgogICAgICAgICAgICB2YXIgaW5Qcm9ncmVzcyA9IFRyYW5zaXRpb24uaW5Qcm9ncmVzcyhlbCk7CiAgICAgICAgICAgIHZhciBpbm5lciA9IGVsLmhhc0NoaWxkTm9kZXMgPyB0b0Zsb2F0KGNzcyhlbC5maXJzdEVsZW1lbnRDaGlsZCwgJ21hcmdpblRvcCcpKSArIHRvRmxvYXQoY3NzKGVsLmxhc3RFbGVtZW50Q2hpbGQsICdtYXJnaW5Cb3R0b20nKSkgOiAwOwogICAgICAgICAgICB2YXIgY3VycmVudEhlaWdodCA9IGlzVmlzaWJsZShlbCkgPyBoZWlnaHQoZWwpICsgKGluUHJvZ3Jlc3MgPyAwIDogaW5uZXIpIDogMDsKCiAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKGVsKTsKCiAgICAgICAgICAgIGlmICghaXNUb2dnbGVkKGVsKSkgewogICAgICAgICAgICAgICAgX3RvZ2dsZShlbCwgdHJ1ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGhlaWdodChlbCwgJycpOwoKICAgICAgICAgICAgLy8gVXBkYXRlIGNoaWxkIGNvbXBvbmVudHMgZmlyc3QKICAgICAgICAgICAgZmFzdGRvbS5mbHVzaCgpOwoKICAgICAgICAgICAgdmFyIGVuZEhlaWdodCA9IGhlaWdodChlbCkgKyAoaW5Qcm9ncmVzcyA/IDAgOiBpbm5lcik7CiAgICAgICAgICAgIGhlaWdodChlbCwgY3VycmVudEhlaWdodCk7CgogICAgICAgICAgICByZXR1cm4gKHNob3cKICAgICAgICAgICAgICAgICAgICA/IFRyYW5zaXRpb24uc3RhcnQoZWwsIGFzc2lnbih7fSwgaW5pdFByb3BzLCB7b3ZlcmZsb3c6ICdoaWRkZW4nLCBoZWlnaHQ6IGVuZEhlaWdodH0pLCBNYXRoLnJvdW5kKGR1cmF0aW9uICogKDEgLSBjdXJyZW50SGVpZ2h0IC8gZW5kSGVpZ2h0KSksIHRyYW5zaXRpb24pCiAgICAgICAgICAgICAgICAgICAgOiBUcmFuc2l0aW9uLnN0YXJ0KGVsLCBoaWRlUHJvcHMsIE1hdGgucm91bmQoZHVyYXRpb24gKiAoY3VycmVudEhlaWdodCAvIGVuZEhlaWdodCkpLCB0cmFuc2l0aW9uKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90b2dnbGUoZWwsIGZhbHNlKTsgfSkKICAgICAgICAgICAgKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNzcyhlbCwgaW5pdFByb3BzKTsgfSk7CgogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gdG9nZ2xlQW5pbWF0aW9uKHJlZikgewogICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uOwogICAgICAgIHZhciBkdXJhdGlvbiA9IHJlZi5kdXJhdGlvbjsKICAgICAgICB2YXIgb3JpZ2luID0gcmVmLm9yaWdpbjsKICAgICAgICB2YXIgX3RvZ2dsZSA9IHJlZi5fdG9nZ2xlOwoKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGVsLCBzaG93KSB7CgogICAgICAgICAgICBBbmltYXRpb24uY2FuY2VsKGVsKTsKCiAgICAgICAgICAgIGlmIChzaG93KSB7CiAgICAgICAgICAgICAgICBfdG9nZ2xlKGVsLCB0cnVlKTsKICAgICAgICAgICAgICAgIHJldHVybiBBbmltYXRpb24uaW4oZWwsIGFuaW1hdGlvblswXSwgZHVyYXRpb24sIG9yaWdpbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBBbmltYXRpb24ub3V0KGVsLCBhbmltYXRpb25bMV0gfHwgYW5pbWF0aW9uWzBdLCBkdXJhdGlvbiwgb3JpZ2luKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90b2dnbGUoZWwsIGZhbHNlKTsgfSk7CiAgICAgICAgfTsKICAgIH0KCiAgICB2YXIgQWNjb3JkaW9uID0gewoKICAgICAgICBtaXhpbnM6IFtDbGFzcywgVG9nZ2xhYmxlXSwKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgdGFyZ2V0czogU3RyaW5nLAogICAgICAgICAgICBhY3RpdmU6IG51bGwsCiAgICAgICAgICAgIGNvbGxhcHNpYmxlOiBCb29sZWFuLAogICAgICAgICAgICBtdWx0aXBsZTogQm9vbGVhbiwKICAgICAgICAgICAgdG9nZ2xlOiBTdHJpbmcsCiAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZywKICAgICAgICAgICAgdHJhbnNpdGlvbjogU3RyaW5nCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICB0YXJnZXRzOiAnPiAqJywKICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSwKICAgICAgICAgICAgYW5pbWF0aW9uOiBbdHJ1ZV0sCiAgICAgICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLAogICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsCiAgICAgICAgICAgIGNsc09wZW46ICd1ay1vcGVuJywKICAgICAgICAgICAgdG9nZ2xlOiAnPiAudWstYWNjb3JkaW9uLXRpdGxlJywKICAgICAgICAgICAgY29udGVudDogJz4gLnVrLWFjY29yZGlvbi1jb250ZW50JywKICAgICAgICAgICAgdHJhbnNpdGlvbjogJ2Vhc2UnCiAgICAgICAgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIGl0ZW1zOiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIHRhcmdldHMgPSByZWYudGFyZ2V0czsKCiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGFyZ2V0cywgJGVsKTsKICAgICAgICAgICAgfQoKICAgICAgICB9LAoKICAgICAgICBldmVudHM6IFsKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLAoKICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh0aGlzLnRhcmdldHMpICsgIiAiICsgKHRoaXMuJHByb3BzLnRvZ2dsZSkpOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKGluZGV4KCQkKCgodGhpcy50YXJnZXRzKSArICIgIiArICh0aGlzLiRwcm9wcy50b2dnbGUpKSwgdGhpcy4kZWwpLCBlLmN1cnJlbnQpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgXSwKCiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuaXRlbXNbTnVtYmVyKHRoaXMuYWN0aXZlKV07CiAgICAgICAgICAgIGlmIChhY3RpdmUgJiYgIWhhc0NsYXNzKGFjdGl2ZSwgdGhpcy5jbHNPcGVuKSkgewogICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoYWN0aXZlLCBmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZSgkKHRoaXMkMS5jb250ZW50LCBlbCksIGhhc0NsYXNzKGVsLCB0aGlzJDEuY2xzT3BlbikpOyB9KTsKCiAgICAgICAgICAgIHZhciBhY3RpdmUgPSAhdGhpcy5jb2xsYXBzaWJsZSAmJiAhaGFzQ2xhc3ModGhpcy5pdGVtcywgdGhpcy5jbHNPcGVuKSAmJiB0aGlzLml0ZW1zWzBdOwogICAgICAgICAgICBpZiAoYWN0aXZlKSB7CiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZShhY3RpdmUsIGZhbHNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIG1ldGhvZHM6IHsKCiAgICAgICAgICAgIHRvZ2dsZTogZnVuY3Rpb24oaXRlbSwgYW5pbWF0ZSkgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGdldEluZGV4KGl0ZW0sIHRoaXMuaXRlbXMpOwogICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IGZpbHRlcih0aGlzLml0ZW1zLCAoIi4iICsgKHRoaXMuY2xzT3BlbikpKTsKCiAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtc1tpbmRleF07CgogICAgICAgICAgICAgICAgaXRlbSAmJiBbaXRlbV0KICAgICAgICAgICAgICAgICAgICAuY29uY2F0KCF0aGlzLm11bHRpcGxlICYmICFpbmNsdWRlcyhhY3RpdmUsIGl0ZW0pICYmIGFjdGl2ZSB8fCBbXSkKICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc0l0ZW0gPSBlbCA9PT0gaXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlID0gaXNJdGVtICYmICFoYXNDbGFzcyhlbCwgdGhpcyQxLmNsc09wZW4pOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSAmJiBpc0l0ZW0gJiYgIXRoaXMkMS5jb2xsYXBzaWJsZSAmJiBhY3RpdmUubGVuZ3RoIDwgMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLmNsc09wZW4sIHN0YXRlKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50ID0gZWwuX3dyYXBwZXIgPyBlbC5fd3JhcHBlci5maXJzdEVsZW1lbnRDaGlsZCA6ICQodGhpcyQxLmNvbnRlbnQsIGVsKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWwuX3dyYXBwZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLl93cmFwcGVyID0gd3JhcEFsbChjb250ZW50LCAnPGRpdj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIoZWwuX3dyYXBwZXIsICdoaWRkZW4nLCBzdGF0ZSA/ICcnIDogbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5fdG9nZ2xlKGNvbnRlbnQsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlRWxlbWVudChlbC5fd3JhcHBlciwgc3RhdGUsIGFuaW1hdGUpLnRoZW4oZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNDbGFzcyhlbCwgdGhpcyQxLmNsc09wZW4pICE9PSBzdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl90b2dnbGUoY29udGVudCwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLl93cmFwcGVyID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcChjb250ZW50KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICB2YXIgQWxlcnQgPSB7CgogICAgICAgIG1peGluczogW0NsYXNzLCBUb2dnbGFibGVdLAoKICAgICAgICBhcmdzOiAnYW5pbWF0aW9uJywKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgY2xvc2U6IFN0cmluZwogICAgICAgIH0sCgogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgYW5pbWF0aW9uOiBbdHJ1ZV0sCiAgICAgICAgICAgIHNlbENsb3NlOiAnLnVrLWFsZXJ0LWNsb3NlJywKICAgICAgICAgICAgZHVyYXRpb246IDE1MCwKICAgICAgICAgICAgaGlkZVByb3BzOiBhc3NpZ24oe29wYWNpdHk6IDB9LCBUb2dnbGFibGUuZGF0YS5oaWRlUHJvcHMpCiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiBbCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJywKCiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsQ2xvc2U7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICBdLAoKICAgICAgICBtZXRob2RzOiB7CgogICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy4kZWwpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLiRkZXN0cm95KHRydWUpOyB9KTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICBmdW5jdGlvbiBDb3JlIChVSWtpdCkgewoKICAgICAgICByZWFkeShmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICBVSWtpdC51cGRhdGUoKTsKICAgICAgICAgICAgb24od2luZG93LCAnbG9hZCByZXNpemUnLCBmdW5jdGlvbiAoKSB7IHJldHVybiBVSWtpdC51cGRhdGUobnVsbCwgJ3Jlc2l6ZScpOyB9KTsKICAgICAgICAgICAgb24oZG9jdW1lbnQsICdsb2FkZWRtZXRhZGF0YSBsb2FkJywgZnVuY3Rpb24gKHJlZikgewogICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7CgogICAgICAgICAgICAgICAgcmV0dXJuIFVJa2l0LnVwZGF0ZSh0YXJnZXQsICdyZXNpemUnKTsKICAgICAgICAgICAgfSwgdHJ1ZSk7CgogICAgICAgICAgICAvLyB0aHJvdHRsZSBgc2Nyb2xsYCBldmVudCAoU2FmYXJpIHRyaWdnZXJzIG11bHRpcGxlIGBzY3JvbGxgIGV2ZW50cyBwZXIgZnJhbWUpCiAgICAgICAgICAgIHZhciBwZW5kaW5nOwogICAgICAgICAgICBvbih3aW5kb3csICdzY3JvbGwnLCBmdW5jdGlvbiAoZSkgewoKICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcGVuZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICBmYXN0ZG9tLndyaXRlKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBlbmRpbmcgPSBmYWxzZTsgfSk7CgogICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0OwogICAgICAgICAgICAgICAgVUlraXQudXBkYXRlKHRhcmdldC5ub2RlVHlwZSAhPT0gMSA/IGRvY3VtZW50LmJvZHkgOiB0YXJnZXQsIGUudHlwZSk7CgogICAgICAgICAgICB9LCB7cGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZTogdHJ1ZX0pOwoKICAgICAgICAgICAgdmFyIHN0YXJ0ZWQgPSAwOwogICAgICAgICAgICBvbihkb2N1bWVudCwgJ2FuaW1hdGlvbnN0YXJ0JywgZnVuY3Rpb24gKHJlZikgewogICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7CgogICAgICAgICAgICAgICAgaWYgKChjc3ModGFyZ2V0LCAnYW5pbWF0aW9uTmFtZScpIHx8ICcnKS5tYXRjaCgvXnVrLS4qKGxlZnR8cmlnaHQpLykpIHsKCiAgICAgICAgICAgICAgICAgICAgc3RhcnRlZCsrOwogICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3dYJywgJ2hpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIS0tc3RhcnRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmJvZHksICdvdmVyZmxvd1gnLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB0b01zKGNzcyh0YXJnZXQsICdhbmltYXRpb25EdXJhdGlvbicpKSArIDEwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHRydWUpOwoKICAgICAgICAgICAgdmFyIG9mZjsKICAgICAgICAgICAgb24oZG9jdW1lbnQsIHBvaW50ZXJEb3duLCBmdW5jdGlvbiAoZSkgewoKICAgICAgICAgICAgICAgIG9mZiAmJiBvZmYoKTsKCiAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gSGFuZGxlIFN3aXBlIEdlc3R1cmUKICAgICAgICAgICAgICAgIHZhciBwb3MgPSBnZXRFdmVudFBvcyhlKTsKICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSAndGFnTmFtZScgaW4gZS50YXJnZXQgPyBlLnRhcmdldCA6IGUudGFyZ2V0LnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICBvZmYgPSBvbmNlKGRvY3VtZW50LCAocG9pbnRlclVwICsgIiAiICsgcG9pbnRlckNhbmNlbCksIGZ1bmN0aW9uIChlKSB7CgogICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBnZXRFdmVudFBvcyhlKTsKICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IHJlZi54OwogICAgICAgICAgICAgICAgICAgIHZhciB5ID0gcmVmLnk7CgogICAgICAgICAgICAgICAgICAgIC8vIHN3aXBlCiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCAmJiB4ICYmIE1hdGguYWJzKHBvcy54IC0geCkgPiAxMDAgfHwgeSAmJiBNYXRoLmFicyhwb3MueSAtIHkpID4gMTAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGFyZ2V0LCAnc3dpcGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGFyZ2V0LCAoInN3aXBlIiArIChzd2lwZURpcmVjdGlvbihwb3MueCwgcG9zLnksIHgsIHkpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vIEZvcmNlIGNsaWNrIGV2ZW50IGFueXdoZXJlIG9uIGlPUyA8IDEzCiAgICAgICAgICAgICAgICBpZiAocG9pbnRlckRvd24gPT09ICd0b3VjaHN0YXJ0JykgewogICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5ib2R5LCAnY3Vyc29yJywgJ3BvaW50ZXInKTsKICAgICAgICAgICAgICAgICAgICBvbmNlKGRvY3VtZW50LCAocG9pbnRlclVwICsgIiAiICsgcG9pbnRlckNhbmNlbCksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gY3NzKGRvY3VtZW50LmJvZHksICdjdXJzb3InLCAnJyk7IH0KICAgICAgICAgICAgICAgICAgICAgICAgLCA1MCk7IH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwge3Bhc3NpdmU6IHRydWV9KTsKCiAgICAgICAgfSk7CgogICAgfQoKICAgIGZ1bmN0aW9uIHN3aXBlRGlyZWN0aW9uKHgxLCB5MSwgeDIsIHkyKSB7CiAgICAgICAgcmV0dXJuIE1hdGguYWJzKHgxIC0geDIpID49IE1hdGguYWJzKHkxIC0geTIpCiAgICAgICAgICAgID8geDEgLSB4MiA+IDAKICAgICAgICAgICAgICAgID8gJ0xlZnQnCiAgICAgICAgICAgICAgICA6ICdSaWdodCcKICAgICAgICAgICAgOiB5MSAtIHkyID4gMAogICAgICAgICAgICAgICAgPyAnVXAnCiAgICAgICAgICAgICAgICA6ICdEb3duJzsKICAgIH0KCiAgICB2YXIgVmlkZW8gPSB7CgogICAgICAgIGFyZ3M6ICdhdXRvcGxheScsCgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIGF1dG9tdXRlOiBCb29sZWFuLAogICAgICAgICAgICBhdXRvcGxheTogQm9vbGVhbgogICAgICAgIH0sCgogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgYXV0b211dGU6IGZhbHNlLAogICAgICAgICAgICBhdXRvcGxheTogdHJ1ZQogICAgICAgIH0sCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICBpblZpZXc6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIGF1dG9wbGF5ID0gcmVmLmF1dG9wbGF5OwoKICAgICAgICAgICAgICAgIHJldHVybiBhdXRvcGxheSA9PT0gJ2ludmlldyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmICh0aGlzLmluVmlldyAmJiAhaGFzQXR0cih0aGlzLiRlbCwgJ3ByZWxvYWQnKSkgewogICAgICAgICAgICAgICAgdGhpcy4kZWwucHJlbG9hZCA9ICdub25lJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy5wbGF5ZXIgPSBuZXcgUGxheWVyKHRoaXMuJGVsKTsKCiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9tdXRlKSB7CiAgICAgICAgICAgICAgICB0aGlzLnBsYXllci5tdXRlKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgdXBkYXRlOiB7CgogICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMucGxheWVyCiAgICAgICAgICAgICAgICAgICAgPyBmYWxzZQogICAgICAgICAgICAgICAgICAgIDogewogICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBpc1Zpc2libGUodGhpcy4kZWwpICYmIGNzcyh0aGlzLiRlbCwgJ3Zpc2liaWxpdHknKSAhPT0gJ2hpZGRlbicsCiAgICAgICAgICAgICAgICAgICAgICAgIGluVmlldzogdGhpcy5pblZpZXcgJiYgaXNJblZpZXcodGhpcy4kZWwpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciB2aXNpYmxlID0gcmVmLnZpc2libGU7CiAgICAgICAgICAgICAgICB2YXIgaW5WaWV3ID0gcmVmLmluVmlldzsKCgogICAgICAgICAgICAgICAgaWYgKCF2aXNpYmxlIHx8IHRoaXMuaW5WaWV3ICYmICFpblZpZXcpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXllci5wYXVzZSgpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmF1dG9wbGF5ID09PSB0cnVlIHx8IHRoaXMuaW5WaWV3ICYmIGluVmlldykgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLnBsYXkoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBldmVudHM6IFsncmVzaXplJywgJ3Njcm9sbCddCgogICAgICAgIH0KCiAgICB9OwoKICAgIHZhciBDb3ZlciA9IHsKCiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFZpZGVvXSwKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgd2lkdGg6IE51bWJlciwKICAgICAgICAgICAgaGVpZ2h0OiBOdW1iZXIKICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGF1dG9tdXRlOiB0cnVlCiAgICAgICAgfSwKCiAgICAgICAgdXBkYXRlOiB7CgogICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICB2YXIgZWwgPSB0aGlzLiRlbDsKICAgICAgICAgICAgICAgIHZhciByZWYgPSBlbC5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IHJlZi5vZmZzZXRIZWlnaHQ7CiAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSByZWYub2Zmc2V0V2lkdGg7CiAgICAgICAgICAgICAgICB2YXIgZGltID0gRGltZW5zaW9ucy5jb3ZlcigKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoIHx8IGVsLm5hdHVyYWxXaWR0aCB8fCBlbC52aWRlb1dpZHRoIHx8IGVsLmNsaWVudFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0IHx8IGVsLm5hdHVyYWxIZWlnaHQgfHwgZWwudmlkZW9IZWlnaHQgfHwgZWwuY2xpZW50SGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCArICh3aWR0aCAlIDIgPyAxIDogMCksCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0ICsgKGhlaWdodCAlIDIgPyAxIDogMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICghZGltLndpZHRoIHx8ICFkaW0uaGVpZ2h0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBkaW07CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gcmVmLmhlaWdodDsKICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IHJlZi53aWR0aDsKCiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtoZWlnaHQ6IGhlaWdodCwgd2lkdGg6IHdpZHRofSk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ10KCiAgICAgICAgfQoKICAgIH07CgogICAgdmFyIFBvc2l0aW9uID0gewoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBwb3M6IFN0cmluZywKICAgICAgICAgICAgb2Zmc2V0OiBudWxsLAogICAgICAgICAgICBmbGlwOiBCb29sZWFuLAogICAgICAgICAgICBjbHNQb3M6IFN0cmluZwogICAgICAgIH0sCgogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgcG9zOiAoImJvdHRvbS0iICsgKCFpc1J0bCA/ICdsZWZ0JyA6ICdyaWdodCcpKSwKICAgICAgICAgICAgZmxpcDogdHJ1ZSwKICAgICAgICAgICAgb2Zmc2V0OiBmYWxzZSwKICAgICAgICAgICAgY2xzUG9zOiAnJwogICAgICAgIH0sCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICBwb3M6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlZi5wb3M7CgogICAgICAgICAgICAgICAgcmV0dXJuIChwb3MgKyAoIWluY2x1ZGVzKHBvcywgJy0nKSA/ICctY2VudGVyJyA6ICcnKSkuc3BsaXQoJy0nKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGRpcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wb3NbMF07CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBhbGlnbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wb3NbMV07CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgbWV0aG9kczogewoKICAgICAgICAgICAgcG9zaXRpb25BdDogZnVuY3Rpb24oZWxlbWVudCwgdGFyZ2V0LCBib3VuZGFyeSkgewoKICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzZXMoZWxlbWVudCwgKCh0aGlzLmNsc1BvcykgKyAiLSh0b3B8Ym90dG9tfGxlZnR8cmlnaHQpKC1bYS16XSspPyIpKTsKICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCB7dG9wOiAnJywgbGVmdDogJyd9KTsKCiAgICAgICAgICAgICAgICB2YXIgbm9kZTsKICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzOwogICAgICAgICAgICAgICAgdmFyIG9mZnNldCQxID0gcmVmLm9mZnNldDsKICAgICAgICAgICAgICAgIHZhciBheGlzID0gdGhpcy5nZXRBeGlzKCk7CgogICAgICAgICAgICAgICAgaWYgKCFpc051bWVyaWMob2Zmc2V0JDEpKSB7CiAgICAgICAgICAgICAgICAgICAgbm9kZSA9ICQob2Zmc2V0JDEpOwogICAgICAgICAgICAgICAgICAgIG9mZnNldCQxID0gbm9kZQogICAgICAgICAgICAgICAgICAgICAgICA/IG9mZnNldChub2RlKVtheGlzID09PSAneCcgPyAnbGVmdCcgOiAndG9wJ10gLSBvZmZzZXQodGFyZ2V0KVtheGlzID09PSAneCcgPyAncmlnaHQnIDogJ2JvdHRvbSddCiAgICAgICAgICAgICAgICAgICAgICAgIDogMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgcmVmJDEgPSBwb3NpdGlvbkF0KAogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgIGF4aXMgPT09ICd4JyA/ICgoZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSkgKyAiICIgKyAodGhpcy5hbGlnbikpIDogKCh0aGlzLmFsaWduKSArICIgIiArIChmbGlwUG9zaXRpb24odGhpcy5kaXIpKSksCiAgICAgICAgICAgICAgICAgICAgYXhpcyA9PT0gJ3gnID8gKCh0aGlzLmRpcikgKyAiICIgKyAodGhpcy5hbGlnbikpIDogKCh0aGlzLmFsaWduKSArICIgIiArICh0aGlzLmRpcikpLAogICAgICAgICAgICAgICAgICAgIGF4aXMgPT09ICd4JyA/ICgiIiArICh0aGlzLmRpciA9PT0gJ2xlZnQnID8gLW9mZnNldCQxIDogb2Zmc2V0JDEpKSA6ICgiICIgKyAodGhpcy5kaXIgPT09ICd0b3AnID8gLW9mZnNldCQxIDogb2Zmc2V0JDEpKSwKICAgICAgICAgICAgICAgICAgICBudWxsLAogICAgICAgICAgICAgICAgICAgIHRoaXMuZmxpcCwKICAgICAgICAgICAgICAgICAgICBib3VuZGFyeQogICAgICAgICAgICAgICAgKS50YXJnZXQ7CiAgICAgICAgICAgICAgICB2YXIgeCA9IHJlZiQxLng7CiAgICAgICAgICAgICAgICB2YXIgeSA9IHJlZiQxLnk7CgogICAgICAgICAgICAgICAgdGhpcy5kaXIgPSBheGlzID09PSAneCcgPyB4IDogeTsKICAgICAgICAgICAgICAgIHRoaXMuYWxpZ24gPSBheGlzID09PSAneCcgPyB5IDogeDsKCiAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhlbGVtZW50LCAoKHRoaXMuY2xzUG9zKSArICItIiArICh0aGlzLmRpcikgKyAiLSIgKyAodGhpcy5hbGlnbikpLCB0aGlzLm9mZnNldCA9PT0gZmFsc2UpOwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGdldEF4aXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlyID09PSAndG9wJyB8fCB0aGlzLmRpciA9PT0gJ2JvdHRvbScgPyAneScgOiAneCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH07CgogICAgdmFyIGFjdGl2ZTsKCiAgICB2YXIgRHJvcCA9IHsKCiAgICAgICAgbWl4aW5zOiBbUG9zaXRpb24sIFRvZ2dsYWJsZV0sCgogICAgICAgIGFyZ3M6ICdwb3MnLAoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBtb2RlOiAnbGlzdCcsCiAgICAgICAgICAgIHRvZ2dsZTogQm9vbGVhbiwKICAgICAgICAgICAgYm91bmRhcnk6IEJvb2xlYW4sCiAgICAgICAgICAgIGJvdW5kYXJ5QWxpZ246IEJvb2xlYW4sCiAgICAgICAgICAgIGRlbGF5U2hvdzogTnVtYmVyLAogICAgICAgICAgICBkZWxheUhpZGU6IE51bWJlciwKICAgICAgICAgICAgY2xzRHJvcDogU3RyaW5nCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBtb2RlOiBbJ2NsaWNrJywgJ2hvdmVyJ10sCiAgICAgICAgICAgIHRvZ2dsZTogJy0gKicsCiAgICAgICAgICAgIGJvdW5kYXJ5OiB3aW5kb3csCiAgICAgICAgICAgIGJvdW5kYXJ5QWxpZ246IGZhbHNlLAogICAgICAgICAgICBkZWxheVNob3c6IDAsCiAgICAgICAgICAgIGRlbGF5SGlkZTogODAwLAogICAgICAgICAgICBjbHNEcm9wOiBmYWxzZSwKICAgICAgICAgICAgaG92ZXJJZGxlOiAyMDAsCiAgICAgICAgICAgIGFuaW1hdGlvbjogWyd1ay1hbmltYXRpb24tZmFkZSddLAogICAgICAgICAgICBjbHM6ICd1ay1vcGVuJwogICAgICAgIH0sCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICBib3VuZGFyeTogZnVuY3Rpb24ocmVmLCAkZWwpIHsKICAgICAgICAgICAgICAgIHZhciBib3VuZGFyeSA9IHJlZi5ib3VuZGFyeTsKCiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnkoYm91bmRhcnksICRlbCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBjbHNEcm9wOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBjbHNEcm9wID0gcmVmLmNsc0Ryb3A7CgogICAgICAgICAgICAgICAgcmV0dXJuIGNsc0Ryb3AgfHwgKCJ1ay0iICsgKHRoaXMuJG9wdGlvbnMubmFtZSkpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgY2xzUG9zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsc0Ryb3A7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMudHJhY2tlciA9IG5ldyBNb3VzZVRyYWNrZXIoKTsKICAgICAgICB9LAoKICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRHJvcCk7CgogICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kcHJvcHM7CiAgICAgICAgICAgIHZhciB0b2dnbGUgPSByZWYudG9nZ2xlOwogICAgICAgICAgICB0aGlzLnRvZ2dsZSA9IHRvZ2dsZSAmJiB0aGlzLiRjcmVhdGUoJ3RvZ2dsZScsIHF1ZXJ5KHRvZ2dsZSwgdGhpcy4kZWwpLCB7CiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRoaXMuJGVsLAogICAgICAgICAgICAgICAgbW9kZTogdGhpcy5tb2RlCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgIXRoaXMudG9nZ2xlICYmIHRyaWdnZXIodGhpcy4kZWwsICd1cGRhdGVhcmlhJyk7CgogICAgICAgIH0sCgogICAgICAgIGV2ZW50czogWwoKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLAoKICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCIuIiArICh0aGlzLmNsc0Ryb3ApICsgIi1jbG9zZSIpOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsCgogICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAnYVtocmVmXj0iIyJdJzsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSByZWYuZGVmYXVsdFByZXZlbnRlZDsKICAgICAgICAgICAgICAgICAgICB2YXIgaGFzaCA9IHJlZi5jdXJyZW50Lmhhc2g7CgogICAgICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdFByZXZlbnRlZCAmJiBoYXNoICYmICF3aXRoaW4oaGFzaCwgdGhpcy4kZWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3Jlc2Nyb2xsJywKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAndG9nZ2xlJywKCiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLAoKICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHRvZ2dsZSkgewoKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KHRvZ2dsZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogcG9pbnRlckVudGVyLAoKICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVG91Y2goZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZQogICAgICAgICAgICAgICAgICAgICAgICAmJiBhY3RpdmUgIT09IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgJiYgYWN0aXZlLnRvZ2dsZQogICAgICAgICAgICAgICAgICAgICAgICAmJiBpbmNsdWRlcyhhY3RpdmUudG9nZ2xlLm1vZGUsICdob3ZlcicpCiAgICAgICAgICAgICAgICAgICAgICAgICYmICF3aXRoaW4oZS50YXJnZXQsIGFjdGl2ZS50b2dnbGUuJGVsKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAhcG9pbnRJblJlY3Qoe3g6IGUucGFnZVgsIHk6IGUucGFnZVl9LCBvZmZzZXQoYWN0aXZlLiRlbCkpCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3codGhpcy50b2dnbGUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAndG9nZ2xlc2hvdycsCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSwgdG9nZ2xlKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh0b2dnbGUgJiYgIWluY2x1ZGVzKHRvZ2dsZS50YXJnZXQsIHRoaXMuJGVsKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KHRvZ2dsZSB8fCB0aGlzLnRvZ2dsZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG5hbWU6ICgidG9nZ2xlaGlkZSAiICsgcG9pbnRlckxlYXZlKSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0b2dnbGUpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVG91Y2goZSkgfHwgdG9nZ2xlICYmICFpbmNsdWRlcyh0b2dnbGUudGFyZ2V0LCB0aGlzLiRlbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b2dnbGUgJiYgaW5jbHVkZXModGhpcy50b2dnbGUubW9kZSwgJ2hvdmVyJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3Jlc2hvdycsCgogICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZXJzKCk7CiAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbCh0aGlzLiRlbCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbigpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsCgogICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFja2VyLmluaXQoKTsKICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAndXBkYXRlYXJpYScpOwoKICAgICAgICAgICAgICAgICAgICAvLyBJZiB0cmlnZ2VyZWQgZnJvbSBhbiBjbGljayBldmVudCBoYW5kbGVyLCBkZWxheSBhZGRpbmcgdGhlIGNsaWNrIGhhbmRsZXIKICAgICAgICAgICAgICAgICAgICB2YXIgb2ZmID0gZGVsYXlPbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKHJlZikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdFByZXZlbnRlZCA9IHJlZi5kZWZhdWx0UHJldmVudGVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdFByZXZlbnRlZCAmJiAhd2l0aGluKHRhcmdldCwgdGhpcyQxLiRlbCkgJiYgISh0aGlzJDEudG9nZ2xlICYmIHdpdGhpbih0YXJnZXQsIHRoaXMkMS50b2dnbGUuJGVsKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5oaWRlKGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICBvbmNlKHRoaXMuJGVsLCAnaGlkZScsIG9mZiwge3NlbGY6IHRydWV9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZWhpZGUnLAoKICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVycygpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7CgoKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4kZWwgIT09IHRhcmdldCkgewogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPSBhY3RpdmUgPT09IG51bGwgJiYgd2l0aGluKHRhcmdldCwgdGhpcy4kZWwpICYmIHRoaXMuaXNUb2dnbGVkKCkgPyB0aGlzIDogYWN0aXZlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCkgPyBudWxsIDogYWN0aXZlOwogICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICd1cGRhdGVhcmlhJyk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFja2VyLmNhbmNlbCgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAndXBkYXRlYXJpYScsCgogICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0b2dnbGUpIHsKCiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEodGhpcy4kZWwpOwoKICAgICAgICAgICAgICAgICAgICBpZiAodG9nZ2xlIHx8IHRoaXMudG9nZ2xlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIoKHRvZ2dsZSB8fCB0aGlzLnRvZ2dsZSkuJGVsLCAnYXJpYS1leHBhbmRlZCcsIHRoaXMuaXNUb2dnbGVkKCkpOwogICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyh0aGlzLnRvZ2dsZS4kZWwsIHRoaXMuY2xzLCB0aGlzLmlzVG9nZ2xlZCgpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgXSwKCiAgICAgICAgdXBkYXRlOiB7CgogICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkgJiYgIUFuaW1hdGlvbi5pblByb2dyZXNzKHRoaXMuJGVsKSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24oKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ10KCiAgICAgICAgfSwKCiAgICAgICAgbWV0aG9kczogewoKICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24odG9nZ2xlLCBkZWxheSkgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CiAgICAgICAgICAgICAgICBpZiAoIGRlbGF5ID09PSB2b2lkIDAgKSBkZWxheSA9IHRydWU7CgoKICAgICAgICAgICAgICAgIHZhciBzaG93ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gIXRoaXMkMS5pc1RvZ2dsZWQoKSAmJiB0aGlzJDEudG9nZ2xlRWxlbWVudCh0aGlzJDEuJGVsLCB0cnVlKTsgfTsKICAgICAgICAgICAgICAgIHZhciB0cnlTaG93ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlID0gdG9nZ2xlIHx8IHRoaXMkMS50b2dnbGU7CgogICAgICAgICAgICAgICAgICAgIHRoaXMkMS5jbGVhclRpbWVycygpOwoKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVsYXkgJiYgYWN0aXZlICYmIGFjdGl2ZSAhPT0gdGhpcyQxICYmIGFjdGl2ZS5pc0RlbGF5aW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zaG93VGltZXIgPSBzZXRUaW1lb3V0KHRoaXMkMS5zaG93LCAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMkMS5pc1BhcmVudE9mKGFjdGl2ZSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmUuaGlkZVRpbWVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzJDEuaXNDaGlsZE9mKGFjdGl2ZSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5jbGVhclRpbWVycygpOwoKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGl2ZSAmJiAhdGhpcyQxLmlzQ2hpbGRPZihhY3RpdmUpICYmICF0aGlzJDEuaXNQYXJlbnRPZihhY3RpdmUpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJldjsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGFjdGl2ZSAmJiBhY3RpdmUgIT09IHByZXYgJiYgIXRoaXMkMS5pc0NoaWxkT2YoYWN0aXZlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IGFjdGl2ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChkZWxheSAmJiB0aGlzJDEuZGVsYXlTaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zaG93VGltZXIgPSBzZXRUaW1lb3V0KHNob3csIHRoaXMkMS5kZWxheVNob3cpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNob3coKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9IHRoaXMkMTsKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgaWYgKHRvZ2dsZSAmJiB0aGlzLnRvZ2dsZSAmJiB0b2dnbGUuJGVsICE9PSB0aGlzLnRvZ2dsZS4kZWwpIHsKCiAgICAgICAgICAgICAgICAgICAgb25jZSh0aGlzLiRlbCwgJ2hpZGUnLCB0cnlTaG93KTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpOwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5U2hvdygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgaGlkZTogZnVuY3Rpb24oZGVsYXkpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwogICAgICAgICAgICAgICAgaWYgKCBkZWxheSA9PT0gdm9pZCAwICkgZGVsYXkgPSB0cnVlOwoKCiAgICAgICAgICAgICAgICB2YXIgaGlkZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS50b2dnbGVOb3codGhpcyQxLiRlbCwgZmFsc2UpOyB9OwoKICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcnMoKTsKCiAgICAgICAgICAgICAgICB0aGlzLmlzRGVsYXlpbmcgPSB0aGlzLnRyYWNrZXIubW92ZXNUbyh0aGlzLiRlbCk7CgogICAgICAgICAgICAgICAgaWYgKGRlbGF5ICYmIHRoaXMuaXNEZWxheWluZykgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRpbWVyID0gc2V0VGltZW91dCh0aGlzLmhpZGUsIHRoaXMuaG92ZXJJZGxlKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVsYXkgJiYgdGhpcy5kZWxheUhpZGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IHNldFRpbWVvdXQoaGlkZSwgdGhpcy5kZWxheUhpZGUpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBoaWRlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBjbGVhclRpbWVyczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZXIpOwogICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVyKTsKICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVyID0gbnVsbDsKICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRpbWVyID0gbnVsbDsKICAgICAgICAgICAgICAgIHRoaXMuaXNEZWxheWluZyA9IGZhbHNlOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgaXNBY3RpdmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZSA9PT0gdGhpczsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGlzQ2hpbGRPZjogZnVuY3Rpb24oZHJvcCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGRyb3AgJiYgZHJvcCAhPT0gdGhpcyAmJiB3aXRoaW4odGhpcy4kZWwsIGRyb3AuJGVsKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGlzUGFyZW50T2Y6IGZ1bmN0aW9uKGRyb3ApIHsKICAgICAgICAgICAgICAgIHJldHVybiBkcm9wICYmIGRyb3AgIT09IHRoaXMgJiYgd2l0aGluKGRyb3AuJGVsLCB0aGlzLiRlbCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3Nlcyh0aGlzLiRlbCwgKCh0aGlzLmNsc0Ryb3ApICsgIi0oc3RhY2t8Ym91bmRhcnkpIikpOwogICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7dG9wOiAnJywgbGVmdDogJycsIGRpc3BsYXk6ICdibG9jayd9KTsKICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuJGVsLCAoKHRoaXMuY2xzRHJvcCkgKyAiLWJvdW5kYXJ5IiksIHRoaXMuYm91bmRhcnlBbGlnbik7CgogICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gb2Zmc2V0KHRoaXMuYm91bmRhcnkpOwogICAgICAgICAgICAgICAgdmFyIGFsaWduVG8gPSB0aGlzLmJvdW5kYXJ5QWxpZ24gPyBib3VuZGFyeSA6IG9mZnNldCh0aGlzLnRvZ2dsZS4kZWwpOwoKICAgICAgICAgICAgICAgIGlmICh0aGlzLmFsaWduID09PSAnanVzdGlmeScpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcCA9IHRoaXMuZ2V0QXhpcygpID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7CiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCBwcm9wLCBhbGlnblRvW3Byb3BdKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy4kZWwub2Zmc2V0V2lkdGggPiBNYXRoLm1heChib3VuZGFyeS5yaWdodCAtIGFsaWduVG8ubGVmdCwgYWxpZ25Uby5yaWdodCAtIGJvdW5kYXJ5LmxlZnQpKSB7CiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsICgodGhpcy5jbHNEcm9wKSArICItc3RhY2siKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkF0KHRoaXMuJGVsLCB0aGlzLmJvdW5kYXJ5QWxpZ24gPyB0aGlzLmJvdW5kYXJ5IDogdGhpcy50b2dnbGUuJGVsLCB0aGlzLmJvdW5kYXJ5KTsKCiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdkaXNwbGF5JywgJycpOwoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICBmdW5jdGlvbiBkZWxheU9uKGVsLCB0eXBlLCBmbikgewogICAgICAgIHZhciBvZmYgPSBvbmNlKGVsLCB0eXBlLCBmdW5jdGlvbiAoKSB7IHJldHVybiBvZmYgPSBvbihlbCwgdHlwZSwgZm4pOyB9CiAgICAgICAgLCB0cnVlKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gb2ZmKCk7IH07CiAgICB9CgogICAgdmFyIERyb3Bkb3duID0gewoKICAgICAgICBleHRlbmRzOiBEcm9wCgogICAgfTsKCiAgICB2YXIgRm9ybUN1c3RvbSA9IHsKCiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLAoKICAgICAgICBhcmdzOiAndGFyZ2V0JywKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgdGFyZ2V0OiBCb29sZWFuCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICB0YXJnZXQ6IGZhbHNlCiAgICAgICAgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbihfLCAkZWwpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkKHNlbElucHV0LCAkZWwpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgc3RhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQubmV4dEVsZW1lbnRTaWJsaW5nOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCAmJiAodGFyZ2V0ID09PSB0cnVlCiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5pbnB1dC5wYXJlbnROb2RlID09PSAkZWwKICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLmlucHV0Lm5leHRFbGVtZW50U2libGluZwogICAgICAgICAgICAgICAgICAgIHx8IHF1ZXJ5KHRhcmdldCwgJGVsKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzOwogICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDsKICAgICAgICAgICAgdmFyIGlucHV0ID0gcmVmLmlucHV0OwoKICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIG9wdGlvbjsKICAgICAgICAgICAgdmFyIHByb3AgPSBpc0lucHV0KHRhcmdldCkgPyAndmFsdWUnIDogJ3RleHRDb250ZW50JzsKICAgICAgICAgICAgdmFyIHByZXYgPSB0YXJnZXRbcHJvcF07CiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzWzBdCiAgICAgICAgICAgICAgICA/IGlucHV0LmZpbGVzWzBdLm5hbWUKICAgICAgICAgICAgICAgIDogbWF0Y2hlcyhpbnB1dCwgJ3NlbGVjdCcpICYmIChvcHRpb24gPSAkJCgnb3B0aW9uJywgaW5wdXQpLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLnNlbGVjdGVkOyB9KVswXSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZwogICAgICAgICAgICAgICAgICAgID8gb3B0aW9uLnRleHRDb250ZW50CiAgICAgICAgICAgICAgICAgICAgOiBpbnB1dC52YWx1ZTsKCiAgICAgICAgICAgIGlmIChwcmV2ICE9PSB2YWx1ZSkgewogICAgICAgICAgICAgICAgdGFyZ2V0W3Byb3BdID0gdmFsdWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiBbCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAnY2hhbmdlJywKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAncmVzZXQnLAoKICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdCh0aGlzLiRlbCwgJ2Zvcm0nKTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIF0KCiAgICB9OwoKICAgIC8vIERlcHJlY2F0ZWQKICAgIHZhciBHaWYgPSB7CgogICAgICAgIHVwZGF0ZTogewoKICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oZGF0YSkgewoKICAgICAgICAgICAgICAgIHZhciBpbnZpZXcgPSBpc0luVmlldyh0aGlzLiRlbCk7CgogICAgICAgICAgICAgICAgaWYgKCFpbnZpZXcgfHwgZGF0YS5pc0luVmlldyA9PT0gaW52aWV3KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGRhdGEuaXNJblZpZXcgPSBpbnZpZXc7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLiRlbC5zcmMgPSB0aGlzLiRlbC5zcmM7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ3Jlc2l6ZSddCiAgICAgICAgfQoKICAgIH07CgogICAgdmFyIE1hcmdpbiA9IHsKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgbWFyZ2luOiBTdHJpbmcsCiAgICAgICAgICAgIGZpcnN0Q29sdW1uOiBCb29sZWFuCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBtYXJnaW46ICd1ay1tYXJnaW4tc21hbGwtdG9wJywKICAgICAgICAgICAgZmlyc3RDb2x1bW46ICd1ay1maXJzdC1jb2x1bW4nCiAgICAgICAgfSwKCiAgICAgICAgdXBkYXRlOiB7CgogICAgICAgICAgICByZWFkOiBmdW5jdGlvbihkYXRhKSB7CgogICAgICAgICAgICAgICAgdmFyIGl0ZW1zID0gdGhpcy4kZWwuY2hpbGRyZW47CiAgICAgICAgICAgICAgICB2YXIgcm93cyA9IFtbXV07CgogICAgICAgICAgICAgICAgaWYgKCFpdGVtcy5sZW5ndGggfHwgIWlzVmlzaWJsZSh0aGlzLiRlbCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5yb3dzID0gcm93czsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBkYXRhLnJvd3MgPSBnZXRSb3dzKGl0ZW1zKTsKICAgICAgICAgICAgICAgIGRhdGEuc3RhY2tzID0gIWRhdGEucm93cy5zb21lKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuIHJvdy5sZW5ndGggPiAxOyB9KTsKCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7CgoKICAgICAgICAgICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7IHJldHVybiByb3cuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGopIHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5tYXJnaW4sIGkgIT09IDApOwogICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLmZpcnN0Q29sdW1uLCBqID09PSAwKTsKICAgICAgICAgICAgICAgICAgICB9KTsgfQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ10KCiAgICAgICAgfQoKICAgIH07CgogICAgZnVuY3Rpb24gZ2V0Um93cyhpdGVtcykgewogICAgICAgIHZhciByb3dzID0gW1tdXTsKCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykgewoKICAgICAgICAgICAgdmFyIGVsID0gaXRlbXNbaV07CiAgICAgICAgICAgIHZhciBkaW0gPSBnZXRPZmZzZXQoZWwpOwoKICAgICAgICAgICAgaWYgKCFkaW0uaGVpZ2h0KSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yICh2YXIgaiA9IHJvd3MubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pIHsKCiAgICAgICAgICAgICAgICB2YXIgcm93ID0gcm93c1tqXTsKCiAgICAgICAgICAgICAgICBpZiAoIXJvd1swXSkgewogICAgICAgICAgICAgICAgICAgIHJvdy5wdXNoKGVsKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgbGVmdERpbSA9ICh2b2lkIDApOwogICAgICAgICAgICAgICAgaWYgKHJvd1swXS5vZmZzZXRQYXJlbnQgPT09IGVsLm9mZnNldFBhcmVudCkgewogICAgICAgICAgICAgICAgICAgIGxlZnREaW0gPSBnZXRPZmZzZXQocm93WzBdKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZGltID0gZ2V0T2Zmc2V0KGVsLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICBsZWZ0RGltID0gZ2V0T2Zmc2V0KHJvd1swXSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGRpbS50b3AgPj0gbGVmdERpbS5ib3R0b20gLSAxICYmIGRpbS50b3AgIT09IGxlZnREaW0udG9wKSB7CiAgICAgICAgICAgICAgICAgICAgcm93cy5wdXNoKFtlbF0pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChkaW0uYm90dG9tID4gbGVmdERpbS50b3ApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGRpbS5sZWZ0IDwgbGVmdERpbS5sZWZ0ICYmICFpc1J0bCkgewogICAgICAgICAgICAgICAgICAgICAgICByb3cudW5zaGlmdChlbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcm93LnB1c2goZWwpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChqID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgcm93cy51bnNoaWZ0KFtlbF0pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgIHJldHVybiByb3dzOwoKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRPZmZzZXQoZWxlbWVudCwgb2Zmc2V0KSB7CiAgICAgICAgdmFyIGFzc2lnbjsKCiAgICAgICAgaWYgKCBvZmZzZXQgPT09IHZvaWQgMCApIG9mZnNldCA9IGZhbHNlOwoKICAgICAgICB2YXIgb2Zmc2V0VG9wID0gZWxlbWVudC5vZmZzZXRUb3A7CiAgICAgICAgdmFyIG9mZnNldExlZnQgPSBlbGVtZW50Lm9mZnNldExlZnQ7CiAgICAgICAgdmFyIG9mZnNldEhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0OwoKICAgICAgICBpZiAob2Zmc2V0KSB7CiAgICAgICAgICAgIChhc3NpZ24gPSBvZmZzZXRQb3NpdGlvbihlbGVtZW50KSwgb2Zmc2V0VG9wID0gYXNzaWduWzBdLCBvZmZzZXRMZWZ0ID0gYXNzaWduWzFdKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHRvcDogb2Zmc2V0VG9wLAogICAgICAgICAgICBsZWZ0OiBvZmZzZXRMZWZ0LAogICAgICAgICAgICBoZWlnaHQ6IG9mZnNldEhlaWdodCwKICAgICAgICAgICAgYm90dG9tOiBvZmZzZXRUb3AgKyBvZmZzZXRIZWlnaHQKICAgICAgICB9OwogICAgfQoKICAgIHZhciBHcmlkID0gewoKICAgICAgICBleHRlbmRzOiBNYXJnaW4sCgogICAgICAgIG1peGluczogW0NsYXNzXSwKCiAgICAgICAgbmFtZTogJ2dyaWQnLAoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBtYXNvbnJ5OiBCb29sZWFuLAogICAgICAgICAgICBwYXJhbGxheDogTnVtYmVyCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBtYXJnaW46ICd1ay1ncmlkLW1hcmdpbicsCiAgICAgICAgICAgIGNsc1N0YWNrOiAndWstZ3JpZC1zdGFjaycsCiAgICAgICAgICAgIG1hc29ucnk6IGZhbHNlLAogICAgICAgICAgICBwYXJhbGxheDogMAogICAgICAgIH0sCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICBsZW5ndGg6IGZ1bmN0aW9uKF8sICRlbCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRlbC5jaGlsZHJlbi5sZW5ndGg7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBwYXJhbGxheDogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgcGFyYWxsYXggPSByZWYucGFyYWxsYXg7CgogICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFsbGF4ICYmIHRoaXMubGVuZ3RoID8gTWF0aC5hYnMocGFyYWxsYXgpIDogJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5tYXNvbnJ5ICYmIGFkZENsYXNzKHRoaXMuJGVsLCAndWstZmxleC10b3AgdWstZmxleC13cmFwLXRvcCcpOwogICAgICAgIH0sCgogICAgICAgIHVwZGF0ZTogWwoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7CgoKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXNvbnJ5IHx8IHRoaXMucGFyYWxsYXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcm93cyA9IHJvd3MubWFwKGZ1bmN0aW9uIChlbGVtZW50cykgeyByZXR1cm4gc29ydEJ5KGVsZW1lbnRzLCAnb2Zmc2V0TGVmdCcpOyB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1J0bCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cy5tYXAoZnVuY3Rpb24gKHJvdykgeyByZXR1cm4gcm93LnJldmVyc2UoKTsgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB2YXIgdHJhbnNpdGlvbkluUHJvZ3Jlc3MgPSByb3dzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnRzKSB7IHJldHVybiBlbGVtZW50cy5zb21lKFRyYW5zaXRpb24uaW5Qcm9ncmVzcyk7IH0pOwogICAgICAgICAgICAgICAgICAgIHZhciB0cmFuc2xhdGVzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gJyc7CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hc29ucnkgJiYgdGhpcy5sZW5ndGgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlcyA9IHJvd3MucmVkdWNlKGZ1bmN0aW9uICh0cmFuc2xhdGVzLCByb3csIGkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVzW2ldID0gcm93Lm1hcChmdW5jdGlvbiAoXywgaikgeyByZXR1cm4gaSA9PT0gMCA/IDAgOiB0b0Zsb2F0KHRyYW5zbGF0ZXNbaSAtIDFdW2pdKSArIChoZWlnaHQgLSB0b0Zsb2F0KHJvd3NbaSAtIDFdW2pdICYmIHJvd3NbaSAtIDFdW2pdLm9mZnNldEhlaWdodCkpOyB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IHJvdy5yZWR1Y2UoZnVuY3Rpb24gKGhlaWdodCwgZWwpIHsgcmV0dXJuIE1hdGgubWF4KGhlaWdodCwgZWwub2Zmc2V0SGVpZ2h0KTsgfSwgMCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZXM7CgogICAgICAgICAgICAgICAgICAgICAgICB9LCBbXSk7CgogICAgICAgICAgICAgICAgICAgICAgICBlbEhlaWdodCA9IG1heENvbHVtbkhlaWdodChyb3dzKSArIGdldE1hcmdpblRvcCh0aGlzLiRlbCwgdGhpcy5tYXJnaW4pICogKHJvd3MubGVuZ3RoIC0gMSk7CgogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgdmFyIHBhZGRpbmcgPSB0aGlzLnBhcmFsbGF4ICYmIGdldFBhZGRpbmdCb3R0b20odGhpcy5wYXJhbGxheCwgcm93cywgdHJhbnNsYXRlcyk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiB7cGFkZGluZzogcGFkZGluZywgcm93czogcm93cywgdHJhbnNsYXRlczogdHJhbnNsYXRlcywgaGVpZ2h0OiAhdHJhbnNpdGlvbkluUHJvZ3Jlc3MgPyBlbEhlaWdodCA6IGZhbHNlfTsKCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc3RhY2tzID0gcmVmLnN0YWNrczsKICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gcmVmLmhlaWdodDsKICAgICAgICAgICAgICAgICAgICB2YXIgcGFkZGluZyA9IHJlZi5wYWRkaW5nOwoKCiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzU3RhY2ssIHN0YWNrcyk7CgogICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ3BhZGRpbmdCb3R0b20nLCBwYWRkaW5nKTsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQgIT09IGZhbHNlICYmIGNzcyh0aGlzLiRlbCwgJ2hlaWdodCcsIGhlaWdodCk7CgogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ10KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCQxID0gcmVmLmhlaWdodDsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsZWQ6IHRoaXMucGFyYWxsYXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2Nyb2xsZWRPdmVyKHRoaXMuJGVsLCBoZWlnaHQkMSA/IGhlaWdodCQxIC0gaGVpZ2h0KHRoaXMuJGVsKSA6IDApICogdGhpcy5wYXJhbGxheAogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcm93cyA9IHJlZi5yb3dzOwogICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGxlZCA9IHJlZi5zY3JvbGxlZDsKICAgICAgICAgICAgICAgICAgICB2YXIgdHJhbnNsYXRlcyA9IHJlZi50cmFuc2xhdGVzOwoKCiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbGVkID09PSBmYWxzZSAmJiAhdHJhbnNsYXRlcykgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByb3dzLmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkgeyByZXR1cm4gcm93LmZvckVhY2goZnVuY3Rpb24gKGVsLCBqKSB7IHJldHVybiBjc3MoZWwsICd0cmFuc2Zvcm0nLCAhc2Nyb2xsZWQgJiYgIXRyYW5zbGF0ZXMgPyAnJyA6ICgidHJhbnNsYXRlWSgiICsgKCh0cmFuc2xhdGVzICYmIC10cmFuc2xhdGVzW2ldW2pdKSArIChzY3JvbGxlZCA/IGogJSAyID8gc2Nyb2xsZWQgOiBzY3JvbGxlZCAvIDggOiAwKSkgKyAicHgpIikpOyB9CiAgICAgICAgICAgICAgICAgICAgICAgICk7IH0KICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdyZXNpemUnXQoKICAgICAgICAgICAgfQoKICAgICAgICBdCgogICAgfTsKCiAgICBmdW5jdGlvbiBnZXRQYWRkaW5nQm90dG9tKGRpc3RhbmNlLCByb3dzLCB0cmFuc2xhdGVzKSB7CiAgICAgICAgdmFyIGNvbHVtbiA9IDA7CiAgICAgICAgdmFyIG1heCA9IDA7CiAgICAgICAgdmFyIG1heFNjcm9sbGVkID0gMDsKICAgICAgICBmb3IgKHZhciBpID0gcm93cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgICBmb3IgKHZhciBqID0gY29sdW1uOyBqIDwgcm93c1tpXS5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgdmFyIGVsID0gcm93c1tpXVtqXTsKICAgICAgICAgICAgICAgIHZhciBib3R0b20gPSBlbC5vZmZzZXRUb3AgKyBoZWlnaHQoZWwpICsgKHRyYW5zbGF0ZXMgJiYgLXRyYW5zbGF0ZXNbaV1bal0pOwogICAgICAgICAgICAgICAgbWF4ID0gTWF0aC5tYXgobWF4LCBib3R0b20pOwogICAgICAgICAgICAgICAgbWF4U2Nyb2xsZWQgPSBNYXRoLm1heChtYXhTY3JvbGxlZCwgYm90dG9tICsgKGogJSAyID8gZGlzdGFuY2UgOiBkaXN0YW5jZSAvIDgpKTsKICAgICAgICAgICAgICAgIGNvbHVtbisrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBtYXhTY3JvbGxlZCAtIG1heDsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRNYXJnaW5Ub3Aocm9vdCwgY2xzKSB7CgogICAgICAgIHZhciBub2RlcyA9IHRvTm9kZXMocm9vdC5jaGlsZHJlbik7CiAgICAgICAgdmFyIHJlZiA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGhhc0NsYXNzKGVsLCBjbHMpOyB9KTsKICAgICAgICB2YXIgbm9kZSA9IHJlZlswXTsKCiAgICAgICAgcmV0dXJuIHRvRmxvYXQobm9kZQogICAgICAgICAgICA/IGNzcyhub2RlLCAnbWFyZ2luVG9wJykKICAgICAgICAgICAgOiBjc3Mobm9kZXNbMF0sICdwYWRkaW5nTGVmdCcpKTsKICAgIH0KCiAgICBmdW5jdGlvbiBtYXhDb2x1bW5IZWlnaHQocm93cykgewogICAgICAgIHJldHVybiBNYXRoLm1heC5hcHBseShNYXRoLCByb3dzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCByb3cpIHsKICAgICAgICAgICAgcm93LmZvckVhY2goZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBzdW1baV0gPSAoc3VtW2ldIHx8IDApICsgZWwub2Zmc2V0SGVpZ2h0OyB9KTsKICAgICAgICAgICAgcmV0dXJuIHN1bTsKICAgICAgICB9LCBbXSkpOwogICAgfQoKICAgIC8vIElFIDExIGZpeCAobWluLWhlaWdodCBvbiBhIGZsZXggY29udGFpbmVyIHdvbid0IGFwcGx5IHRvIGl0cyBmbGV4IGl0ZW1zKQogICAgdmFyIEZsZXhCdWcgPSBpc0lFID8gewoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBzZWxNaW5IZWlnaHQ6IFN0cmluZwogICAgICAgIH0sCgogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgc2VsTWluSGVpZ2h0OiBmYWxzZSwKICAgICAgICAgICAgZm9yY2VIZWlnaHQ6IGZhbHNlCiAgICAgICAgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIGVsZW1lbnRzOiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIHNlbE1pbkhlaWdodCA9IHJlZi5zZWxNaW5IZWlnaHQ7CgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbE1pbkhlaWdodCA/ICQkKHNlbE1pbkhlaWdodCwgJGVsKSA6IFskZWxdOwogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIHVwZGF0ZTogWwoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLmVsZW1lbnRzLCAnaGVpZ2h0JywgJycpOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBvcmRlcjogLTUsCgogICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Jlc2l6ZSddCgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gdG9GbG9hdChjc3MoZWwsICdtaW5IZWlnaHQnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgJiYgKHRoaXMkMS5mb3JjZUhlaWdodCB8fCBNYXRoLnJvdW5kKGhlaWdodCArIGJveE1vZGVsQWRqdXN0KCdoZWlnaHQnLCBlbCwgJ2NvbnRlbnQtYm94JykpID49IGVsLm9mZnNldEhlaWdodCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhlbCwgJ2hlaWdodCcsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgb3JkZXI6IDUsCgogICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Jlc2l6ZSddCgogICAgICAgICAgICB9CgogICAgICAgIF0KCiAgICB9IDoge307CgogICAgdmFyIEhlaWdodE1hdGNoID0gewoKICAgICAgICBtaXhpbnM6IFtGbGV4QnVnXSwKCiAgICAgICAgYXJnczogJ3RhcmdldCcsCgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIHRhcmdldDogU3RyaW5nLAogICAgICAgICAgICByb3c6IEJvb2xlYW4KICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIHRhcmdldDogJz4gKicsCiAgICAgICAgICAgIHJvdzogdHJ1ZSwKICAgICAgICAgICAgZm9yY2VIZWlnaHQ6IHRydWUKICAgICAgICB9LAoKICAgICAgICBjb21wdXRlZDogewoKICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7CiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDsKCiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGFyZ2V0LCAkZWwpOwogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIHVwZGF0ZTogewoKICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJvd3M6ICh0aGlzLnJvdyA/IGdldFJvd3ModGhpcy5lbGVtZW50cykgOiBbdGhpcy5lbGVtZW50c10pLm1hcChtYXRjaCkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgcm93cyA9IHJlZi5yb3dzOwoKICAgICAgICAgICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHRzID0gcmVmLmhlaWdodHM7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50cyA9IHJlZi5lbGVtZW50czsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gY3NzKGVsLCAnbWluSGVpZ2h0JywgaGVpZ2h0c1tpXSk7IH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXQoKICAgICAgICB9CgogICAgfTsKCiAgICBmdW5jdGlvbiBtYXRjaChlbGVtZW50cykgewogICAgICAgIHZhciBhc3NpZ247CgoKICAgICAgICBpZiAoZWxlbWVudHMubGVuZ3RoIDwgMikgewogICAgICAgICAgICByZXR1cm4ge2hlaWdodHM6IFsnJ10sIGVsZW1lbnRzOiBlbGVtZW50c307CiAgICAgICAgfQoKICAgICAgICB2YXIgcmVmID0gZ2V0SGVpZ2h0cyhlbGVtZW50cyk7CiAgICAgICAgdmFyIGhlaWdodHMgPSByZWYuaGVpZ2h0czsKICAgICAgICB2YXIgbWF4ID0gcmVmLm1heDsKICAgICAgICB2YXIgaGFzTWluSGVpZ2h0ID0gZWxlbWVudHMuc29tZShmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLnN0eWxlLm1pbkhlaWdodDsgfSk7CiAgICAgICAgdmFyIGhhc1NocnVuayA9IGVsZW1lbnRzLnNvbWUoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiAhZWwuc3R5bGUubWluSGVpZ2h0ICYmIGhlaWdodHNbaV0gPCBtYXg7IH0pOwoKICAgICAgICBpZiAoaGFzTWluSGVpZ2h0ICYmIGhhc1NocnVuaykgewogICAgICAgICAgICBjc3MoZWxlbWVudHMsICdtaW5IZWlnaHQnLCAnJyk7CiAgICAgICAgICAgICgoYXNzaWduID0gZ2V0SGVpZ2h0cyhlbGVtZW50cyksIGhlaWdodHMgPSBhc3NpZ24uaGVpZ2h0cywgbWF4ID0gYXNzaWduLm1heCkpOwogICAgICAgIH0KCiAgICAgICAgaGVpZ2h0cyA9IGVsZW1lbnRzLm1hcChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIGhlaWdodHNbaV0gPT09IG1heCAmJiB0b0Zsb2F0KGVsLnN0eWxlLm1pbkhlaWdodCkudG9GaXhlZCgyKSAhPT0gbWF4LnRvRml4ZWQoMikgPyAnJyA6IG1heDsgfQogICAgICAgICk7CgogICAgICAgIHJldHVybiB7aGVpZ2h0czogaGVpZ2h0cywgZWxlbWVudHM6IGVsZW1lbnRzfTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRIZWlnaHRzKGVsZW1lbnRzKSB7CiAgICAgICAgdmFyIGhlaWdodHMgPSBlbGVtZW50cy5tYXAoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBvZmZzZXQoZWwpLmhlaWdodCAtIGJveE1vZGVsQWRqdXN0KCdoZWlnaHQnLCBlbCwgJ2NvbnRlbnQtYm94Jyk7IH0pOwogICAgICAgIHZhciBtYXggPSBNYXRoLm1heC5hcHBseShudWxsLCBoZWlnaHRzKTsKCiAgICAgICAgcmV0dXJuIHtoZWlnaHRzOiBoZWlnaHRzLCBtYXg6IG1heH07CiAgICB9CgogICAgdmFyIEhlaWdodFZpZXdwb3J0ID0gewoKICAgICAgICBtaXhpbnM6IFtGbGV4QnVnXSwKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgZXhwYW5kOiBCb29sZWFuLAogICAgICAgICAgICBvZmZzZXRUb3A6IEJvb2xlYW4sCiAgICAgICAgICAgIG9mZnNldEJvdHRvbTogQm9vbGVhbiwKICAgICAgICAgICAgbWluSGVpZ2h0OiBOdW1iZXIKICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGV4cGFuZDogZmFsc2UsCiAgICAgICAgICAgIG9mZnNldFRvcDogZmFsc2UsCiAgICAgICAgICAgIG9mZnNldEJvdHRvbTogZmFsc2UsCiAgICAgICAgICAgIG1pbkhlaWdodDogMAogICAgICAgIH0sCgogICAgICAgIHVwZGF0ZTogewoKICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHJlZi5taW5IZWlnaHQ7CgoKICAgICAgICAgICAgICAgIGlmICghaXNWaXNpYmxlKHRoaXMuJGVsKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgbWluSGVpZ2h0ID0gJyc7CiAgICAgICAgICAgICAgICB2YXIgYm94ID0gYm94TW9kZWxBZGp1c3QoJ2hlaWdodCcsIHRoaXMuJGVsLCAnY29udGVudC1ib3gnKTsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5leHBhbmQpIHsKCiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWwuZGF0YXNldC5oZWlnaHRFeHBhbmQgPSAnJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCQoJ1tkYXRhLWhlaWdodC1leHBhbmRdJykgIT09IHRoaXMuJGVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodCA9IGhlaWdodCh3aW5kb3cpIC0gKG9mZnNldEhlaWdodChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIC0gb2Zmc2V0SGVpZ2h0KHRoaXMuJGVsKSkgLSBib3ggfHwgJyc7CgogICAgICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgLy8gb24gbW9iaWxlIGRldmljZXMgKGlPUyBhbmQgQW5kcm9pZCkgd2luZG93LmlubmVySGVpZ2h0ICE9PSAxMDB2aAogICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodCA9ICdjYWxjKDEwMHZoJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub2Zmc2V0VG9wKSB7CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmJDEgPSBvZmZzZXQodGhpcy4kZWwpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG9wID0gcmVmJDEudG9wOwogICAgICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQgKz0gdG9wID4gMCAmJiB0b3AgPCBoZWlnaHQod2luZG93KSAvIDIgPyAoIiAtICIgKyB0b3AgKyAicHgiKSA6ICcnOwoKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9mZnNldEJvdHRvbSA9PT0gdHJ1ZSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0ICs9ICIgLSAiICsgKG9mZnNldEhlaWdodCh0aGlzLiRlbC5uZXh0RWxlbWVudFNpYmxpbmcpKSArICJweCI7CgogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOdW1lcmljKHRoaXMub2Zmc2V0Qm90dG9tKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0ICs9ICIgLSAiICsgKHRoaXMub2Zmc2V0Qm90dG9tKSArICJ2aCI7CgogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vZmZzZXRCb3R0b20gJiYgZW5kc1dpdGgodGhpcy5vZmZzZXRCb3R0b20sICdweCcpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQgKz0gIiAtICIgKyAodG9GbG9hdCh0aGlzLm9mZnNldEJvdHRvbSkpICsgInB4IjsKCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1N0cmluZyh0aGlzLm9mZnNldEJvdHRvbSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodCArPSAiIC0gIiArIChvZmZzZXRIZWlnaHQocXVlcnkodGhpcy5vZmZzZXRCb3R0b20sIHRoaXMuJGVsKSkpICsgInB4IjsKCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQgKz0gKGJveCA/ICgiIC0gIiArIGJveCArICJweCIpIDogJycpICsgIikiOwoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4ge21pbkhlaWdodDogbWluSGVpZ2h0LCBwcmV2OiBwcmV2fTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBtaW5IZWlnaHQgPSByZWYubWluSGVpZ2h0OwogICAgICAgICAgICAgICAgdmFyIHByZXYgPSByZWYucHJldjsKCgogICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7bWluSGVpZ2h0OiBtaW5IZWlnaHR9KTsKCiAgICAgICAgICAgICAgICBpZiAobWluSGVpZ2h0ICE9PSBwcmV2KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kdXBkYXRlKHRoaXMuJGVsLCAncmVzaXplJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHRoaXMubWluSGVpZ2h0ICYmIHRvRmxvYXQoY3NzKHRoaXMuJGVsLCAnbWluSGVpZ2h0JykpIDwgdGhpcy5taW5IZWlnaHQpIHsKICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdtaW5IZWlnaHQnLCB0aGlzLm1pbkhlaWdodCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZXZlbnRzOiBbJ3Jlc2l6ZSddCgogICAgICAgIH0KCiAgICB9OwoKICAgIGZ1bmN0aW9uIG9mZnNldEhlaWdodChlbCkgewogICAgICAgIHJldHVybiBlbCAmJiBvZmZzZXQoZWwpLmhlaWdodCB8fCAwOwogICAgfQoKICAgIHZhciBTdmcgPSB7CgogICAgICAgIGFyZ3M6ICdzcmMnLAoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBpZDogQm9vbGVhbiwKICAgICAgICAgICAgaWNvbjogU3RyaW5nLAogICAgICAgICAgICBzcmM6IFN0cmluZywKICAgICAgICAgICAgc3R5bGU6IFN0cmluZywKICAgICAgICAgICAgd2lkdGg6IE51bWJlciwKICAgICAgICAgICAgaGVpZ2h0OiBOdW1iZXIsCiAgICAgICAgICAgIHJhdGlvOiBOdW1iZXIsCiAgICAgICAgICAgIGNsYXNzOiBTdHJpbmcsCiAgICAgICAgICAgIHN0cm9rZUFuaW1hdGlvbjogQm9vbGVhbiwKICAgICAgICAgICAgZm9jdXNhYmxlOiBCb29sZWFuLCAvLyBJRSAxMQogICAgICAgICAgICBhdHRyaWJ1dGVzOiAnbGlzdCcKICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIHJhdGlvOiAxLAogICAgICAgICAgICBpbmNsdWRlOiBbJ3N0eWxlJywgJ2NsYXNzJywgJ2ZvY3VzYWJsZSddLAogICAgICAgICAgICBjbGFzczogJycsCiAgICAgICAgICAgIHN0cm9rZUFuaW1hdGlvbjogZmFsc2UKICAgICAgICB9LAoKICAgICAgICBiZWZvcmVDb25uZWN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CiAgICAgICAgICAgIHZhciBhc3NpZ247CgoKICAgICAgICAgICAgdGhpcy5jbGFzcyArPSAnIHVrLXN2Zyc7CgogICAgICAgICAgICBpZiAoIXRoaXMuaWNvbiAmJiBpbmNsdWRlcyh0aGlzLnNyYywgJyMnKSkgewoKICAgICAgICAgICAgICAgIHZhciBwYXJ0cyA9IHRoaXMuc3JjLnNwbGl0KCcjJyk7CgogICAgICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAoYXNzaWduID0gcGFydHMsIHRoaXMuc3JjID0gYXNzaWduWzBdLCB0aGlzLmljb24gPSBhc3NpZ25bMV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICB0aGlzLnN2ZyA9IHRoaXMuZ2V0U3ZnKCkudGhlbihmdW5jdGlvbiAoZWwpIHsKICAgICAgICAgICAgICAgIHRoaXMkMS5hcHBseUF0dHJpYnV0ZXMoZWwpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMkMS5zdmdFbCA9IGluc2VydFNWRyhlbCwgdGhpcyQxLiRlbCk7CiAgICAgICAgICAgIH0sIG5vb3ApOwoKICAgICAgICB9LAoKICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICBpZiAoaXNWb2lkRWxlbWVudCh0aGlzLiRlbCkpIHsKICAgICAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsICdoaWRkZW4nLCBudWxsKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHRoaXMuc3ZnKSB7CiAgICAgICAgICAgICAgICB0aGlzLnN2Zy50aGVuKGZ1bmN0aW9uIChzdmcpIHsgcmV0dXJuICghdGhpcyQxLl9jb25uZWN0ZWQgfHwgc3ZnICE9PSB0aGlzJDEuc3ZnRWwpICYmIHJlbW92ZShzdmcpOyB9LCBub29wKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy5zdmcgPSB0aGlzLnN2Z0VsID0gbnVsbDsKCiAgICAgICAgfSwKCiAgICAgICAgdXBkYXRlOiB7CgogICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhISh0aGlzLnN0cm9rZUFuaW1hdGlvbiAmJiB0aGlzLnN2Z0VsICYmIGlzVmlzaWJsZSh0aGlzLnN2Z0VsKSk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBhcHBseUFuaW1hdGlvbih0aGlzLnN2Z0VsKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHR5cGU6IFsncmVzaXplJ10KCiAgICAgICAgfSwKCiAgICAgICAgbWV0aG9kczogewoKICAgICAgICAgICAgZ2V0U3ZnOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKICAgICAgICAgICAgICAgIHJldHVybiBsb2FkU1ZHKHRoaXMuc3JjKS50aGVuKGZ1bmN0aW9uIChzdmcpIHsgcmV0dXJuIHBhcnNlU1ZHKHN2ZywgdGhpcyQxLmljb24pIHx8IFByb21pc2UucmVqZWN0KCdTVkcgbm90IGZvdW5kLicpOyB9CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgYXBwbHlBdHRyaWJ1dGVzOiBmdW5jdGlvbihlbCkgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gdGhpcy4kb3B0aW9ucy5wcm9wcykgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzW3Byb3BdICYmIGluY2x1ZGVzKHRoaXMuaW5jbHVkZSwgcHJvcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXR0cihlbCwgcHJvcCwgdGhpc1twcm9wXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciAodmFyIGF0dHJpYnV0ZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV0uc3BsaXQoJzonLCAyKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcCQxID0gcmVmWzBdOwogICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHJlZlsxXTsKICAgICAgICAgICAgICAgICAgICBhdHRyKGVsLCBwcm9wJDEsIHZhbHVlKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaWQpIHsKICAgICAgICAgICAgICAgICAgICByZW1vdmVBdHRyKGVsLCAnaWQnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgcHJvcHMgPSBbJ3dpZHRoJywgJ2hlaWdodCddOwogICAgICAgICAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSBbdGhpcy53aWR0aCwgdGhpcy5oZWlnaHRdOwoKICAgICAgICAgICAgICAgIGlmICghZGltZW5zaW9ucy5zb21lKGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIHZhbDsgfSkpIHsKICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb25zID0gcHJvcHMubWFwKGZ1bmN0aW9uIChwcm9wKSB7IHJldHVybiBhdHRyKGVsLCBwcm9wKTsgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHZpZXdCb3ggPSBhdHRyKGVsLCAndmlld0JveCcpOwogICAgICAgICAgICAgICAgaWYgKHZpZXdCb3ggJiYgIWRpbWVuc2lvbnMuc29tZShmdW5jdGlvbiAodmFsKSB7IHJldHVybiB2YWw7IH0pKSB7CiAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9ucyA9IHZpZXdCb3guc3BsaXQoJyAnKS5zbGljZSgyKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBkaW1lbnNpb25zLmZvckVhY2goZnVuY3Rpb24gKHZhbCwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhbCA9ICh2YWwgfCAwKSAqIHRoaXMkMS5yYXRpbzsKICAgICAgICAgICAgICAgICAgICB2YWwgJiYgYXR0cihlbCwgcHJvcHNbaV0sIHZhbCk7CgogICAgICAgICAgICAgICAgICAgIGlmICh2YWwgJiYgIWRpbWVuc2lvbnNbaSBeIDFdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUF0dHIoZWwsIHByb3BzW2kgXiAxXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgYXR0cihlbCwgJ2RhdGEtc3ZnJywgdGhpcy5pY29uIHx8IHRoaXMuc3JjKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH07CgogICAgdmFyIHN2Z3MgPSB7fTsKCiAgICBmdW5jdGlvbiBsb2FkU1ZHKHNyYykgewoKICAgICAgICBpZiAoc3Znc1tzcmNdKSB7CiAgICAgICAgICAgIHJldHVybiBzdmdzW3NyY107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3Znc1tzcmNdID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewoKICAgICAgICAgICAgaWYgKCFzcmMpIHsKICAgICAgICAgICAgICAgIHJlamVjdCgpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc3RhcnRzV2l0aChzcmMsICdkYXRhOicpKSB7CiAgICAgICAgICAgICAgICByZXNvbHZlKGRlY29kZVVSSUNvbXBvbmVudChzcmMuc3BsaXQoJywnKVsxXSkpOwogICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgIGFqYXgoc3JjKS50aGVuKAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh4aHIpIHsgcmV0dXJuIHJlc29sdmUoeGhyLnJlc3BvbnNlKTsgfSwKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHJldHVybiByZWplY3QoJ1NWRyBub3QgZm91bmQuJyk7IH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICB9CgogICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIHBhcnNlU1ZHKHN2ZywgaWNvbikgewoKICAgICAgICBpZiAoaWNvbiAmJiBpbmNsdWRlcyhzdmcsICc8c3ltYm9sJykpIHsKICAgICAgICAgICAgc3ZnID0gcGFyc2VTeW1ib2xzKHN2ZywgaWNvbikgfHwgc3ZnOwogICAgICAgIH0KCiAgICAgICAgc3ZnID0gJChzdmcuc3Vic3RyKHN2Zy5pbmRleE9mKCc8c3ZnJykpKTsKICAgICAgICByZXR1cm4gc3ZnICYmIHN2Zy5oYXNDaGlsZE5vZGVzKCkgJiYgc3ZnOwogICAgfQoKICAgIHZhciBzeW1ib2xSZSA9IC88c3ltYm9sKC4qP2lkPShbJyJdKSguKj8pXDJbXl0qPzxcLylzeW1ib2w+L2c7CiAgICB2YXIgc3ltYm9scyA9IHt9OwoKICAgIGZ1bmN0aW9uIHBhcnNlU3ltYm9scyhzdmcsIGljb24pIHsKCiAgICAgICAgaWYgKCFzeW1ib2xzW3N2Z10pIHsKCiAgICAgICAgICAgIHN5bWJvbHNbc3ZnXSA9IHt9OwoKICAgICAgICAgICAgdmFyIG1hdGNoOwogICAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gc3ltYm9sUmUuZXhlYyhzdmcpKSkgewogICAgICAgICAgICAgICAgc3ltYm9sc1tzdmddW21hdGNoWzNdXSA9ICI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiIgKyAobWF0Y2hbMV0pICsgInN2Zz4iOwogICAgICAgICAgICB9CgogICAgICAgICAgICBzeW1ib2xSZS5sYXN0SW5kZXggPSAwOwoKICAgICAgICB9CgogICAgICAgIHJldHVybiBzeW1ib2xzW3N2Z11baWNvbl07CiAgICB9CgogICAgZnVuY3Rpb24gYXBwbHlBbmltYXRpb24oZWwpIHsKCiAgICAgICAgdmFyIGxlbmd0aCA9IGdldE1heFBhdGhMZW5ndGgoZWwpOwoKICAgICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KCctLXVrLWFuaW1hdGlvbi1zdHJva2UnLCBsZW5ndGgpOwogICAgICAgIH0KCiAgICB9CgogICAgZnVuY3Rpb24gZ2V0TWF4UGF0aExlbmd0aChlbCkgewogICAgICAgIHJldHVybiBNYXRoLmNlaWwoTWF0aC5tYXguYXBwbHkoTWF0aCwgJCQoJ1tzdHJva2VdJywgZWwpLm1hcChmdW5jdGlvbiAoc3Ryb2tlKSB7IHJldHVybiBzdHJva2UuZ2V0VG90YWxMZW5ndGggJiYgc3Ryb2tlLmdldFRvdGFsTGVuZ3RoKCkgfHwgMDsgfQogICAgICAgICkuY29uY2F0KFswXSkpKTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbnNlcnRTVkcoZWwsIHJvb3QpIHsKICAgICAgICBpZiAoaXNWb2lkRWxlbWVudChyb290KSB8fCByb290LnRhZ05hbWUgPT09ICdDQU5WQVMnKSB7CgogICAgICAgICAgICBhdHRyKHJvb3QsICdoaWRkZW4nLCB0cnVlKTsKCiAgICAgICAgICAgIHZhciBuZXh0ID0gcm9vdC5uZXh0RWxlbWVudFNpYmxpbmc7CiAgICAgICAgICAgIHJldHVybiBlcXVhbHMoZWwsIG5leHQpCiAgICAgICAgICAgICAgICA/IG5leHQKICAgICAgICAgICAgICAgIDogYWZ0ZXIocm9vdCwgZWwpOwoKICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgdmFyIGxhc3QgPSByb290Lmxhc3RFbGVtZW50Q2hpbGQ7CiAgICAgICAgICAgIHJldHVybiBlcXVhbHMoZWwsIGxhc3QpCiAgICAgICAgICAgICAgICA/IGxhc3QKICAgICAgICAgICAgICAgIDogYXBwZW5kKHJvb3QsIGVsKTsKCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGVxdWFscyhlbCwgb3RoZXIpIHsKICAgICAgICByZXR1cm4gYXR0cihlbCwgJ2RhdGEtc3ZnJykgPT09IGF0dHIob3RoZXIsICdkYXRhLXN2ZycpOwogICAgfQoKICAgIHZhciBjbG9zZUljb24gPSAiPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIHgxPVwiMVwiIHkxPVwiMVwiIHgyPVwiMTNcIiB5Mj1cIjEzXCIvPjxsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIHgxPVwiMTNcIiB5MT1cIjFcIiB4Mj1cIjFcIiB5Mj1cIjEzXCIvPjwvc3ZnPiI7CgogICAgdmFyIGNsb3NlTGFyZ2UgPSAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHgxPVwiMVwiIHkxPVwiMVwiIHgyPVwiMTlcIiB5Mj1cIjE5XCIvPjxsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHgxPVwiMTlcIiB5MT1cIjFcIiB4Mj1cIjFcIiB5Mj1cIjE5XCIvPjwvc3ZnPiI7CgogICAgdmFyIG1hcmtlciA9ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgeD1cIjlcIiB5PVwiNFwiIHdpZHRoPVwiMVwiIGhlaWdodD1cIjExXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjlcIiB3aWR0aD1cIjExXCIgaGVpZ2h0PVwiMVwiLz48L3N2Zz4iOwoKICAgIHZhciBuYXZiYXJUb2dnbGVJY29uID0gIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cmVjdCB5PVwiOVwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyXCIvPjxyZWN0IHk9XCIzXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjJcIi8+PHJlY3QgeT1cIjE1XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjJcIi8+PC9zdmc+IjsKCiAgICB2YXIgb3ZlcmxheUljb24gPSAiPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxyZWN0IHg9XCIxOVwiIHk9XCIwXCIgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiNDBcIi8+PHJlY3QgeD1cIjBcIiB5PVwiMTlcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiMVwiLz48L3N2Zz4iOwoKICAgIHZhciBwYWdpbmF0aW9uTmV4dCA9ICI8c3ZnIHdpZHRoPVwiN1wiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCA3IDEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjJcIiBwb2ludHM9XCIxIDEgNiA2IDEgMTFcIi8+PC9zdmc+IjsKCiAgICB2YXIgcGFnaW5hdGlvblByZXZpb3VzID0gIjxzdmcgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDcgMTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMlwiIHBvaW50cz1cIjYgMSAxIDYgNiAxMVwiLz48L3N2Zz4iOwoKICAgIHZhciBzZWFyY2hJY29uID0gIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGN4PVwiOVwiIGN5PVwiOVwiIHI9XCI3XCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGQ9XCJNMTQsMTQgTDE4LDE4IEwxNCwxNCBaXCIvPjwvc3ZnPiI7CgogICAgdmFyIHNlYXJjaExhcmdlID0gIjxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuOFwiIGN4PVwiMTcuNVwiIGN5PVwiMTcuNVwiIHI9XCIxNi41XCIvPjxsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuOFwiIHgxPVwiMzhcIiB5MT1cIjM5XCIgeDI9XCIyOVwiIHkyPVwiMzBcIi8+PC9zdmc+IjsKCiAgICB2YXIgc2VhcmNoTmF2YmFyID0gIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGN4PVwiMTAuNVwiIGN5PVwiMTAuNVwiIHI9XCI5LjVcIi8+PGxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgeDE9XCIyM1wiIHkxPVwiMjNcIiB4Mj1cIjE3XCIgeTI9XCIxN1wiLz48L3N2Zz4iOwoKICAgIHZhciBzbGlkZW5hdk5leHQgPSAiPHN2ZyB3aWR0aD1cIjE0cHhcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgMCAxNCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgcG9pbnRzPVwiMS4yMjUsMjMgMTIuNzc1LDEyIDEuMjI1LDEgXCIvPjwvc3ZnPiI7CgogICAgdmFyIHNsaWRlbmF2TmV4dExhcmdlID0gIjxzdmcgd2lkdGg9XCIyNXB4XCIgaGVpZ2h0PVwiNDBweFwiIHZpZXdCb3g9XCIwIDAgMjUgNDBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjJcIiBwb2ludHM9XCI0LjAwMiwzOC41NDcgMjIuNTI3LDIwLjAyNCA0LDEuNSBcIi8+PC9zdmc+IjsKCiAgICB2YXIgc2xpZGVuYXZQcmV2aW91cyA9ICI8c3ZnIHdpZHRoPVwiMTRweFwiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAwIDE0IDI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBwb2ludHM9XCIxMi43NzUsMSAxLjIyNSwxMiAxMi43NzUsMjMgXCIvPjwvc3ZnPiI7CgogICAgdmFyIHNsaWRlbmF2UHJldmlvdXNMYXJnZSA9ICI8c3ZnIHdpZHRoPVwiMjVweFwiIGhlaWdodD1cIjQwcHhcIiB2aWV3Qm94PVwiMCAwIDI1IDQwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIyXCIgcG9pbnRzPVwiMjAuNTI3LDEuNSAyLDIwLjAyNCAyMC41MjUsMzguNTQ3IFwiLz48L3N2Zz4iOwoKICAgIHZhciBzcGlubmVyID0gIjxzdmcgd2lkdGg9XCIzMFwiIGhlaWdodD1cIjMwXCIgdmlld0JveD1cIjAgMCAzMCAzMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIGN4PVwiMTVcIiBjeT1cIjE1XCIgcj1cIjE0XCIvPjwvc3ZnPiI7CgogICAgdmFyIHRvdG9wID0gIjxzdmcgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAxOCAxMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCIgcG9pbnRzPVwiMSA5IDkgMSAxNyA5IFwiLz48L3N2Zz4iOwoKICAgIHZhciBwYXJzZWQgPSB7fTsKICAgIHZhciBpY29ucyA9IHsKICAgICAgICBzcGlubmVyOiBzcGlubmVyLAogICAgICAgIHRvdG9wOiB0b3RvcCwKICAgICAgICBtYXJrZXI6IG1hcmtlciwKICAgICAgICAnY2xvc2UtaWNvbic6IGNsb3NlSWNvbiwKICAgICAgICAnY2xvc2UtbGFyZ2UnOiBjbG9zZUxhcmdlLAogICAgICAgICduYXZiYXItdG9nZ2xlLWljb24nOiBuYXZiYXJUb2dnbGVJY29uLAogICAgICAgICdvdmVybGF5LWljb24nOiBvdmVybGF5SWNvbiwKICAgICAgICAncGFnaW5hdGlvbi1uZXh0JzogcGFnaW5hdGlvbk5leHQsCiAgICAgICAgJ3BhZ2luYXRpb24tcHJldmlvdXMnOiBwYWdpbmF0aW9uUHJldmlvdXMsCiAgICAgICAgJ3NlYXJjaC1pY29uJzogc2VhcmNoSWNvbiwKICAgICAgICAnc2VhcmNoLWxhcmdlJzogc2VhcmNoTGFyZ2UsCiAgICAgICAgJ3NlYXJjaC1uYXZiYXInOiBzZWFyY2hOYXZiYXIsCiAgICAgICAgJ3NsaWRlbmF2LW5leHQnOiBzbGlkZW5hdk5leHQsCiAgICAgICAgJ3NsaWRlbmF2LW5leHQtbGFyZ2UnOiBzbGlkZW5hdk5leHRMYXJnZSwKICAgICAgICAnc2xpZGVuYXYtcHJldmlvdXMnOiBzbGlkZW5hdlByZXZpb3VzLAogICAgICAgICdzbGlkZW5hdi1wcmV2aW91cy1sYXJnZSc6IHNsaWRlbmF2UHJldmlvdXNMYXJnZQogICAgfTsKCiAgICB2YXIgSWNvbiA9IHsKCiAgICAgICAgaW5zdGFsbDogaW5zdGFsbCwKCiAgICAgICAgZXh0ZW5kczogU3ZnLAoKICAgICAgICBhcmdzOiAnaWNvbicsCgogICAgICAgIHByb3BzOiBbJ2ljb24nXSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBpbmNsdWRlOiBbJ2ZvY3VzYWJsZSddCiAgICAgICAgfSwKCiAgICAgICAgaXNJY29uOiB0cnVlLAoKICAgICAgICBiZWZvcmVDb25uZWN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsICd1ay1pY29uJyk7CiAgICAgICAgfSwKCiAgICAgICAgbWV0aG9kczogewoKICAgICAgICAgICAgZ2V0U3ZnOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICB2YXIgaWNvbiA9IGdldEljb24oYXBwbHlSdGwodGhpcy5pY29uKSk7CgogICAgICAgICAgICAgICAgaWYgKCFpY29uKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdJY29uIG5vdCBmb3VuZC4nKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGljb24pOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9OwoKICAgIHZhciBJY29uQ29tcG9uZW50ID0gewoKICAgICAgICBhcmdzOiBmYWxzZSwKCiAgICAgICAgZXh0ZW5kczogSWNvbiwKCiAgICAgICAgZGF0YTogZnVuY3Rpb24gKHZtKSB7IHJldHVybiAoewogICAgICAgICAgICBpY29uOiBoeXBoZW5hdGUodm0uY29uc3RydWN0b3Iub3B0aW9ucy5uYW1lKQogICAgICAgIH0pOyB9LAoKICAgICAgICBiZWZvcmVDb25uZWN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsIHRoaXMuJG5hbWUpOwogICAgICAgIH0KCiAgICB9OwoKICAgIHZhciBTbGlkZW5hdiA9IHsKCiAgICAgICAgZXh0ZW5kczogSWNvbkNvbXBvbmVudCwKCiAgICAgICAgYmVmb3JlQ29ubmVjdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstc2xpZGVuYXYnKTsKICAgICAgICB9LAoKICAgICAgICBjb21wdXRlZDogewoKICAgICAgICAgICAgaWNvbjogZnVuY3Rpb24ocmVmLCAkZWwpIHsKICAgICAgICAgICAgICAgIHZhciBpY29uID0gcmVmLmljb247CgogICAgICAgICAgICAgICAgcmV0dXJuIGhhc0NsYXNzKCRlbCwgJ3VrLXNsaWRlbmF2LWxhcmdlJykKICAgICAgICAgICAgICAgICAgICA/IChpY29uICsgIi1sYXJnZSIpCiAgICAgICAgICAgICAgICAgICAgOiBpY29uOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9OwoKICAgIHZhciBTZWFyY2ggPSB7CgogICAgICAgIGV4dGVuZHM6IEljb25Db21wb25lbnQsCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICBpY29uOiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIGljb24gPSByZWYuaWNvbjsKCiAgICAgICAgICAgICAgICByZXR1cm4gaGFzQ2xhc3MoJGVsLCAndWstc2VhcmNoLWljb24nKSAmJiBwYXJlbnRzKCRlbCwgJy51ay1zZWFyY2gtbGFyZ2UnKS5sZW5ndGgKICAgICAgICAgICAgICAgICAgICA/ICdzZWFyY2gtbGFyZ2UnCiAgICAgICAgICAgICAgICAgICAgOiBwYXJlbnRzKCRlbCwgJy51ay1zZWFyY2gtbmF2YmFyJykubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3NlYXJjaC1uYXZiYXInCiAgICAgICAgICAgICAgICAgICAgICAgIDogaWNvbjsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICB2YXIgQ2xvc2UgPSB7CgogICAgICAgIGV4dGVuZHM6IEljb25Db21wb25lbnQsCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICBpY29uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoImNsb3NlLSIgKyAoaGFzQ2xhc3ModGhpcy4kZWwsICd1ay1jbG9zZS1sYXJnZScpID8gJ2xhcmdlJyA6ICdpY29uJykpOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9OwoKICAgIHZhciBTcGlubmVyID0gewoKICAgICAgICBleHRlbmRzOiBJY29uQ29tcG9uZW50LAoKICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCiAgICAgICAgICAgIHRoaXMuc3ZnLnRoZW4oZnVuY3Rpb24gKHN2ZykgeyByZXR1cm4gdGhpcyQxLnJhdGlvICE9PSAxICYmIGNzcygkKCdjaXJjbGUnLCBzdmcpLCAnc3Ryb2tlV2lkdGgnLCAxIC8gdGhpcyQxLnJhdGlvKTsgfSwgbm9vcCk7CiAgICAgICAgfQoKICAgIH07CgogICAgZnVuY3Rpb24gaW5zdGFsbChVSWtpdCkgewogICAgICAgIFVJa2l0Lmljb24uYWRkID0gZnVuY3Rpb24gKG5hbWUsIHN2ZykgewogICAgICAgICAgICB2YXIgb2JqOwoKCiAgICAgICAgICAgIHZhciBhZGRlZCA9IGlzU3RyaW5nKG5hbWUpID8gKCggb2JqID0ge30sIG9ialtuYW1lXSA9IHN2Zywgb2JqICkpIDogbmFtZTsKICAgICAgICAgICAgZWFjaChhZGRlZCwgZnVuY3Rpb24gKHN2ZywgbmFtZSkgewogICAgICAgICAgICAgICAgaWNvbnNbbmFtZV0gPSBzdmc7CiAgICAgICAgICAgICAgICBkZWxldGUgcGFyc2VkW25hbWVdOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGlmIChVSWtpdC5faW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgICAgIGFwcGx5KGRvY3VtZW50LmJvZHksIGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWFjaChVSWtpdC5nZXRDb21wb25lbnRzKGVsKSwgZnVuY3Rpb24gKGNtcCkgewogICAgICAgICAgICAgICAgICAgICAgICBjbXAuJG9wdGlvbnMuaXNJY29uICYmIGNtcC5pY29uIGluIGFkZGVkICYmIGNtcC4kcmVzZXQoKTsKICAgICAgICAgICAgICAgICAgICB9KTsgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0SWNvbihpY29uKSB7CgogICAgICAgIGlmICghaWNvbnNbaWNvbl0pIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoIXBhcnNlZFtpY29uXSkgewogICAgICAgICAgICBwYXJzZWRbaWNvbl0gPSAkKGljb25zW2ljb25dLnRyaW0oKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcGFyc2VkW2ljb25dLmNsb25lTm9kZSh0cnVlKTsKICAgIH0KCiAgICBmdW5jdGlvbiBhcHBseVJ0bChpY29uKSB7CiAgICAgICAgcmV0dXJuIGlzUnRsID8gc3dhcChzd2FwKGljb24sICdsZWZ0JywgJ3JpZ2h0JyksICdwcmV2aW91cycsICduZXh0JykgOiBpY29uOwogICAgfQoKICAgIHZhciBJbWcgPSB7CgogICAgICAgIGFyZ3M6ICdkYXRhU3JjJywKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgZGF0YVNyYzogU3RyaW5nLAogICAgICAgICAgICBkYXRhU3Jjc2V0OiBCb29sZWFuLAogICAgICAgICAgICBzaXplczogU3RyaW5nLAogICAgICAgICAgICB3aWR0aDogTnVtYmVyLAogICAgICAgICAgICBoZWlnaHQ6IE51bWJlciwKICAgICAgICAgICAgb2Zmc2V0VG9wOiBTdHJpbmcsCiAgICAgICAgICAgIG9mZnNldExlZnQ6IFN0cmluZywKICAgICAgICAgICAgdGFyZ2V0OiBTdHJpbmcKICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGRhdGFTcmM6ICcnLAogICAgICAgICAgICBkYXRhU3Jjc2V0OiBmYWxzZSwKICAgICAgICAgICAgc2l6ZXM6IGZhbHNlLAogICAgICAgICAgICB3aWR0aDogZmFsc2UsCiAgICAgICAgICAgIGhlaWdodDogZmFsc2UsCiAgICAgICAgICAgIG9mZnNldFRvcDogJzUwdmgnLAogICAgICAgICAgICBvZmZzZXRMZWZ0OiAwLAogICAgICAgICAgICB0YXJnZXQ6IGZhbHNlCiAgICAgICAgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIGNhY2hlS2V5OiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBkYXRhU3JjID0gcmVmLmRhdGFTcmM7CgogICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy4kbmFtZSkgKyAiLiIgKyBkYXRhU3JjKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHdpZHRoOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IHJlZi53aWR0aDsKICAgICAgICAgICAgICAgIHZhciBkYXRhV2lkdGggPSByZWYuZGF0YVdpZHRoOwoKICAgICAgICAgICAgICAgIHJldHVybiB3aWR0aCB8fCBkYXRhV2lkdGg7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBoZWlnaHQ6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IHJlZi5oZWlnaHQ7CiAgICAgICAgICAgICAgICB2YXIgZGF0YUhlaWdodCA9IHJlZi5kYXRhSGVpZ2h0OwoKICAgICAgICAgICAgICAgIHJldHVybiBoZWlnaHQgfHwgZGF0YUhlaWdodDsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHNpemVzOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBzaXplcyA9IHJlZi5zaXplczsKICAgICAgICAgICAgICAgIHZhciBkYXRhU2l6ZXMgPSByZWYuZGF0YVNpemVzOwoKICAgICAgICAgICAgICAgIHJldHVybiBzaXplcyB8fCBkYXRhU2l6ZXM7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBpc0ltZzogZnVuY3Rpb24oXywgJGVsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaXNJbWcoJGVsKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHRhcmdldDogewoKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiBbdGhpcy4kZWxdLmNvbmNhdChxdWVyeUFsbCh0YXJnZXQsIHRoaXMuJGVsKSk7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIHdhdGNoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmUoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBvZmZzZXRUb3A6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIG9mZnNldFRvcCA9IHJlZi5vZmZzZXRUb3A7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRvUHgob2Zmc2V0VG9wLCAnaGVpZ2h0Jyk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBvZmZzZXRMZWZ0OiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBvZmZzZXRMZWZ0ID0gcmVmLm9mZnNldExlZnQ7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRvUHgob2Zmc2V0TGVmdCwgJ3dpZHRoJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmIChzdG9yYWdlW3RoaXMuY2FjaGVLZXldKSB7CiAgICAgICAgICAgICAgICBzZXRTcmNBdHRycyh0aGlzLiRlbCwgc3RvcmFnZVt0aGlzLmNhY2hlS2V5XSB8fCB0aGlzLmRhdGFTcmMsIHRoaXMuZGF0YVNyY3NldCwgdGhpcy5zaXplcyk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0ltZyAmJiB0aGlzLndpZHRoICYmIHRoaXMuaGVpZ2h0KSB7CiAgICAgICAgICAgICAgICBzZXRTcmNBdHRycyh0aGlzLiRlbCwgZ2V0UGxhY2Vob2xkZXJJbWFnZSh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCwgdGhpcy5zaXplcykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHRoaXMubG9hZCwgewogICAgICAgICAgICAgICAgcm9vdE1hcmdpbjogKCh0aGlzLm9mZnNldFRvcCkgKyAicHggIiArICh0aGlzLm9mZnNldExlZnQpICsgInB4IikKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5vYnNlcnZlKTsKCiAgICAgICAgfSwKCiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7CiAgICAgICAgfSwKCiAgICAgICAgdXBkYXRlOiB7CgogICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwogICAgICAgICAgICAgICAgdmFyIGltYWdlID0gcmVmLmltYWdlOwoKCiAgICAgICAgICAgICAgICBpZiAoIWltYWdlICYmIGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQodGhpcy5vYnNlcnZlci50YWtlUmVjb3JkcygpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0ltZykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpbWFnZSAmJiBpbWFnZS50aGVuKGZ1bmN0aW9uIChpbWcpIHsgcmV0dXJuIGltZyAmJiBpbWcuY3VycmVudFNyYyAhPT0gJycgJiYgc2V0U3JjQXR0cnModGhpcyQxLiRlbCwgY3VycmVudFNyYyhpbWcpKTsgfSk7CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGEpIHsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhU3Jjc2V0ICYmIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICE9PSAxKSB7CgogICAgICAgICAgICAgICAgICAgIHZhciBiZ1NpemUgPSBjc3ModGhpcy4kZWwsICdiYWNrZ3JvdW5kU2l6ZScpOwogICAgICAgICAgICAgICAgICAgIGlmIChiZ1NpemUubWF0Y2goL14oYXV0b1xzPykrJC8pIHx8IHRvRmxvYXQoYmdTaXplKSA9PT0gZGF0YS5iZ1NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5iZ1NpemUgPSBnZXRTb3VyY2VTaXplKHRoaXMuZGF0YVNyY3NldCwgdGhpcy5zaXplcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2JhY2tncm91bmRTaXplJywgKChkYXRhLmJnU2l6ZSkgKyAicHgiKSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ10KCiAgICAgICAgfSwKCiAgICAgICAgbWV0aG9kczogewoKICAgICAgICAgICAgbG9hZDogZnVuY3Rpb24oZW50cmllcykgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgICAgIC8vIE9sZCBjaHJvbWl1bSBiYXNlZCBicm93c2VycyAoVUMgQnJvd3NlcikgZGlkIG5vdCBpbXBsZW1lbnQgYGlzSW50ZXJzZWN0aW5nYAogICAgICAgICAgICAgICAgaWYgKCFlbnRyaWVzLnNvbWUoZnVuY3Rpb24gKGVudHJ5KSB7IHJldHVybiBpc1VuZGVmaW5lZChlbnRyeS5pc0ludGVyc2VjdGluZykgfHwgZW50cnkuaXNJbnRlcnNlY3Rpbmc7IH0pKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRoaXMuX2RhdGEuaW1hZ2UgPSBnZXRJbWFnZSh0aGlzLmRhdGFTcmMsIHRoaXMuZGF0YVNyY3NldCwgdGhpcy5zaXplcykudGhlbihmdW5jdGlvbiAoaW1nKSB7CgogICAgICAgICAgICAgICAgICAgIHNldFNyY0F0dHJzKHRoaXMkMS4kZWwsIGN1cnJlbnRTcmMoaW1nKSwgaW1nLnNyY3NldCwgaW1nLnNpemVzKTsKICAgICAgICAgICAgICAgICAgICBzdG9yYWdlW3RoaXMkMS5jYWNoZUtleV0gPSBjdXJyZW50U3JjKGltZyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltZzsKCiAgICAgICAgICAgICAgICB9LCBub29wKTsKCiAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIG9ic2VydmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9kYXRhLmltYWdlICYmIHRoaXMuX2Nvbm5lY3RlZCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0aGlzJDEub2JzZXJ2ZXIub2JzZXJ2ZShlbCk7IH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9OwoKICAgIGZ1bmN0aW9uIHNldFNyY0F0dHJzKGVsLCBzcmMsIHNyY3NldCwgc2l6ZXMpIHsKCiAgICAgICAgaWYgKGlzSW1nKGVsKSkgewogICAgICAgICAgICBzaXplcyAmJiAoZWwuc2l6ZXMgPSBzaXplcyk7CiAgICAgICAgICAgIHNyY3NldCAmJiAoZWwuc3Jjc2V0ID0gc3Jjc2V0KTsKICAgICAgICAgICAgc3JjICYmIChlbC5zcmMgPSBzcmMpOwogICAgICAgIH0gZWxzZSBpZiAoc3JjKSB7CgogICAgICAgICAgICB2YXIgY2hhbmdlID0gIWluY2x1ZGVzKGVsLnN0eWxlLmJhY2tncm91bmRJbWFnZSwgc3JjKTsKICAgICAgICAgICAgaWYgKGNoYW5nZSkgewogICAgICAgICAgICAgICAgY3NzKGVsLCAnYmFja2dyb3VuZEltYWdlJywgKCJ1cmwoIiArIChlc2NhcGUoc3JjKSkgKyAiKSIpKTsKICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsIGNyZWF0ZUV2ZW50KCdsb2FkJywgZmFsc2UpKTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfQoKICAgIGZ1bmN0aW9uIGdldFBsYWNlaG9sZGVySW1hZ2Uod2lkdGgsIGhlaWdodCwgc2l6ZXMpIHsKICAgICAgICB2YXIgYXNzaWduOwoKCiAgICAgICAgaWYgKHNpemVzKSB7CiAgICAgICAgICAgICgoYXNzaWduID0gRGltZW5zaW9ucy5yYXRpbyh7d2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodH0sICd3aWR0aCcsIHRvUHgoc2l6ZXNUb1BpeGVsKHNpemVzKSkpLCB3aWR0aCA9IGFzc2lnbi53aWR0aCwgaGVpZ2h0ID0gYXNzaWduLmhlaWdodCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIiICsgd2lkdGggKyAiXCIgaGVpZ2h0PVwiIiArIGhlaWdodCArICJcIj48L3N2Zz4iKTsKICAgIH0KCiAgICB2YXIgc2l6ZXNSZSA9IC9ccyooLio/KVxzKihcdyt8Y2FsY1woLio/XCkpXHMqKD86LHwkKS9nOwogICAgZnVuY3Rpb24gc2l6ZXNUb1BpeGVsKHNpemVzKSB7CiAgICAgICAgdmFyIG1hdGNoZXM7CgogICAgICAgIHNpemVzUmUubGFzdEluZGV4ID0gMDsKCiAgICAgICAgd2hpbGUgKChtYXRjaGVzID0gc2l6ZXNSZS5leGVjKHNpemVzKSkpIHsKICAgICAgICAgICAgaWYgKCFtYXRjaGVzWzFdIHx8IHdpbmRvdy5tYXRjaE1lZGlhKG1hdGNoZXNbMV0pLm1hdGNoZXMpIHsKICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBldmFsdWF0ZVNpemUobWF0Y2hlc1syXSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG1hdGNoZXMgfHwgJzEwMHZ3JzsKICAgIH0KCiAgICB2YXIgc2l6ZVJlID0gL1xkKyg/Olx3K3wlKS9nOwogICAgdmFyIGFkZGl0aW9uUmUgPSAvWystXT8oXGQrKS9nOwogICAgZnVuY3Rpb24gZXZhbHVhdGVTaXplKHNpemUpIHsKICAgICAgICByZXR1cm4gc3RhcnRzV2l0aChzaXplLCAnY2FsYycpCiAgICAgICAgICAgID8gc2l6ZQogICAgICAgICAgICAgICAgLnN1YnN0cmluZyg1LCBzaXplLmxlbmd0aCAtIDEpCiAgICAgICAgICAgICAgICAucmVwbGFjZShzaXplUmUsIGZ1bmN0aW9uIChzaXplKSB7IHJldHVybiB0b1B4KHNpemUpOyB9KQogICAgICAgICAgICAgICAgLnJlcGxhY2UoLyAvZywgJycpCiAgICAgICAgICAgICAgICAubWF0Y2goYWRkaXRpb25SZSkKICAgICAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgKyArYjsgfSwgMCkKICAgICAgICAgICAgOiBzaXplOwogICAgfQoKICAgIHZhciBzcmNTZXRSZSA9IC9ccytcZCt3XHMqKD86LHwkKS9nOwogICAgZnVuY3Rpb24gZ2V0U291cmNlU2l6ZShzcmNzZXQsIHNpemVzKSB7CiAgICAgICAgdmFyIHNyY1NpemUgPSB0b1B4KHNpemVzVG9QaXhlbChzaXplcykpOwogICAgICAgIHZhciBkZXNjcmlwdG9ycyA9IChzcmNzZXQubWF0Y2goc3JjU2V0UmUpIHx8IFtdKS5tYXAodG9GbG9hdCkuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSAtIGI7IH0pOwoKICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnMuZmlsdGVyKGZ1bmN0aW9uIChzaXplKSB7IHJldHVybiBzaXplID49IHNyY1NpemU7IH0pWzBdIHx8IGRlc2NyaXB0b3JzLnBvcCgpIHx8ICcnOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzSW1nKGVsKSB7CiAgICAgICAgcmV0dXJuIGVsLnRhZ05hbWUgPT09ICdJTUcnOwogICAgfQoKICAgIGZ1bmN0aW9uIGN1cnJlbnRTcmMoZWwpIHsKICAgICAgICByZXR1cm4gZWwuY3VycmVudFNyYyB8fCBlbC5zcmM7CiAgICB9CgogICAgdmFyIGtleSA9ICdfX3Rlc3RfXyc7CiAgICB2YXIgc3RvcmFnZTsKCiAgICAvLyB3b3JrYXJvdW5kIGZvciBTYWZhcmkncyBwcml2YXRlIGJyb3dzaW5nIG1vZGUgYW5kIGFjY2Vzc2luZyBzZXNzaW9uU3RvcmFnZSBpbiBCbGluawogICAgdHJ5IHsKICAgICAgICBzdG9yYWdlID0gd2luZG93LnNlc3Npb25TdG9yYWdlIHx8IHt9OwogICAgICAgIHN0b3JhZ2Vba2V5XSA9IDE7CiAgICAgICAgZGVsZXRlIHN0b3JhZ2Vba2V5XTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBzdG9yYWdlID0ge307CiAgICB9CgogICAgdmFyIE1lZGlhID0gewoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBtZWRpYTogQm9vbGVhbgogICAgICAgIH0sCgogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgbWVkaWE6IGZhbHNlCiAgICAgICAgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIG1hdGNoTWVkaWE6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIG1lZGlhID0gdG9NZWRpYSh0aGlzLm1lZGlhKTsKICAgICAgICAgICAgICAgIHJldHVybiAhbWVkaWEgfHwgd2luZG93Lm1hdGNoTWVkaWEobWVkaWEpLm1hdGNoZXM7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH07CgogICAgZnVuY3Rpb24gdG9NZWRpYSh2YWx1ZSkgewoKICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7CiAgICAgICAgICAgIGlmICh2YWx1ZVswXSA9PT0gJ0AnKSB7CiAgICAgICAgICAgICAgICB2YXIgbmFtZSA9ICJicmVha3BvaW50LSIgKyAodmFsdWUuc3Vic3RyKDEpKTsKICAgICAgICAgICAgICAgIHZhbHVlID0gdG9GbG9hdChnZXRDc3NWYXIobmFtZSkpOwogICAgICAgICAgICB9IGVsc2UgaWYgKGlzTmFOKHZhbHVlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdmFsdWUgJiYgIWlzTmFOKHZhbHVlKSA/ICgiKG1pbi13aWR0aDogIiArIHZhbHVlICsgInB4KSIpIDogZmFsc2U7CiAgICB9CgogICAgdmFyIExlYWRlciA9IHsKCiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIE1lZGlhXSwKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgZmlsbDogU3RyaW5nCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBmaWxsOiAnJywKICAgICAgICAgICAgY2xzV3JhcHBlcjogJ3VrLWxlYWRlci1maWxsJywKICAgICAgICAgICAgY2xzSGlkZTogJ3VrLWxlYWRlci1oaWRlJywKICAgICAgICAgICAgYXR0ckZpbGw6ICdkYXRhLWZpbGwnCiAgICAgICAgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIGZpbGw6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIGZpbGwgPSByZWYuZmlsbDsKCiAgICAgICAgICAgICAgICByZXR1cm4gZmlsbCB8fCBnZXRDc3NWYXIoJ2xlYWRlci1maWxsLWNvbnRlbnQnKTsKICAgICAgICAgICAgfQoKICAgICAgICB9LAoKICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYXNzaWduOwoKICAgICAgICAgICAgKGFzc2lnbiA9IHdyYXBJbm5lcih0aGlzLiRlbCwgKCI8c3BhbiBjbGFzcz1cIiIgKyAodGhpcy5jbHNXcmFwcGVyKSArICJcIj4iKSksIHRoaXMud3JhcHBlciA9IGFzc2lnblswXSk7CiAgICAgICAgfSwKCiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdW53cmFwKHRoaXMud3JhcHBlci5jaGlsZE5vZGVzKTsKICAgICAgICB9LAoKICAgICAgICB1cGRhdGU6IHsKCiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIGNoYW5nZWQgPSByZWYuY2hhbmdlZDsKICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IHJlZi53aWR0aDsKCgogICAgICAgICAgICAgICAgdmFyIHByZXYgPSB3aWR0aDsKCiAgICAgICAgICAgICAgICB3aWR0aCA9IE1hdGguZmxvb3IodGhpcy4kZWwub2Zmc2V0V2lkdGggLyAyKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCwKICAgICAgICAgICAgICAgICAgICBmaWxsOiB0aGlzLmZpbGwsCiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZDogY2hhbmdlZCB8fCBwcmV2ICE9PSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICBoaWRlOiAhdGhpcy5tYXRjaE1lZGlhCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGEpIHsKCiAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyh0aGlzLndyYXBwZXIsIHRoaXMuY2xzSGlkZSwgZGF0YS5oaWRlKTsKCiAgICAgICAgICAgICAgICBpZiAoZGF0YS5jaGFuZ2VkKSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5jaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLndyYXBwZXIsIHRoaXMuYXR0ckZpbGwsIG5ldyBBcnJheShkYXRhLndpZHRoKS5qb2luKGRhdGEuZmlsbCkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXQoKICAgICAgICB9CgogICAgfTsKCiAgICB2YXIgQ29udGFpbmVyID0gewoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBjb250YWluZXI6IEJvb2xlYW4KICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGNvbnRhaW5lcjogdHJ1ZQogICAgICAgIH0sCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICBjb250YWluZXI6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IHJlZi5jb250YWluZXI7CgogICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lciA9PT0gdHJ1ZSAmJiB0aGlzLiRjb250YWluZXIgfHwgY29udGFpbmVyICYmICQoY29udGFpbmVyKTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICB2YXIgYWN0aXZlJDEgPSBbXTsKCiAgICB2YXIgTW9kYWwgPSB7CgogICAgICAgIG1peGluczogW0NsYXNzLCBDb250YWluZXIsIFRvZ2dsYWJsZV0sCgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIHNlbFBhbmVsOiBTdHJpbmcsCiAgICAgICAgICAgIHNlbENsb3NlOiBTdHJpbmcsCiAgICAgICAgICAgIGVzY0Nsb3NlOiBCb29sZWFuLAogICAgICAgICAgICBiZ0Nsb3NlOiBCb29sZWFuLAogICAgICAgICAgICBzdGFjazogQm9vbGVhbgogICAgICAgIH0sCgogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgY2xzOiAndWstb3BlbicsCiAgICAgICAgICAgIGVzY0Nsb3NlOiB0cnVlLAogICAgICAgICAgICBiZ0Nsb3NlOiB0cnVlLAogICAgICAgICAgICBvdmVybGF5OiB0cnVlLAogICAgICAgICAgICBzdGFjazogZmFsc2UKICAgICAgICB9LAoKICAgICAgICBjb21wdXRlZDogewoKICAgICAgICAgICAgcGFuZWw6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7CiAgICAgICAgICAgICAgICB2YXIgc2VsUGFuZWwgPSByZWYuc2VsUGFuZWw7CgogICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsUGFuZWwsICRlbCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB0cmFuc2l0aW9uRWxlbWVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbDsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGJnQ2xvc2U6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIGJnQ2xvc2UgPSByZWYuYmdDbG9zZTsKCiAgICAgICAgICAgICAgICByZXR1cm4gYmdDbG9zZSAmJiB0aGlzLnBhbmVsOwogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIGJlZm9yZURpc2Nvbm5lY3Q6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSkgewogICAgICAgICAgICAgICAgdGhpcy50b2dnbGVOb3codGhpcy4kZWwsIGZhbHNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIGV2ZW50czogWwoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsCgogICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbENsb3NlOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAndG9nZ2xlJywKCiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLAoKICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3Jlc2hvdycsCgogICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CgogICAgICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlcyhhY3RpdmUkMSwgdGhpcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnN0YWNrICYmIGFjdGl2ZSQxLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBQcm9taXNlLmFsbChhY3RpdmUkMS5tYXAoZnVuY3Rpb24gKG1vZGFsKSB7IHJldHVybiBtb2RhbC5oaWRlKCk7IH0pKS50aGVuKHRoaXMuc2hvdyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUkMS5wdXNoKHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogJ3Nob3cnLAoKICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGgod2luZG93KSAtIHdpZHRoKGRvY3VtZW50KSAmJiB0aGlzLm92ZXJsYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmJvZHksICdvdmVyZmxvd1knLCAnc2Nyb2xsJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHRoaXMuY2xzUGFnZSk7CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmJnQ2xvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgb25jZSh0aGlzLiRlbCwgJ2hpZGUnLCBkZWxheU9uKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdFByZXZlbnRlZCA9IHJlZi5kZWZhdWx0UHJldmVudGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBsYXN0KGFjdGl2ZSQxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdFByZXZlbnRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGN1cnJlbnQgPT09IHRoaXMkMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICghY3VycmVudC5vdmVybGF5IHx8IHdpdGhpbih0YXJnZXQsIGN1cnJlbnQuJGVsKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhd2l0aGluKHRhcmdldCwgY3VycmVudC5wYW5lbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwge3NlbGY6IHRydWV9KTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVzY0Nsb3NlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9uY2UodGhpcy4kZWwsICdoaWRlJywgb24oZG9jdW1lbnQsICdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50ID0gbGFzdChhY3RpdmUkMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXlDb2RlID09PSAyNyAmJiBjdXJyZW50ID09PSB0aGlzJDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7c2VsZjogdHJ1ZX0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogJ2hpZGRlbicsCgogICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICAgICAgICAgIGFjdGl2ZSQxLnNwbGljZShhY3RpdmUkMS5pbmRleE9mKHRoaXMpLCAxKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUkMS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmJvZHksICdvdmVyZmxvd1knLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSQxLnNvbWUoZnVuY3Rpb24gKG1vZGFsKSB7IHJldHVybiBtb2RhbC5jbHNQYWdlID09PSB0aGlzJDEuY2xzUGFnZTsgfSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB0aGlzLmNsc1BhZ2UpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgIF0sCgogICAgICAgIG1ldGhvZHM6IHsKCiAgICAgICAgICAgIHRvZ2dsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZWQoKSA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy4kZWwucGFyZW50Tm9kZSAhPT0gdGhpcy5jb250YWluZXIpIHsKICAgICAgICAgICAgICAgICAgICBhcHBlbmQodGhpcy5jb250YWluZXIsIHRoaXMuJGVsKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuc2hvdygpLnRoZW4ocmVzb2x2ZSk7IH0KICAgICAgICAgICAgICAgICAgICAgICAgKTsgfQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlRWxlbWVudCh0aGlzLiRlbCwgdHJ1ZSwgYW5pbWF0ZSQxKHRoaXMpKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlRWxlbWVudCh0aGlzLiRlbCwgZmFsc2UsIGFuaW1hdGUkMSh0aGlzKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH07CgogICAgZnVuY3Rpb24gYW5pbWF0ZSQxKHJlZikgewogICAgICAgIHZhciB0cmFuc2l0aW9uRWxlbWVudCA9IHJlZi50cmFuc2l0aW9uRWxlbWVudDsKICAgICAgICB2YXIgX3RvZ2dsZSA9IHJlZi5fdG9nZ2xlOwoKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGVsLCBzaG93KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHJldHVybiBvbmNlKGVsLCAnc2hvdyBoaWRlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGVsLl9yZWplY3QgJiYgZWwuX3JlamVjdCgpOwogICAgICAgICAgICAgICAgICAgIGVsLl9yZWplY3QgPSByZWplY3Q7CgogICAgICAgICAgICAgICAgICAgIF90b2dnbGUoZWwsIHNob3cpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgb2ZmID0gb25jZSh0cmFuc2l0aW9uRWxlbWVudCwgJ3RyYW5zaXRpb25zdGFydCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgb25jZSh0cmFuc2l0aW9uRWxlbWVudCwgJ3RyYW5zaXRpb25lbmQgdHJhbnNpdGlvbmNhbmNlbCcsIHJlc29sdmUsIHtzZWxmOiB0cnVlfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7CiAgICAgICAgICAgICAgICAgICAgfSwge3NlbGY6IHRydWV9KTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZigpOwogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgfSwgdG9Ncyhjc3ModHJhbnNpdGlvbkVsZW1lbnQsICd0cmFuc2l0aW9uRHVyYXRpb24nKSkpOwoKICAgICAgICAgICAgICAgIH0pOyB9CiAgICAgICAgICAgICk7IH07CiAgICB9CgogICAgdmFyIE1vZGFsJDEgPSB7CgogICAgICAgIGluc3RhbGw6IGluc3RhbGwkMSwKCiAgICAgICAgbWl4aW5zOiBbTW9kYWxdLAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGNsc1BhZ2U6ICd1ay1tb2RhbC1wYWdlJywKICAgICAgICAgICAgc2VsUGFuZWw6ICcudWstbW9kYWwtZGlhbG9nJywKICAgICAgICAgICAgc2VsQ2xvc2U6ICcudWstbW9kYWwtY2xvc2UsIC51ay1tb2RhbC1jbG9zZS1kZWZhdWx0LCAudWstbW9kYWwtY2xvc2Utb3V0c2lkZSwgLnVrLW1vZGFsLWNsb3NlLWZ1bGwnCiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiBbCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsCgogICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsYXNzKHRoaXMucGFuZWwsICd1ay1tYXJnaW4tYXV0by12ZXJ0aWNhbCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstZmxleCcpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnYmxvY2snKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLiRlbCk7IC8vIGZvcmNlIHJlZmxvdwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmFtZTogJ2hpZGRlbicsCgogICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnZGlzcGxheScsICcnKTsKICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgJ3VrLWZsZXgnKTsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgXQoKICAgIH07CgogICAgZnVuY3Rpb24gaW5zdGFsbCQxKFVJa2l0KSB7CgogICAgICAgIFVJa2l0Lm1vZGFsLmRpYWxvZyA9IGZ1bmN0aW9uIChjb250ZW50LCBvcHRpb25zKSB7CgogICAgICAgICAgICB2YXIgZGlhbG9nID0gVUlraXQubW9kYWwoKCIgPGRpdiBjbGFzcz1cInVrLW1vZGFsXCI+IDxkaXYgY2xhc3M9XCJ1ay1tb2RhbC1kaWFsb2dcIj4iICsgY29udGVudCArICI8L2Rpdj4gPC9kaXY+ICIpLCBvcHRpb25zKTsKCiAgICAgICAgICAgIGRpYWxvZy5zaG93KCk7CgogICAgICAgICAgICBvbihkaWFsb2cuJGVsLCAnaGlkZGVuJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRpYWxvZy4kZGVzdHJveSh0cnVlKTsgfSk7IH0sIHtzZWxmOiB0cnVlfSk7CgogICAgICAgICAgICByZXR1cm4gZGlhbG9nOwogICAgICAgIH07CgogICAgICAgIFVJa2l0Lm1vZGFsLmFsZXJ0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG9wdGlvbnMpIHsKCiAgICAgICAgICAgIG9wdGlvbnMgPSBhc3NpZ24oe2JnQ2xvc2U6IGZhbHNlLCBlc2NDbG9zZTogZmFsc2UsIGxhYmVsczogVUlraXQubW9kYWwubGFiZWxzfSwgb3B0aW9ucyk7CgogICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoCiAgICAgICAgICAgICAgICBmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXR1cm4gb24oVUlraXQubW9kYWwuZGlhbG9nKCgiIDxkaXYgY2xhc3M9XCJ1ay1tb2RhbC1ib2R5XCI+IiArIChpc1N0cmluZyhtZXNzYWdlKSA/IG1lc3NhZ2UgOiBodG1sKG1lc3NhZ2UpKSArICI8L2Rpdj4gPGRpdiBjbGFzcz1cInVrLW1vZGFsLWZvb3RlciB1ay10ZXh0LXJpZ2h0XCI+IDxidXR0b24gY2xhc3M9XCJ1ay1idXR0b24gdWstYnV0dG9uLXByaW1hcnkgdWstbW9kYWwtY2xvc2VcIiBhdXRvZm9jdXM+IiArIChvcHRpb25zLmxhYmVscy5vaykgKyAiPC9idXR0b24+IDwvZGl2PiAiKSwgb3B0aW9ucykuJGVsLCAnaGlkZScsIHJlc29sdmUpOyB9CiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgVUlraXQubW9kYWwuY29uZmlybSA9IGZ1bmN0aW9uIChtZXNzYWdlLCBvcHRpb25zKSB7CgogICAgICAgICAgICBvcHRpb25zID0gYXNzaWduKHtiZ0Nsb3NlOiBmYWxzZSwgZXNjQ2xvc2U6IHRydWUsIGxhYmVsczogVUlraXQubW9kYWwubGFiZWxzfSwgb3B0aW9ucyk7CgogICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewoKICAgICAgICAgICAgICAgIHZhciBjb25maXJtID0gVUlraXQubW9kYWwuZGlhbG9nKCgiIDxmb3JtPiA8ZGl2IGNsYXNzPVwidWstbW9kYWwtYm9keVwiPiIgKyAoaXNTdHJpbmcobWVzc2FnZSkgPyBtZXNzYWdlIDogaHRtbChtZXNzYWdlKSkgKyAiPC9kaXY+IDxkaXYgY2xhc3M9XCJ1ay1tb2RhbC1mb290ZXIgdWstdGV4dC1yaWdodFwiPiA8YnV0dG9uIGNsYXNzPVwidWstYnV0dG9uIHVrLWJ1dHRvbi1kZWZhdWx0IHVrLW1vZGFsLWNsb3NlXCIgdHlwZT1cImJ1dHRvblwiPiIgKyAob3B0aW9ucy5sYWJlbHMuY2FuY2VsKSArICI8L2J1dHRvbj4gPGJ1dHRvbiBjbGFzcz1cInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeVwiIGF1dG9mb2N1cz4iICsgKG9wdGlvbnMubGFiZWxzLm9rKSArICI8L2J1dHRvbj4gPC9kaXY+IDwvZm9ybT4gIiksIG9wdGlvbnMpOwoKICAgICAgICAgICAgICAgIHZhciByZXNvbHZlZCA9IGZhbHNlOwoKICAgICAgICAgICAgICAgIG9uKGNvbmZpcm0uJGVsLCAnc3VibWl0JywgJ2Zvcm0nLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGNvbmZpcm0uaGlkZSgpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBvbihjb25maXJtLiRlbCwgJ2hpZGUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNvbHZlZCkgewogICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIH0pOwogICAgICAgIH07CgogICAgICAgIFVJa2l0Lm1vZGFsLnByb21wdCA9IGZ1bmN0aW9uIChtZXNzYWdlLCB2YWx1ZSwgb3B0aW9ucykgewoKICAgICAgICAgICAgb3B0aW9ucyA9IGFzc2lnbih7YmdDbG9zZTogZmFsc2UsIGVzY0Nsb3NlOiB0cnVlLCBsYWJlbHM6IFVJa2l0Lm1vZGFsLmxhYmVsc30sIG9wdGlvbnMpOwoKICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CgogICAgICAgICAgICAgICAgdmFyIHByb21wdCA9IFVJa2l0Lm1vZGFsLmRpYWxvZygoIiA8Zm9ybSBjbGFzcz1cInVrLWZvcm0tc3RhY2tlZFwiPiA8ZGl2IGNsYXNzPVwidWstbW9kYWwtYm9keVwiPiA8bGFiZWw+IiArIChpc1N0cmluZyhtZXNzYWdlKSA/IG1lc3NhZ2UgOiBodG1sKG1lc3NhZ2UpKSArICI8L2xhYmVsPiA8aW5wdXQgY2xhc3M9XCJ1ay1pbnB1dFwiIGF1dG9mb2N1cz4gPC9kaXY+IDxkaXYgY2xhc3M9XCJ1ay1tb2RhbC1mb290ZXIgdWstdGV4dC1yaWdodFwiPiA8YnV0dG9uIGNsYXNzPVwidWstYnV0dG9uIHVrLWJ1dHRvbi1kZWZhdWx0IHVrLW1vZGFsLWNsb3NlXCIgdHlwZT1cImJ1dHRvblwiPiIgKyAob3B0aW9ucy5sYWJlbHMuY2FuY2VsKSArICI8L2J1dHRvbj4gPGJ1dHRvbiBjbGFzcz1cInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeVwiPiIgKyAob3B0aW9ucy5sYWJlbHMub2spICsgIjwvYnV0dG9uPiA8L2Rpdj4gPC9mb3JtPiAiKSwgb3B0aW9ucyksCiAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSAkKCdpbnB1dCcsIHByb21wdC4kZWwpOwoKICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWU7CgogICAgICAgICAgICAgICAgdmFyIHJlc29sdmVkID0gZmFsc2U7CgogICAgICAgICAgICAgICAgb24ocHJvbXB0LiRlbCwgJ3N1Ym1pdCcsICdmb3JtJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShpbnB1dC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHByb21wdC5oaWRlKCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG9uKHByb21wdC4kZWwsICdoaWRlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIH0pOwogICAgICAgIH07CgogICAgICAgIFVJa2l0Lm1vZGFsLmxhYmVscyA9IHsKICAgICAgICAgICAgb2s6ICdPaycsCiAgICAgICAgICAgIGNhbmNlbDogJ0NhbmNlbCcKICAgICAgICB9OwoKICAgIH0KCiAgICB2YXIgTmF2ID0gewoKICAgICAgICBleHRlbmRzOiBBY2NvcmRpb24sCgogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgdGFyZ2V0czogJz4gLnVrLXBhcmVudCcsCiAgICAgICAgICAgIHRvZ2dsZTogJz4gYScsCiAgICAgICAgICAgIGNvbnRlbnQ6ICc+IHVsJwogICAgICAgIH0KCiAgICB9OwoKICAgIHZhciBOYXZiYXIgPSB7CgogICAgICAgIG1peGluczogW0NsYXNzLCBGbGV4QnVnXSwKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgZHJvcGRvd246IFN0cmluZywKICAgICAgICAgICAgbW9kZTogJ2xpc3QnLAogICAgICAgICAgICBhbGlnbjogU3RyaW5nLAogICAgICAgICAgICBvZmZzZXQ6IE51bWJlciwKICAgICAgICAgICAgYm91bmRhcnk6IEJvb2xlYW4sCiAgICAgICAgICAgIGJvdW5kYXJ5QWxpZ246IEJvb2xlYW4sCiAgICAgICAgICAgIGNsc0Ryb3A6IFN0cmluZywKICAgICAgICAgICAgZGVsYXlTaG93OiBOdW1iZXIsCiAgICAgICAgICAgIGRlbGF5SGlkZTogTnVtYmVyLAogICAgICAgICAgICBkcm9wYmFyOiBCb29sZWFuLAogICAgICAgICAgICBkcm9wYmFyTW9kZTogU3RyaW5nLAogICAgICAgICAgICBkcm9wYmFyQW5jaG9yOiBCb29sZWFuLAogICAgICAgICAgICBkdXJhdGlvbjogTnVtYmVyCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBkcm9wZG93bjogJy51ay1uYXZiYXItbmF2ID4gbGknLAogICAgICAgICAgICBhbGlnbjogIWlzUnRsID8gJ2xlZnQnIDogJ3JpZ2h0JywKICAgICAgICAgICAgY2xzRHJvcDogJ3VrLW5hdmJhci1kcm9wZG93bicsCiAgICAgICAgICAgIG1vZGU6IHVuZGVmaW5lZCwKICAgICAgICAgICAgb2Zmc2V0OiB1bmRlZmluZWQsCiAgICAgICAgICAgIGRlbGF5U2hvdzogdW5kZWZpbmVkLAogICAgICAgICAgICBkZWxheUhpZGU6IHVuZGVmaW5lZCwKICAgICAgICAgICAgYm91bmRhcnlBbGlnbjogdW5kZWZpbmVkLAogICAgICAgICAgICBmbGlwOiAneCcsCiAgICAgICAgICAgIGJvdW5kYXJ5OiB0cnVlLAogICAgICAgICAgICBkcm9wYmFyOiBmYWxzZSwKICAgICAgICAgICAgZHJvcGJhck1vZGU6ICdzbGlkZScsCiAgICAgICAgICAgIGRyb3BiYXJBbmNob3I6IGZhbHNlLAogICAgICAgICAgICBkdXJhdGlvbjogMjAwLAogICAgICAgICAgICBmb3JjZUhlaWdodDogdHJ1ZSwKICAgICAgICAgICAgc2VsTWluSGVpZ2h0OiAnLnVrLW5hdmJhci1uYXYgPiBsaSA+IGEsIC51ay1uYXZiYXItaXRlbSwgLnVrLW5hdmJhci10b2dnbGUnCiAgICAgICAgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIGJvdW5kYXJ5OiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gcmVmLmJvdW5kYXJ5OwogICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5QWxpZ24gPSByZWYuYm91bmRhcnlBbGlnbjsKCiAgICAgICAgICAgICAgICByZXR1cm4gKGJvdW5kYXJ5ID09PSB0cnVlIHx8IGJvdW5kYXJ5QWxpZ24pID8gJGVsIDogYm91bmRhcnk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBkcm9wYmFyQW5jaG9yOiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIGRyb3BiYXJBbmNob3IgPSByZWYuZHJvcGJhckFuY2hvcjsKCiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnkoZHJvcGJhckFuY2hvciwgJGVsKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHBvczogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgYWxpZ24gPSByZWYuYWxpZ247CgogICAgICAgICAgICAgICAgcmV0dXJuICgiYm90dG9tLSIgKyBhbGlnbik7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBkcm9wZG93bnM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7CiAgICAgICAgICAgICAgICB2YXIgZHJvcGRvd24gPSByZWYuZHJvcGRvd247CiAgICAgICAgICAgICAgICB2YXIgY2xzRHJvcCA9IHJlZi5jbHNEcm9wOwoKICAgICAgICAgICAgICAgIHJldHVybiAkJCgoZHJvcGRvd24gKyAiIC4iICsgY2xzRHJvcCksICRlbCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgYmVmb3JlQ29ubmVjdDogZnVuY3Rpb24oKSB7CgogICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kcHJvcHM7CiAgICAgICAgICAgIHZhciBkcm9wYmFyID0gcmVmLmRyb3BiYXI7CgogICAgICAgICAgICB0aGlzLmRyb3BiYXIgPSBkcm9wYmFyICYmIChxdWVyeShkcm9wYmFyLCB0aGlzLiRlbCkgfHwgJCgnKyAudWstbmF2YmFyLWRyb3BiYXInLCB0aGlzLiRlbCkgfHwgJCgnPGRpdj48L2Rpdj4nKSk7CgogICAgICAgICAgICBpZiAodGhpcy5kcm9wYmFyKSB7CgogICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5kcm9wYmFyLCAndWstbmF2YmFyLWRyb3BiYXInKTsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcm9wYmFyTW9kZSA9PT0gJ3NsaWRlJykgewogICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuZHJvcGJhciwgJ3VrLW5hdmJhci1kcm9wYmFyLXNsaWRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5kcm9wYmFyICYmIHJlbW92ZSh0aGlzLmRyb3BiYXIpOwogICAgICAgIH0sCgogICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgIHRoaXMuJGNyZWF0ZSgKICAgICAgICAgICAgICAgICdkcm9wJywKICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25zLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuICF0aGlzJDEuZ2V0RHJvcGRvd24oZWwpOyB9KSwKICAgICAgICAgICAgICAgIGFzc2lnbih7fSwgdGhpcy4kcHJvcHMsIHtib3VuZGFyeTogdGhpcy5ib3VuZGFyeSwgcG9zOiB0aGlzLnBvcywgb2Zmc2V0OiB0aGlzLmRyb3BiYXIgfHwgdGhpcy5vZmZzZXR9KQogICAgICAgICAgICApOwoKICAgICAgICB9LAoKICAgICAgICBldmVudHM6IFsKCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5hbWU6ICdtb3VzZW92ZXInLAoKICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wZG93bjsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiBhY3RpdmUudG9nZ2xlICYmICF3aXRoaW4oYWN0aXZlLnRvZ2dsZS4kZWwsIGN1cnJlbnQpICYmICFhY3RpdmUudHJhY2tlci5tb3Zlc1RvKGFjdGl2ZS4kZWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlbGVhdmUnLAoKICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiAhdGhpcy5kcm9wZG93bnMuc29tZShmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIG1hdGNoZXMoZWwsICc6aG92ZXInKTsgfSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3Jlc2hvdycsCgogICAgICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZSwKCiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJvcGJhci5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyKHRoaXMuZHJvcGJhckFuY2hvciB8fCB0aGlzLiRlbCwgdGhpcy5kcm9wYmFyKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmFtZTogJ3Nob3cnLAoKICAgICAgICAgICAgICAgIGNhcHR1cmU6IHRydWUsCgogICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihfLCBkcm9wKSB7CgogICAgICAgICAgICAgICAgICAgIHZhciAkZWwgPSBkcm9wLiRlbDsKICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gZHJvcC5kaXI7CgogICAgICAgICAgICAgICAgICAgIHRoaXMuY2xzRHJvcCAmJiBhZGRDbGFzcygkZWwsICgodGhpcy5jbHNEcm9wKSArICItZHJvcGJhciIpKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGRpciA9PT0gJ2JvdHRvbScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8oJGVsLm9mZnNldEhlaWdodCArIHRvRmxvYXQoY3NzKCRlbCwgJ21hcmdpblRvcCcpKSArIHRvRmxvYXQoY3NzKCRlbCwgJ21hcmdpbkJvdHRvbScpKSwgJGVsKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3JlaGlkZScsCgogICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCByZWYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gcmVmLiRlbDsKCgogICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpOwoKICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlcyh0aGlzLmRyb3BiYXIsICc6aG92ZXInKSAmJiBhY3RpdmUgJiYgYWN0aXZlLiRlbCA9PT0gJGVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsCgogICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihfLCByZWYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gcmVmLiRlbDsKCgogICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSB8fCBhY3RpdmUgJiYgYWN0aXZlLiRlbCA9PT0gJGVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKDApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICBdLAoKICAgICAgICBtZXRob2RzOiB7CgogICAgICAgICAgICBnZXRBY3RpdmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuZHJvcGRvd25zLm1hcCh0aGlzLmdldERyb3Bkb3duKS5maWx0ZXIoZnVuY3Rpb24gKGRyb3ApIHsgcmV0dXJuIGRyb3AgJiYgZHJvcC5pc0FjdGl2ZSgpOyB9KTsKICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSByZWZbMF07CiAgICAgICAgICAgICAgICByZXR1cm4gYWN0aXZlICYmIGluY2x1ZGVzKGFjdGl2ZS5tb2RlLCAnaG92ZXInKSAmJiB3aXRoaW4oYWN0aXZlLnRvZ2dsZS4kZWwsIHRoaXMuJGVsKSAmJiBhY3RpdmU7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB0cmFuc2l0aW9uVG86IGZ1bmN0aW9uKG5ld0hlaWdodCwgZWwpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpczsKICAgICAgICAgICAgICAgIHZhciBkcm9wYmFyID0gcmVmLmRyb3BiYXI7CiAgICAgICAgICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gaXNWaXNpYmxlKGRyb3BiYXIpID8gaGVpZ2h0KGRyb3BiYXIpIDogMDsKCiAgICAgICAgICAgICAgICBlbCA9IG9sZEhlaWdodCA8IG5ld0hlaWdodCAmJiBlbDsKCiAgICAgICAgICAgICAgICBjc3MoZWwsICdjbGlwJywgKCJyZWN0KDAsIiArIChlbC5vZmZzZXRXaWR0aCkgKyAicHgsIiArIG9sZEhlaWdodCArICJweCwwKSIpKTsKCiAgICAgICAgICAgICAgICBoZWlnaHQoZHJvcGJhciwgb2xkSGVpZ2h0KTsKCiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbChbZWwsIGRyb3BiYXJdKTsKICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydChkcm9wYmFyLCB7aGVpZ2h0OiBuZXdIZWlnaHR9LCB0aGlzLmR1cmF0aW9uKSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KGVsLCB7Y2xpcDogKCJyZWN0KDAsIiArIChlbC5vZmZzZXRXaWR0aCkgKyAicHgsIiArIG5ld0hlaWdodCArICJweCwwKSIpfSwgdGhpcy5kdXJhdGlvbikKICAgICAgICAgICAgICAgIF0pCiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKG5vb3ApCiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjc3MoZWwsIHtjbGlwOiAnJ30pOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHVwZGF0ZShkcm9wYmFyKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGdldERyb3Bkb3duOiBmdW5jdGlvbihlbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGdldENvbXBvbmVudChlbCwgJ2Ryb3AnKSB8fCB0aGlzLiRnZXRDb21wb25lbnQoZWwsICdkcm9wZG93bicpOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9OwoKICAgIHZhciBPZmZjYW52YXMgPSB7CgogICAgICAgIG1peGluczogW01vZGFsXSwKCiAgICAgICAgYXJnczogJ21vZGUnLAoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBtb2RlOiBTdHJpbmcsCiAgICAgICAgICAgIGZsaXA6IEJvb2xlYW4sCiAgICAgICAgICAgIG92ZXJsYXk6IEJvb2xlYW4KICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIG1vZGU6ICdzbGlkZScsCiAgICAgICAgICAgIGZsaXA6IGZhbHNlLAogICAgICAgICAgICBvdmVybGF5OiBmYWxzZSwKICAgICAgICAgICAgY2xzUGFnZTogJ3VrLW9mZmNhbnZhcy1wYWdlJywKICAgICAgICAgICAgY2xzQ29udGFpbmVyOiAndWstb2ZmY2FudmFzLWNvbnRhaW5lcicsCiAgICAgICAgICAgIHNlbFBhbmVsOiAnLnVrLW9mZmNhbnZhcy1iYXInLAogICAgICAgICAgICBjbHNGbGlwOiAndWstb2ZmY2FudmFzLWZsaXAnLAogICAgICAgICAgICBjbHNDb250YWluZXJBbmltYXRpb246ICd1ay1vZmZjYW52YXMtY29udGFpbmVyLWFuaW1hdGlvbicsCiAgICAgICAgICAgIGNsc1NpZGViYXJBbmltYXRpb246ICd1ay1vZmZjYW52YXMtYmFyLWFuaW1hdGlvbicsCiAgICAgICAgICAgIGNsc01vZGU6ICd1ay1vZmZjYW52YXMnLAogICAgICAgICAgICBjbHNPdmVybGF5OiAndWstb2ZmY2FudmFzLW92ZXJsYXknLAogICAgICAgICAgICBzZWxDbG9zZTogJy51ay1vZmZjYW52YXMtY2xvc2UnLAogICAgICAgICAgICBjb250YWluZXI6IGZhbHNlCiAgICAgICAgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIGNsc0ZsaXA6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIGZsaXAgPSByZWYuZmxpcDsKICAgICAgICAgICAgICAgIHZhciBjbHNGbGlwID0gcmVmLmNsc0ZsaXA7CgogICAgICAgICAgICAgICAgcmV0dXJuIGZsaXAgPyBjbHNGbGlwIDogJyc7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBjbHNPdmVybGF5OiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBvdmVybGF5ID0gcmVmLm92ZXJsYXk7CiAgICAgICAgICAgICAgICB2YXIgY2xzT3ZlcmxheSA9IHJlZi5jbHNPdmVybGF5OwoKICAgICAgICAgICAgICAgIHJldHVybiBvdmVybGF5ID8gY2xzT3ZlcmxheSA6ICcnOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgY2xzTW9kZTogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgbW9kZSA9IHJlZi5tb2RlOwogICAgICAgICAgICAgICAgdmFyIGNsc01vZGUgPSByZWYuY2xzTW9kZTsKCiAgICAgICAgICAgICAgICByZXR1cm4gKGNsc01vZGUgKyAiLSIgKyBtb2RlKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGNsc1NpZGViYXJBbmltYXRpb246IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIG1vZGUgPSByZWYubW9kZTsKICAgICAgICAgICAgICAgIHZhciBjbHNTaWRlYmFyQW5pbWF0aW9uID0gcmVmLmNsc1NpZGViYXJBbmltYXRpb247CgogICAgICAgICAgICAgICAgcmV0dXJuIG1vZGUgPT09ICdub25lJyB8fCBtb2RlID09PSAncmV2ZWFsJyA/ICcnIDogY2xzU2lkZWJhckFuaW1hdGlvbjsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGNsc0NvbnRhaW5lckFuaW1hdGlvbjogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgbW9kZSA9IHJlZi5tb2RlOwogICAgICAgICAgICAgICAgdmFyIGNsc0NvbnRhaW5lckFuaW1hdGlvbiA9IHJlZi5jbHNDb250YWluZXJBbmltYXRpb247CgogICAgICAgICAgICAgICAgcmV0dXJuIG1vZGUgIT09ICdwdXNoJyAmJiBtb2RlICE9PSAncmV2ZWFsJyA/ICcnIDogY2xzQ29udGFpbmVyQW5pbWF0aW9uOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgdHJhbnNpdGlvbkVsZW1lbnQ6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIG1vZGUgPSByZWYubW9kZTsKCiAgICAgICAgICAgICAgICByZXR1cm4gbW9kZSA9PT0gJ3JldmVhbCcgPyB0aGlzLnBhbmVsLnBhcmVudE5vZGUgOiB0aGlzLnBhbmVsOwogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIGV2ZW50czogWwoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsCgogICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAnYVtocmVmXj0iIyJdJzsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGhhc2ggPSByZWYuY3VycmVudC5oYXNoOwogICAgICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0UHJldmVudGVkID0gcmVmLmRlZmF1bHRQcmV2ZW50ZWQ7CgogICAgICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdFByZXZlbnRlZCAmJiBoYXNoICYmICQoaGFzaCwgZG9jdW1lbnQuYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5hbWU6ICd0b3VjaHN0YXJ0JywKCiAgICAgICAgICAgICAgICBwYXNzaXZlOiB0cnVlLAoKICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbDsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldFRvdWNoZXMgPSByZWYudGFyZ2V0VG91Y2hlczsKCgogICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRUb3VjaGVzLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsaWVudFkgPSB0YXJnZXRUb3VjaGVzWzBdLmNsaWVudFk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAndG91Y2htb3ZlJywKCiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLAogICAgICAgICAgICAgICAgcGFzc2l2ZTogZmFsc2UsCgogICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5OwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5jYW5jZWxhYmxlICYmIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAndG91Y2htb3ZlJywKCiAgICAgICAgICAgICAgICBwYXNzaXZlOiBmYWxzZSwKCiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWw7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0VG91Y2hlcy5sZW5ndGggIT09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgdmFyIGNsaWVudFkgPSBldmVudC50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFkgLSB0aGlzLmNsaWVudFk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMucGFuZWw7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbFRvcCA9IHJlZi5zY3JvbGxUb3A7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbEhlaWdodCA9IHJlZi5zY3JvbGxIZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNsaWVudEhlaWdodCA9IHJlZi5jbGllbnRIZWlnaHQ7CgogICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHNjcm9sbFRvcCA9PT0gMCAmJiBjbGllbnRZID4gMAogICAgICAgICAgICAgICAgICAgICAgICB8fCBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgPD0gY2xpZW50SGVpZ2h0ICYmIGNsaWVudFkgPCAwCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuY2FuY2VsYWJsZSAmJiBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsCgogICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3JldmVhbCcgJiYgIWhhc0NsYXNzKHRoaXMucGFuZWwucGFyZW50Tm9kZSwgdGhpcy5jbHNNb2RlKSkgewogICAgICAgICAgICAgICAgICAgICAgICB3cmFwQWxsKHRoaXMucGFuZWwsICc8ZGl2PicpOwogICAgICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLnBhbmVsLnBhcmVudE5vZGUsIHRoaXMuY2xzTW9kZSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBjc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnb3ZlcmZsb3dZJywgdGhpcy5vdmVybGF5ID8gJ2hpZGRlbicgOiAnJyk7CiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgdGhpcy5jbHNDb250YWluZXIsIHRoaXMuY2xzRmxpcCk7CiAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmJvZHksICd0b3VjaC1hY3Rpb24nLCAncGFuLXkgcGluY2gtem9vbScpOwogICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnYmxvY2snKTsKICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNPdmVybGF5KTsKICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLnBhbmVsLCB0aGlzLmNsc1NpZGViYXJBbmltYXRpb24sIHRoaXMubW9kZSAhPT0gJ3JldmVhbCcgPyB0aGlzLmNsc01vZGUgOiAnJyk7CgogICAgICAgICAgICAgICAgICAgIGhlaWdodChkb2N1bWVudC5ib2R5KTsgLy8gZm9yY2UgcmVmbG93CiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgdGhpcy5jbHNDb250YWluZXJBbmltYXRpb24pOwoKICAgICAgICAgICAgICAgICAgICB0aGlzLmNsc0NvbnRhaW5lckFuaW1hdGlvbiAmJiBzdXBwcmVzc1VzZXJTY2FsZSgpOwoKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsCgogICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCB0aGlzLmNsc0NvbnRhaW5lckFuaW1hdGlvbik7CiAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmJvZHksICd0b3VjaC1hY3Rpb24nLCAnJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZGVuJywKCiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLAoKICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgICAgICB0aGlzLmNsc0NvbnRhaW5lckFuaW1hdGlvbiAmJiByZXN1bWVVc2VyU2NhbGUoKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3JldmVhbCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwKHRoaXMucGFuZWwpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5wYW5lbCwgdGhpcy5jbHNTaWRlYmFyQW5pbWF0aW9uLCB0aGlzLmNsc01vZGUpOwogICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc092ZXJsYXkpOwogICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgdGhpcy5jbHNDb250YWluZXIsIHRoaXMuY2xzRmxpcCk7CgogICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCAnJyk7CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmFtZTogJ3N3aXBlTGVmdCBzd2lwZVJpZ2h0JywKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpICYmIGVuZHNXaXRoKGUudHlwZSwgJ0xlZnQnKSBeIHRoaXMuZmxpcCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIF0KCiAgICB9OwoKICAgIC8vIENocm9tZSBpbiByZXNwb25zaXZlIG1vZGUgem9vbXMgcGFnZSB1cG9uIG9wZW5pbmcgb2ZmY2FudmFzCiAgICBmdW5jdGlvbiBzdXBwcmVzc1VzZXJTY2FsZSgpIHsKICAgICAgICBnZXRWaWV3cG9ydCgpLmNvbnRlbnQgKz0gJyx1c2VyLXNjYWxhYmxlPTAnOwogICAgfQoKICAgIGZ1bmN0aW9uIHJlc3VtZVVzZXJTY2FsZSgpIHsKICAgICAgICB2YXIgdmlld3BvcnQgPSBnZXRWaWV3cG9ydCgpOwogICAgICAgIHZpZXdwb3J0LmNvbnRlbnQgPSB2aWV3cG9ydC5jb250ZW50LnJlcGxhY2UoLyx1c2VyLXNjYWxhYmxlPTAkLywgJycpOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldFZpZXdwb3J0KCkgewogICAgICAgIHJldHVybiAkKCdtZXRhW25hbWU9InZpZXdwb3J0Il0nLCBkb2N1bWVudC5oZWFkKSB8fCBhcHBlbmQoZG9jdW1lbnQuaGVhZCwgJzxtZXRhIG5hbWU9InZpZXdwb3J0Ij4nKTsKICAgIH0KCiAgICB2YXIgT3ZlcmZsb3dBdXRvID0gewoKICAgICAgICBtaXhpbnM6IFtDbGFzc10sCgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIHNlbENvbnRhaW5lcjogU3RyaW5nLAogICAgICAgICAgICBzZWxDb250ZW50OiBTdHJpbmcKICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIHNlbENvbnRhaW5lcjogJy51ay1tb2RhbCcsCiAgICAgICAgICAgIHNlbENvbnRlbnQ6ICcudWstbW9kYWwtZGlhbG9nJwogICAgICAgIH0sCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICBjb250YWluZXI6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7CiAgICAgICAgICAgICAgICB2YXIgc2VsQ29udGFpbmVyID0gcmVmLnNlbENvbnRhaW5lcjsKCiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdCgkZWwsIHNlbENvbnRhaW5lcik7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBjb250ZW50OiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIHNlbENvbnRlbnQgPSByZWYuc2VsQ29udGVudDsKCiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdCgkZWwsIHNlbENvbnRlbnQpOwogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ21pbkhlaWdodCcsIDE1MCk7CiAgICAgICAgfSwKCiAgICAgICAgdXBkYXRlOiB7CgogICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29udGVudCB8fCAhdGhpcy5jb250YWluZXIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiB0b0Zsb2F0KGNzcyh0aGlzLiRlbCwgJ21heEhlaWdodCcpKSwKICAgICAgICAgICAgICAgICAgICBtYXg6IE1hdGgubWF4KDE1MCwgaGVpZ2h0KHRoaXMuY29udGFpbmVyKSAtIChvZmZzZXQodGhpcy5jb250ZW50KS5oZWlnaHQgLSBoZWlnaHQodGhpcy4kZWwpKSkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgY3VycmVudCA9IHJlZi5jdXJyZW50OwogICAgICAgICAgICAgICAgdmFyIG1heCA9IHJlZi5tYXg7CgogICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnbWF4SGVpZ2h0JywgbWF4KTsKICAgICAgICAgICAgICAgIGlmIChNYXRoLnJvdW5kKGN1cnJlbnQpICE9PSBNYXRoLnJvdW5kKG1heCkpIHsKICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAncmVzaXplJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ10KCiAgICAgICAgfQoKICAgIH07CgogICAgdmFyIFJlc3BvbnNpdmUgPSB7CgogICAgICAgIHByb3BzOiBbJ3dpZHRoJywgJ2hlaWdodCddLAoKICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLXJlc3BvbnNpdmUtd2lkdGgnKTsKICAgICAgICB9LAoKICAgICAgICB1cGRhdGU6IHsKCiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGlzVmlzaWJsZSh0aGlzLiRlbCkgJiYgdGhpcy53aWR0aCAmJiB0aGlzLmhlaWdodAogICAgICAgICAgICAgICAgICAgID8ge3dpZHRoOiB3aWR0aCh0aGlzLiRlbC5wYXJlbnROb2RlKSwgaGVpZ2h0OiB0aGlzLmhlaWdodH0KICAgICAgICAgICAgICAgICAgICA6IGZhbHNlOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRpbSkgewogICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMuJGVsLCBEaW1lbnNpb25zLmNvbnRhaW4oewogICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMud2lkdGgKICAgICAgICAgICAgICAgIH0sIGRpbSkuaGVpZ2h0KTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXQoKICAgICAgICB9CgogICAgfTsKCiAgICB2YXIgU2Nyb2xsID0gewoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBkdXJhdGlvbjogTnVtYmVyLAogICAgICAgICAgICBvZmZzZXQ6IE51bWJlcgogICAgICAgIH0sCgogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgZHVyYXRpb246IDEwMDAsCiAgICAgICAgICAgIG9mZnNldDogMAogICAgICAgIH0sCgogICAgICAgIG1ldGhvZHM6IHsKCiAgICAgICAgICAgIHNjcm9sbFRvOiBmdW5jdGlvbihlbCkgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgICAgIGVsID0gZWwgJiYgJChlbCkgfHwgZG9jdW1lbnQuYm9keTsKCiAgICAgICAgICAgICAgICB2YXIgZG9jSGVpZ2h0ID0gaGVpZ2h0KGRvY3VtZW50KTsKICAgICAgICAgICAgICAgIHZhciB3aW5IZWlnaHQgPSBoZWlnaHQod2luZG93KTsKCiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gb2Zmc2V0KGVsKS50b3AgLSB0aGlzLm9mZnNldDsKICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgKyB3aW5IZWlnaHQgPiBkb2NIZWlnaHQpIHsKICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBkb2NIZWlnaHQgLSB3aW5IZWlnaHQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCF0cmlnZ2VyKHRoaXMuJGVsLCAnYmVmb3Jlc2Nyb2xsJywgW3RoaXMsIGVsXSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTsKICAgICAgICAgICAgICAgIHZhciBzdGFydFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgc3RlcCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRZID0gc3RhcnRZICsgKHRhcmdldCAtIHN0YXJ0WSkgKiBlYXNlKGNsYW1wKChEYXRlLm5vdygpIC0gc3RhcnQpIC8gdGhpcyQxLmR1cmF0aW9uKSk7CgogICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcCh3aW5kb3csIGN1cnJlbnRZKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gc2Nyb2xsIG1vcmUgaWYgd2UgaGF2ZSBub3QgcmVhY2hlZCBvdXIgZGVzdGluYXRpb24KICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFkgIT09IHRhcmdldCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzJDEuJGVsLCAnc2Nyb2xsZWQnLCBbdGhpcyQxLCBlbF0pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIHN0ZXAoKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiB7CgogICAgICAgICAgICBjbGljazogZnVuY3Rpb24oZSkgewoKICAgICAgICAgICAgICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUbyhlc2NhcGUoZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMuJGVsLmhhc2gpKS5zdWJzdHIoMSkpOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9OwoKICAgIGZ1bmN0aW9uIGVhc2UoaykgewogICAgICAgIHJldHVybiAwLjUgKiAoMSAtIE1hdGguY29zKE1hdGguUEkgKiBrKSk7CiAgICB9CgogICAgdmFyIFNjcm9sbHNweSA9IHsKCiAgICAgICAgYXJnczogJ2NscycsCgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIGNsczogU3RyaW5nLAogICAgICAgICAgICB0YXJnZXQ6IFN0cmluZywKICAgICAgICAgICAgaGlkZGVuOiBCb29sZWFuLAogICAgICAgICAgICBvZmZzZXRUb3A6IE51bWJlciwKICAgICAgICAgICAgb2Zmc2V0TGVmdDogTnVtYmVyLAogICAgICAgICAgICByZXBlYXQ6IEJvb2xlYW4sCiAgICAgICAgICAgIGRlbGF5OiBOdW1iZXIKICAgICAgICB9LAoKICAgICAgICBkYXRhOiBmdW5jdGlvbiAoKSB7IHJldHVybiAoewogICAgICAgICAgICBjbHM6IGZhbHNlLAogICAgICAgICAgICB0YXJnZXQ6IGZhbHNlLAogICAgICAgICAgICBoaWRkZW46IHRydWUsCiAgICAgICAgICAgIG9mZnNldFRvcDogMCwKICAgICAgICAgICAgb2Zmc2V0TGVmdDogMCwKICAgICAgICAgICAgcmVwZWF0OiBmYWxzZSwKICAgICAgICAgICAgZGVsYXk6IDAsCiAgICAgICAgICAgIGluVmlld0NsYXNzOiAndWstc2Nyb2xsc3B5LWludmlldycKICAgICAgICB9KTsgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIGVsZW1lbnRzOiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCA/ICQkKHRhcmdldCwgJGVsKSA6IFskZWxdOwogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIHVwZGF0ZTogWwoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oaWRkZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGZpbHRlcih0aGlzLmVsZW1lbnRzLCAoIjpub3QoLiIgKyAodGhpcy5pblZpZXdDbGFzcykgKyAiKSIpKSwgJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKICAgICAgICAgICAgICAgICAgICB2YXIgdXBkYXRlID0gcmVmLnVwZGF0ZTsKCgogICAgICAgICAgICAgICAgICAgIGlmICghdXBkYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9IGVsLl91a1Njcm9sbHNweVN0YXRlOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSB7Y2xzOiBkYXRhKGVsLCAndWstc2Nyb2xsc3B5LWNsYXNzJykgfHwgdGhpcyQxLmNsc307CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnNob3cgPSBpc0luVmlldyhlbCwgdGhpcyQxLm9mZnNldFRvcCwgdGhpcyQxLm9mZnNldExlZnQpOwogICAgICAgICAgICAgICAgICAgICAgICBlbC5fdWtTY3JvbGxzcHlTdGF0ZSA9IHN0YXRlOwoKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgICAgICAgICAvLyBMZXQgY2hpbGQgY29tcG9uZW50cyBiZSBhcHBsaWVkIGF0IGxlYXN0IG9uY2UgZmlyc3QKICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEudXBkYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEudXBkYXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9IGVsLl91a1Njcm9sbHNweVN0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xzID0gc3RhdGUuY2xzOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnNob3cgJiYgIXN0YXRlLmludmlldyAmJiAhc3RhdGUucXVldWVkKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNob3cgPSBmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhlbCwgJ3Zpc2liaWxpdHknLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWwsIHRoaXMkMS5pblZpZXdDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIGNscyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsICdpbnZpZXcnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiR1cGRhdGUoZWwpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pbnZpZXcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmFib3J0ICYmIHN0YXRlLmFib3J0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuZGVsYXkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUucXVldWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnByb21pc2UgPSAoZGF0YS5wcm9taXNlIHx8IFByb21pc2UucmVzb2x2ZSgpKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFzdGF0ZS5pbnZpZXcgJiYgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBkYXRhLnByb21pc2UgfHwgdGhpcyQxLmVsZW1lbnRzLmxlbmd0aCA9PT0gMSA/IHRoaXMkMS5kZWxheSA6IDApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmFib3J0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnF1ZXVlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlLnNob3cgJiYgKHN0YXRlLmludmlldyB8fCBzdGF0ZS5xdWV1ZWQpICYmIHRoaXMkMS5yZXBlYXQpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hYm9ydCAmJiBzdGF0ZS5hYm9ydCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGUuaW52aWV3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhlbCwgJ3Zpc2liaWxpdHknLCB0aGlzJDEuaGlkZGVuID8gJ2hpZGRlbicgOiAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhlbCwgdGhpcyQxLmluVmlld0NsYXNzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCBjbHMpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsICdvdXR2aWV3Jyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiR1cGRhdGUoZWwpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmludmlldyA9IGZhbHNlOwoKICAgICAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ3Jlc2l6ZSddCgogICAgICAgICAgICB9CgogICAgICAgIF0KCiAgICB9OwoKICAgIHZhciBTY3JvbGxzcHlOYXYgPSB7CgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIGNsczogU3RyaW5nLAogICAgICAgICAgICBjbG9zZXN0OiBTdHJpbmcsCiAgICAgICAgICAgIHNjcm9sbDogQm9vbGVhbiwKICAgICAgICAgICAgb3ZlcmZsb3c6IEJvb2xlYW4sCiAgICAgICAgICAgIG9mZnNldDogTnVtYmVyCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBjbHM6ICd1ay1hY3RpdmUnLAogICAgICAgICAgICBjbG9zZXN0OiBmYWxzZSwKICAgICAgICAgICAgc2Nyb2xsOiBmYWxzZSwKICAgICAgICAgICAgb3ZlcmZsb3c6IHRydWUsCiAgICAgICAgICAgIG9mZnNldDogMAogICAgICAgIH0sCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICBsaW5rczogZnVuY3Rpb24oXywgJGVsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJCQoJ2FbaHJlZl49IiMiXScsICRlbCkuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuaGFzaDsgfSk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBlbGVtZW50czogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3IgPSByZWYuY2xvc2VzdDsKCiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdCh0aGlzLmxpbmtzLCBzZWxlY3RvciB8fCAnKicpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgdGFyZ2V0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGhpcy5saW5rcy5tYXAoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlc2NhcGUoZWwuaGFzaCkuc3Vic3RyKDEpOyB9KS5qb2luKCcsJykpOwogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIHVwZGF0ZTogWwoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRjcmVhdGUoJ3Njcm9sbCcsIHRoaXMubGlua3MsIHtvZmZzZXQ6IHRoaXMub2Zmc2V0IHx8IDB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSB3aW5kb3cucGFnZVlPZmZzZXQgKyB0aGlzLm9mZnNldCArIDE7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1heCA9IGhlaWdodChkb2N1bWVudCkgLSBoZWlnaHQod2luZG93KSArIHRoaXMub2Zmc2V0OwoKICAgICAgICAgICAgICAgICAgICBkYXRhLmFjdGl2ZSA9IGZhbHNlOwoKICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldHMuZXZlcnkoZnVuY3Rpb24gKGVsLCBpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0KGVsKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYXN0ID0gaSArIDEgPT09IHRoaXMkMS50YXJnZXRzLmxlbmd0aDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcyQxLm92ZXJmbG93ICYmIChpID09PSAwICYmIHRvcCA+IHNjcm9sbCB8fCBsYXN0ICYmIHRvcCArIGVsLm9mZnNldFRvcCA8IHNjcm9sbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0ICYmIG9mZnNldCh0aGlzJDEudGFyZ2V0c1tpICsgMV0pLnRvcCA8PSBzY3JvbGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsID49IG1heCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IHRoaXMkMS50YXJnZXRzLmxlbmd0aCAtIDE7IGogPiBpOyBqLS0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJblZpZXcodGhpcyQxLnRhcmdldHNbal0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsID0gdGhpcyQxLnRhcmdldHNbal07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoZGF0YS5hY3RpdmUgPSAkKGZpbHRlcih0aGlzJDEubGlua3MsICgiW2hyZWY9XCIjIiArIChlbC5pZCkgKyAiXCJdIikpKSk7CgogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSByZWYuYWN0aXZlOwoKCiAgICAgICAgICAgICAgICAgICAgdGhpcy5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuYmx1cigpOyB9KTsKICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnRzLCB0aGlzLmNscyk7CgogICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2FjdGl2ZScsIFthY3RpdmUsIGFkZENsYXNzKHRoaXMuY2xvc2VzdCA/IGNsb3Nlc3QoYWN0aXZlLCB0aGlzLmNsb3Nlc3QpIDogYWN0aXZlLCB0aGlzLmNscyldKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ3Jlc2l6ZSddCgogICAgICAgICAgICB9CgogICAgICAgIF0KCiAgICB9OwoKICAgIHZhciBTdGlja3kgPSB7CgogICAgICAgIG1peGluczogW0NsYXNzLCBNZWRpYV0sCgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIHRvcDogbnVsbCwKICAgICAgICAgICAgYm90dG9tOiBCb29sZWFuLAogICAgICAgICAgICBvZmZzZXQ6IFN0cmluZywKICAgICAgICAgICAgYW5pbWF0aW9uOiBTdHJpbmcsCiAgICAgICAgICAgIGNsc0FjdGl2ZTogU3RyaW5nLAogICAgICAgICAgICBjbHNJbmFjdGl2ZTogU3RyaW5nLAogICAgICAgICAgICBjbHNGaXhlZDogU3RyaW5nLAogICAgICAgICAgICBjbHNCZWxvdzogU3RyaW5nLAogICAgICAgICAgICBzZWxUYXJnZXQ6IFN0cmluZywKICAgICAgICAgICAgd2lkdGhFbGVtZW50OiBCb29sZWFuLAogICAgICAgICAgICBzaG93T25VcDogQm9vbGVhbiwKICAgICAgICAgICAgdGFyZ2V0T2Zmc2V0OiBOdW1iZXIKICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgYm90dG9tOiBmYWxzZSwKICAgICAgICAgICAgb2Zmc2V0OiAwLAogICAgICAgICAgICBhbmltYXRpb246ICcnLAogICAgICAgICAgICBjbHNBY3RpdmU6ICd1ay1hY3RpdmUnLAogICAgICAgICAgICBjbHNJbmFjdGl2ZTogJycsCiAgICAgICAgICAgIGNsc0ZpeGVkOiAndWstc3RpY2t5LWZpeGVkJywKICAgICAgICAgICAgY2xzQmVsb3c6ICd1ay1zdGlja3ktYmVsb3cnLAogICAgICAgICAgICBzZWxUYXJnZXQ6ICcnLAogICAgICAgICAgICB3aWR0aEVsZW1lbnQ6IGZhbHNlLAogICAgICAgICAgICBzaG93T25VcDogZmFsc2UsCiAgICAgICAgICAgIHRhcmdldE9mZnNldDogZmFsc2UKICAgICAgICB9LAoKICAgICAgICBjb21wdXRlZDogewoKICAgICAgICAgICAgb2Zmc2V0OiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSByZWYub2Zmc2V0OwoKICAgICAgICAgICAgICAgIHJldHVybiB0b1B4KG9mZnNldCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBzZWxUYXJnZXQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7CiAgICAgICAgICAgICAgICB2YXIgc2VsVGFyZ2V0ID0gcmVmLnNlbFRhcmdldDsKCiAgICAgICAgICAgICAgICByZXR1cm4gc2VsVGFyZ2V0ICYmICQoc2VsVGFyZ2V0LCAkZWwpIHx8ICRlbDsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHdpZHRoRWxlbWVudDogZnVuY3Rpb24ocmVmLCAkZWwpIHsKICAgICAgICAgICAgICAgIHZhciB3aWR0aEVsZW1lbnQgPSByZWYud2lkdGhFbGVtZW50OwoKICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeSh3aWR0aEVsZW1lbnQsICRlbCkgfHwgdGhpcy5wbGFjZWhvbGRlcjsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGlzQWN0aXZlOiB7CgogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzQWN0aXZlKTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiAhdGhpcy5pc0FjdGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzSW5hY3RpdmUsIHRoaXMuY2xzQWN0aXZlKTsKICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlICYmICFoYXNDbGFzcyh0aGlzLnNlbFRhcmdldCwgdGhpcy5jbHNJbmFjdGl2ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZUNsYXNzKHRoaXMuc2VsVGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSwgdGhpcy5jbHNJbmFjdGl2ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdpbmFjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9ICQoJysgLnVrLXN0aWNreS1wbGFjZWhvbGRlcicsIHRoaXMuJGVsKSB8fCAkKCc8ZGl2IGNsYXNzPSJ1ay1zdGlja3ktcGxhY2Vob2xkZXIiPjwvZGl2PicpOwogICAgICAgICAgICB0aGlzLmlzRml4ZWQgPSBmYWxzZTsKICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlOwogICAgICAgIH0sCgogICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7CgogICAgICAgICAgICBpZiAodGhpcy5pc0ZpeGVkKSB7CiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTsKICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2VsVGFyZ2V0LCB0aGlzLmNsc0luYWN0aXZlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmVtb3ZlKHRoaXMucGxhY2Vob2xkZXIpOwogICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gbnVsbDsKICAgICAgICAgICAgdGhpcy53aWR0aEVsZW1lbnQgPSBudWxsOwogICAgICAgIH0sCgogICAgICAgIGV2ZW50czogWwoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG5hbWU6ICdsb2FkIGhhc2hjaGFuZ2UgcG9wc3RhdGUnLAoKICAgICAgICAgICAgICAgIGVsOiB3aW5kb3csCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgICAgICAgICBpZiAoISh0aGlzLnRhcmdldE9mZnNldCAhPT0gZmFsc2UgJiYgbG9jYXRpb24uaGFzaCAmJiB3aW5kb3cucGFnZVlPZmZzZXQgPiAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gJChsb2NhdGlvbi5oYXNoKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAgICAgICAgICAgICAgICBmYXN0ZG9tLnJlYWQoZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBvZmZzZXQodGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsVG9wID0gb2Zmc2V0KHRoaXMkMS4kZWwpLnRvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IHRoaXMkMS4kZWwub2Zmc2V0SGVpZ2h0OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuaXNGaXhlZCAmJiBlbFRvcCArIGVsSGVpZ2h0ID49IHRvcCAmJiBlbFRvcCA8PSB0b3AgKyB0YXJnZXQub2Zmc2V0SGVpZ2h0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wKHdpbmRvdywgdG9wIC0gZWxIZWlnaHQgLSAoaXNOdW1lcmljKHRoaXMkMS50YXJnZXRPZmZzZXQpID8gdGhpcyQxLnRhcmdldE9mZnNldCA6IDApIC0gdGhpcyQxLm9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICBdLAoKICAgICAgICB1cGRhdGU6IFsKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYsIHR5cGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gcmVmLmhlaWdodDsKCgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQWN0aXZlICYmIHR5cGUgIT09ICd1cGRhdGUnKSB7CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gdGhpcy4kZWwub2Zmc2V0SGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTsKCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSAhdGhpcy5pc0FjdGl2ZSA/IHRoaXMuJGVsLm9mZnNldEhlaWdodCA6IGhlaWdodDsKCiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3BPZmZzZXQgPSBvZmZzZXQodGhpcy5pc0ZpeGVkID8gdGhpcy5wbGFjZWhvbGRlciA6IHRoaXMuJGVsKS50b3A7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5ib3R0b21PZmZzZXQgPSB0aGlzLnRvcE9mZnNldCArIGhlaWdodDsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGJvdHRvbSA9IHBhcnNlUHJvcCgnYm90dG9tJywgdGhpcyk7CgogICAgICAgICAgICAgICAgICAgIHRoaXMudG9wID0gTWF0aC5tYXgodG9GbG9hdChwYXJzZVByb3AoJ3RvcCcsIHRoaXMpKSwgdGhpcy50b3BPZmZzZXQpIC0gdGhpcy5vZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5ib3R0b20gPSBib3R0b20gJiYgYm90dG9tIC0gaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIHRoaXMuaW5hY3RpdmUgPSAhdGhpcy5tYXRjaE1lZGlhOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBsYXN0U2Nyb2xsOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbnM6IGNzcyh0aGlzLiRlbCwgWydtYXJnaW5Ub3AnLCAnbWFyZ2luQm90dG9tJywgJ21hcmdpbkxlZnQnLCAnbWFyZ2luUmlnaHQnXSkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IHJlZi5oZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1hcmdpbnMgPSByZWYubWFyZ2luczsKCgogICAgICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0gcmVmJDEucGxhY2Vob2xkZXI7CgogICAgICAgICAgICAgICAgICAgIGNzcyhwbGFjZWhvbGRlciwgYXNzaWduKHtoZWlnaHQ6IGhlaWdodH0sIG1hcmdpbnMpKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aXRoaW4ocGxhY2Vob2xkZXIsIGRvY3VtZW50KSkgewogICAgICAgICAgICAgICAgICAgICAgICBhZnRlcih0aGlzLiRlbCwgcGxhY2Vob2xkZXIpOwogICAgICAgICAgICAgICAgICAgICAgICBhdHRyKHBsYWNlaG9sZGVyLCAnaGlkZGVuJywgJycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy8gZW5zdXJlIGFjdGl2ZS9pbmFjdGl2ZSBjbGFzc2VzIGFyZSBhcHBsaWVkCiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IHRoaXMuaXNBY3RpdmU7CgogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ10KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbCA9IHJlZi5zY3JvbGw7IGlmICggc2Nyb2xsID09PSB2b2lkIDAgKSBzY3JvbGwgPSAwOwoKCiAgICAgICAgICAgICAgICAgICAgdGhpcy53aWR0aCA9IChpc1Zpc2libGUodGhpcy53aWR0aEVsZW1lbnQpID8gdGhpcy53aWR0aEVsZW1lbnQgOiB0aGlzLiRlbCkub2Zmc2V0V2lkdGg7CgogICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsID0gd2luZG93LnBhZ2VZT2Zmc2V0OwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBkaXI6IHNjcm9sbCA8PSB0aGlzLnNjcm9sbCA/ICdkb3duJyA6ICd1cCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbDogdGhpcy5zY3JvbGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGlzVmlzaWJsZSh0aGlzLiRlbCksCiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogb2Zmc2V0UG9zaXRpb24odGhpcy5wbGFjZWhvbGRlcilbMF0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0YSwgdHlwZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgICAgICAgICAgdmFyIGluaXRUaW1lc3RhbXAgPSBkYXRhLmluaXRUaW1lc3RhbXA7IGlmICggaW5pdFRpbWVzdGFtcCA9PT0gdm9pZCAwICkgaW5pdFRpbWVzdGFtcCA9IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IGRhdGEuZGlyOwogICAgICAgICAgICAgICAgICAgIHZhciBsYXN0RGlyID0gZGF0YS5sYXN0RGlyOwogICAgICAgICAgICAgICAgICAgIHZhciBsYXN0U2Nyb2xsID0gZGF0YS5sYXN0U2Nyb2xsOwogICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSBkYXRhLnNjcm9sbDsKICAgICAgICAgICAgICAgICAgICB2YXIgdG9wID0gZGF0YS50b3A7CiAgICAgICAgICAgICAgICAgICAgdmFyIHZpc2libGUgPSBkYXRhLnZpc2libGU7CiAgICAgICAgICAgICAgICAgICAgdmFyIG5vdyA9IHBlcmZvcm1hbmNlLm5vdygpOwoKICAgICAgICAgICAgICAgICAgICBkYXRhLmxhc3RTY3JvbGwgPSBzY3JvbGw7CgogICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGwgPCAwIHx8IHNjcm9sbCA9PT0gbGFzdFNjcm9sbCB8fCAhdmlzaWJsZSB8fCB0aGlzLmRpc2FibGVkIHx8IHRoaXMuc2hvd09uVXAgJiYgdHlwZSAhPT0gJ3Njcm9sbCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKG5vdyAtIGluaXRUaW1lc3RhbXAgPiAzMDAgfHwgZGlyICE9PSBsYXN0RGlyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuaW5pdFNjcm9sbCA9IHNjcm9sbDsKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5pbml0VGltZXN0YW1wID0gbm93OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZGF0YS5sYXN0RGlyID0gZGlyOwoKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG93T25VcCAmJiBNYXRoLmFicyhkYXRhLmluaXRTY3JvbGwgLSBzY3JvbGwpIDw9IDMwICYmIE1hdGguYWJzKGxhc3RTY3JvbGwgLSBzY3JvbGwpIDw9IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmluYWN0aXZlCiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHNjcm9sbCA8IHRoaXMudG9wCiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuc2hvd09uVXAgJiYgKHNjcm9sbCA8PSB0aGlzLnRvcCB8fCBkaXIgPT09ICdkb3duJyB8fCBkaXIgPT09ICd1cCcgJiYgIXRoaXMuaXNGaXhlZCAmJiBzY3JvbGwgPD0gdGhpcy5ib3R0b21PZmZzZXQpCiAgICAgICAgICAgICAgICAgICAgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNGaXhlZCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBbmltYXRpb24uaW5Qcm9ncmVzcyh0aGlzLiRlbCkgJiYgdG9wID4gc2Nyb2xsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbCh0aGlzLiRlbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRml4ZWQgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbiAmJiBzY3JvbGwgPiB0aGlzLnRvcE9mZnNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbCh0aGlzLiRlbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmltYXRpb24ub3V0KHRoaXMuJGVsLCB0aGlzLmFuaW1hdGlvbikudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuaGlkZSgpOyB9LCBub29wKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0ZpeGVkKSB7CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpOwoKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYW5pbWF0aW9uKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBBbmltYXRpb24uY2FuY2VsKHRoaXMuJGVsKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5pbih0aGlzLiRlbCwgdGhpcy5hbmltYXRpb24pLmNhdGNoKG5vb3ApOwoKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBldmVudHM6IFsncmVzaXplJywgJ3Njcm9sbCddCgogICAgICAgICAgICB9CgogICAgICAgIF0sCgogICAgICAgIG1ldGhvZHM6IHsKCiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIHRoaXMuaXNGaXhlZCA9IHRydWU7CiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpOwogICAgICAgICAgICAgICAgYXR0cih0aGlzLnBsYWNlaG9sZGVyLCAnaGlkZGVuJywgbnVsbCk7CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgaGlkZTogZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRml4ZWQsIHRoaXMuY2xzQmVsb3cpOwogICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7cG9zaXRpb246ICcnLCB0b3A6ICcnLCB3aWR0aDogJyd9KTsKICAgICAgICAgICAgICAgIGF0dHIodGhpcy5wbGFjZWhvbGRlciwgJ2hpZGRlbicsICcnKTsKCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLnRvcCAhPT0gMCB8fCB0aGlzLnNjcm9sbCA+IHRoaXMudG9wOwogICAgICAgICAgICAgICAgdmFyIHRvcCA9IE1hdGgubWF4KDAsIHRoaXMub2Zmc2V0KTsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5ib3R0b20gJiYgdGhpcy5zY3JvbGwgPiB0aGlzLmJvdHRvbSAtIHRoaXMub2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgdG9wID0gdGhpcy5ib3R0b20gLSB0aGlzLnNjcm9sbDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHsKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2ZpeGVkJywKICAgICAgICAgICAgICAgICAgICB0b3A6ICh0b3AgKyAicHgiKSwKICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy53aWR0aAogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGFjdGl2ZTsKICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0JlbG93LCB0aGlzLnNjcm9sbCA+IHRoaXMuYm90dG9tT2Zmc2V0KTsKICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0ZpeGVkKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH07CgogICAgZnVuY3Rpb24gcGFyc2VQcm9wKHByb3AsIHJlZikgewogICAgICAgIHZhciAkcHJvcHMgPSByZWYuJHByb3BzOwogICAgICAgIHZhciAkZWwgPSByZWYuJGVsOwogICAgICAgIHZhciBwcm9wT2Zmc2V0ID0gcmVmWyhwcm9wICsgIk9mZnNldCIpXTsKCgogICAgICAgIHZhciB2YWx1ZSA9ICRwcm9wc1twcm9wXTsKCiAgICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNOdW1lcmljKHZhbHVlKSAmJiBpc1N0cmluZyh2YWx1ZSkgJiYgdmFsdWUubWF0Y2goL14tP1xkLykpIHsKCiAgICAgICAgICAgIHJldHVybiBwcm9wT2Zmc2V0ICsgdG9QeCh2YWx1ZSk7CgogICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICByZXR1cm4gb2Zmc2V0KHZhbHVlID09PSB0cnVlID8gJGVsLnBhcmVudE5vZGUgOiBxdWVyeSh2YWx1ZSwgJGVsKSkuYm90dG9tOwoKICAgICAgICB9CiAgICB9CgogICAgdmFyIFN3aXRjaGVyID0gewoKICAgICAgICBtaXhpbnM6IFtUb2dnbGFibGVdLAoKICAgICAgICBhcmdzOiAnY29ubmVjdCcsCgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIGNvbm5lY3Q6IFN0cmluZywKICAgICAgICAgICAgdG9nZ2xlOiBTdHJpbmcsCiAgICAgICAgICAgIGFjdGl2ZTogTnVtYmVyLAogICAgICAgICAgICBzd2lwaW5nOiBCb29sZWFuCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBjb25uZWN0OiAnfi51ay1zd2l0Y2hlcicsCiAgICAgICAgICAgIHRvZ2dsZTogJz4gKiA+IDpmaXJzdC1jaGlsZCcsCiAgICAgICAgICAgIGFjdGl2ZTogMCwKICAgICAgICAgICAgc3dpcGluZzogdHJ1ZSwKICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJywKICAgICAgICAgICAgY2xzQ29udGFpbmVyOiAndWstc3dpdGNoZXInLAogICAgICAgICAgICBhdHRySXRlbTogJ3VrLXN3aXRjaGVyLWl0ZW0nLAogICAgICAgICAgICBxdWV1ZWQ6IHRydWUKICAgICAgICB9LAoKICAgICAgICBjb21wdXRlZDogewoKICAgICAgICAgICAgY29ubmVjdHM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7CiAgICAgICAgICAgICAgICB2YXIgY29ubmVjdCA9IHJlZi5jb25uZWN0OwoKICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeUFsbChjb25uZWN0LCAkZWwpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgdG9nZ2xlczogZnVuY3Rpb24ocmVmLCAkZWwpIHsKICAgICAgICAgICAgICAgIHZhciB0b2dnbGUgPSByZWYudG9nZ2xlOwoKICAgICAgICAgICAgICAgIHJldHVybiAkJCh0b2dnbGUsICRlbCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiBbCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJywKCiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy50b2dnbGUpICsgIjpub3QoLnVrLWRpc2FibGVkKSIpOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyh0b05vZGVzKHRoaXMuJGVsLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiB3aXRoaW4oZS5jdXJyZW50LCBlbCk7IH0pWzBdKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLAoKICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0czsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAoIlsiICsgKHRoaXMuYXR0ckl0ZW0pICsgIl0sW2RhdGEtIiArICh0aGlzLmF0dHJJdGVtKSArICJdIik7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KGRhdGEoZS5jdXJyZW50LCB0aGlzLmF0dHJJdGVtKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAnc3dpcGVSaWdodCBzd2lwZUxlZnQnLAoKICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3dpcGluZzsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RzOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlOwoKICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coZW5kc1dpdGgodHlwZSwgJ0xlZnQnKSA/ICduZXh0JyA6ICdwcmV2aW91cycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIF0sCgogICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgIHRoaXMuY29ubmVjdHMuZm9yRWFjaChmdW5jdGlvbiAobGlzdCkgeyByZXR1cm4gdGhpcyQxLnVwZGF0ZUFyaWEobGlzdC5jaGlsZHJlbik7IH0pOwogICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kZWw7CiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHJlZi5jaGlsZHJlbjsKICAgICAgICAgICAgdGhpcy5zaG93KGZpbHRlcihjaGlsZHJlbiwgKCIuIiArICh0aGlzLmNscykpKVswXSB8fCBjaGlsZHJlblt0aGlzLmFjdGl2ZV0gfHwgY2hpbGRyZW5bMF0pOwoKICAgICAgICAgICAgdGhpcy5zd2lwaW5nICYmIGNzcyh0aGlzLmNvbm5lY3RzLCAndG91Y2gtYWN0aW9uJywgJ3Bhbi15IHBpbmNoLXpvb20nKTsKCiAgICAgICAgfSwKCiAgICAgICAgbWV0aG9kczogewoKICAgICAgICAgICAgaW5kZXg6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICFpc0VtcHR5KHRoaXMuY29ubmVjdHMpICYmIGluZGV4KGZpbHRlcih0aGlzLmNvbm5lY3RzWzBdLmNoaWxkcmVuLCAoIi4iICsgKHRoaXMuY2xzKSkpWzBdKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGl0ZW0pIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kZWw7CiAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSByZWYuY2hpbGRyZW47CiAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoOwogICAgICAgICAgICAgICAgdmFyIHByZXYgPSB0aGlzLmluZGV4KCk7CiAgICAgICAgICAgICAgICB2YXIgaGFzUHJldiA9IHByZXYgPj0gMDsKICAgICAgICAgICAgICAgIHZhciBkaXIgPSBpdGVtID09PSAncHJldmlvdXMnID8gLTEgOiAxOwoKICAgICAgICAgICAgICAgIHZhciB0b2dnbGUsIGFjdGl2ZSwgbmV4dCA9IGdldEluZGV4KGl0ZW0sIGNoaWxkcmVuLCBwcmV2KTsKCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrLCBuZXh0ID0gKG5leHQgKyBkaXIgKyBsZW5ndGgpICUgbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzKHRoaXMudG9nZ2xlc1tuZXh0XSwgJy51ay1kaXNhYmxlZCAqLCAudWstZGlzYWJsZWQsIFtkaXNhYmxlZF0nKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGUgPSB0aGlzLnRvZ2dsZXNbbmV4dF07CiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9IGNoaWxkcmVuW25leHRdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUgfHwgcHJldiA+PSAwICYmIGhhc0NsYXNzKGFjdGl2ZSwgdGhpcy5jbHMpIHx8IHByZXYgPT09IG5leHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoY2hpbGRyZW4sIHRoaXMuY2xzKTsKICAgICAgICAgICAgICAgIGFkZENsYXNzKGFjdGl2ZSwgdGhpcy5jbHMpOwogICAgICAgICAgICAgICAgYXR0cih0aGlzLnRvZ2dsZXMsICdhcmlhLWV4cGFuZGVkJywgZmFsc2UpOwogICAgICAgICAgICAgICAgYXR0cih0b2dnbGUsICdhcmlhLWV4cGFuZGVkJywgdHJ1ZSk7CgogICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0cy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNQcmV2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS50b2dnbGVOb3cobGlzdC5jaGlsZHJlbltuZXh0XSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnRvZ2dsZUVsZW1lbnQoW2xpc3QuY2hpbGRyZW5bcHJldl0sIGxpc3QuY2hpbGRyZW5bbmV4dF1dKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH07CgogICAgdmFyIFRhYiA9IHsKCiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLAoKICAgICAgICBleHRlbmRzOiBTd2l0Y2hlciwKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgbWVkaWE6IEJvb2xlYW4KICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIG1lZGlhOiA5NjAsCiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstdGFiLWl0ZW0nCiAgICAgICAgfSwKCiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIHZhciBjbHMgPSBoYXNDbGFzcyh0aGlzLiRlbCwgJ3VrLXRhYi1sZWZ0JykKICAgICAgICAgICAgICAgID8gJ3VrLXRhYi1sZWZ0JwogICAgICAgICAgICAgICAgOiBoYXNDbGFzcyh0aGlzLiRlbCwgJ3VrLXRhYi1yaWdodCcpCiAgICAgICAgICAgICAgICAgICAgPyAndWstdGFiLXJpZ2h0JwogICAgICAgICAgICAgICAgICAgIDogZmFsc2U7CgogICAgICAgICAgICBpZiAoY2xzKSB7CiAgICAgICAgICAgICAgICB0aGlzLiRjcmVhdGUoJ3RvZ2dsZScsIHRoaXMuJGVsLCB7Y2xzOiBjbHMsIG1vZGU6ICdtZWRpYScsIG1lZGlhOiB0aGlzLm1lZGlhfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfTsKCiAgICB2YXIgVG9nZ2xlID0gewoKICAgICAgICBtaXhpbnM6IFtNZWRpYSwgVG9nZ2xhYmxlXSwKCiAgICAgICAgYXJnczogJ3RhcmdldCcsCgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIGhyZWY6IFN0cmluZywKICAgICAgICAgICAgdGFyZ2V0OiBudWxsLAogICAgICAgICAgICBtb2RlOiAnbGlzdCcKICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGhyZWY6IGZhbHNlLAogICAgICAgICAgICB0YXJnZXQ6IGZhbHNlLAogICAgICAgICAgICBtb2RlOiAnY2xpY2snLAogICAgICAgICAgICBxdWV1ZWQ6IHRydWUKICAgICAgICB9LAoKICAgICAgICBjb21wdXRlZDogewoKICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIGhyZWYgPSByZWYuaHJlZjsKICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0OwoKICAgICAgICAgICAgICAgIHRhcmdldCA9IHF1ZXJ5QWxsKHRhcmdldCB8fCBocmVmLCAkZWwpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5sZW5ndGggJiYgdGFyZ2V0IHx8IFskZWxdOwogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRyaWdnZXIodGhpcy50YXJnZXQsICd1cGRhdGVhcmlhJywgW3RoaXNdKTsKICAgICAgICB9LAoKICAgICAgICBldmVudHM6IFsKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAocG9pbnRlckVudGVyICsgIiAiICsgcG9pbnRlckxlYXZlKSwKCiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh0aGlzLm1vZGUsICdob3ZlcicpOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCgidG9nZ2xlIiArIChlLnR5cGUgPT09IHBvaW50ZXJFbnRlciA/ICdzaG93JyA6ICdoaWRlJykpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsCgogICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5jbHVkZXModGhpcy5tb2RlLCAnY2xpY2snKSB8fCBoYXNUb3VjaCAmJiBpbmNsdWRlcyh0aGlzLm1vZGUsICdob3ZlcicpOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CgogICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gYmV0dGVyIGlzVG9nZ2xlZCBoYW5kbGluZwogICAgICAgICAgICAgICAgICAgIHZhciBsaW5rOwogICAgICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmPSIjIl0sIGFbaHJlZj0iIl0nKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAobGluayA9IGNsb3Nlc3QoZS50YXJnZXQsICdhW2hyZWZdJykpICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhaXNWaXNpYmxlKHRoaXMudGFyZ2V0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbGluay5oYXNoICYmIG1hdGNoZXModGhpcy50YXJnZXQsIGxpbmsuaGFzaCkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICBdLAoKICAgICAgICB1cGRhdGU6IHsKCiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMubW9kZSwgJ21lZGlhJykgJiYgdGhpcy5tZWRpYQogICAgICAgICAgICAgICAgICAgID8ge21hdGNoOiB0aGlzLm1hdGNoTWVkaWF9CiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IHJlZi5tYXRjaDsKCgogICAgICAgICAgICAgICAgdmFyIHRvZ2dsZWQgPSB0aGlzLmlzVG9nZ2xlZCh0aGlzLnRhcmdldCk7CiAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPyAhdG9nZ2xlZCA6IHRvZ2dsZWQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXQoKICAgICAgICB9LAoKICAgICAgICBtZXRob2RzOiB7CgogICAgICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKHR5cGUpIHsKICAgICAgICAgICAgICAgIGlmICh0cmlnZ2VyKHRoaXMudGFyZ2V0LCB0eXBlIHx8ICd0b2dnbGUnLCBbdGhpc10pKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50KHRoaXMudGFyZ2V0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICBmdW5jdGlvbiBjb3JlIChVSWtpdCkgewoKICAgICAgICAvLyBjb3JlIGNvbXBvbmVudHMKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2FjY29yZGlvbicsIEFjY29yZGlvbik7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCdhbGVydCcsIEFsZXJ0KTsKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2NvdmVyJywgQ292ZXIpOwogICAgICAgIFVJa2l0LmNvbXBvbmVudCgnZHJvcCcsIERyb3ApOwogICAgICAgIFVJa2l0LmNvbXBvbmVudCgnZHJvcGRvd24nLCBEcm9wZG93bik7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCdmb3JtQ3VzdG9tJywgRm9ybUN1c3RvbSk7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCdnaWYnLCBHaWYpOwogICAgICAgIFVJa2l0LmNvbXBvbmVudCgnZ3JpZCcsIEdyaWQpOwogICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaGVpZ2h0TWF0Y2gnLCBIZWlnaHRNYXRjaCk7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCdoZWlnaHRWaWV3cG9ydCcsIEhlaWdodFZpZXdwb3J0KTsKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2ljb24nLCBJY29uKTsKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2ltZycsIEltZyk7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCdsZWFkZXInLCBMZWFkZXIpOwogICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbWFyZ2luJywgTWFyZ2luKTsKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ21vZGFsJywgTW9kYWwkMSk7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCduYXYnLCBOYXYpOwogICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbmF2YmFyJywgTmF2YmFyKTsKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ29mZmNhbnZhcycsIE9mZmNhbnZhcyk7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCdvdmVyZmxvd0F1dG8nLCBPdmVyZmxvd0F1dG8pOwogICAgICAgIFVJa2l0LmNvbXBvbmVudCgncmVzcG9uc2l2ZScsIFJlc3BvbnNpdmUpOwogICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc2Nyb2xsJywgU2Nyb2xsKTsKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3Njcm9sbHNweScsIFNjcm9sbHNweSk7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzY3JvbGxzcHlOYXYnLCBTY3JvbGxzcHlOYXYpOwogICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc3RpY2t5JywgU3RpY2t5KTsKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3N2ZycsIFN2Zyk7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzd2l0Y2hlcicsIFN3aXRjaGVyKTsKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3RhYicsIFRhYik7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCd0b2dnbGUnLCBUb2dnbGUpOwogICAgICAgIFVJa2l0LmNvbXBvbmVudCgndmlkZW8nLCBWaWRlbyk7CgogICAgICAgIC8vIEljb24gY29tcG9uZW50cwogICAgICAgIFVJa2l0LmNvbXBvbmVudCgnY2xvc2UnLCBDbG9zZSk7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCdtYXJrZXInLCBJY29uQ29tcG9uZW50KTsKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ25hdmJhclRvZ2dsZUljb24nLCBJY29uQ29tcG9uZW50KTsKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ292ZXJsYXlJY29uJywgSWNvbkNvbXBvbmVudCk7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCdwYWdpbmF0aW9uTmV4dCcsIEljb25Db21wb25lbnQpOwogICAgICAgIFVJa2l0LmNvbXBvbmVudCgncGFnaW5hdGlvblByZXZpb3VzJywgSWNvbkNvbXBvbmVudCk7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzZWFyY2hJY29uJywgU2VhcmNoKTsKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlbmF2TmV4dCcsIFNsaWRlbmF2KTsKICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlbmF2UHJldmlvdXMnLCBTbGlkZW5hdik7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzcGlubmVyJywgU3Bpbm5lcik7CiAgICAgICAgVUlraXQuY29tcG9uZW50KCd0b3RvcCcsIEljb25Db21wb25lbnQpOwoKICAgICAgICAvLyBjb3JlIGZ1bmN0aW9uYWxpdHkKICAgICAgICBVSWtpdC51c2UoQ29yZSk7CgogICAgfQoKICAgIFVJa2l0LnZlcnNpb24gPSAnMy4yLjAnOwoKICAgIGNvcmUoVUlraXQpOwoKICAgIHZhciBDb3VudGRvd24gPSB7CgogICAgICAgIG1peGluczogW0NsYXNzXSwKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgZGF0ZTogU3RyaW5nLAogICAgICAgICAgICBjbHNXcmFwcGVyOiBTdHJpbmcKICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGRhdGU6ICcnLAogICAgICAgICAgICBjbHNXcmFwcGVyOiAnLnVrLWNvdW50ZG93bi0ldW5pdCUnCiAgICAgICAgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIGRhdGU6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIGRhdGUgPSByZWYuZGF0ZTsKCiAgICAgICAgICAgICAgICByZXR1cm4gRGF0ZS5wYXJzZShkYXRlKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGRheXM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7CiAgICAgICAgICAgICAgICB2YXIgY2xzV3JhcHBlciA9IHJlZi5jbHNXcmFwcGVyOwoKICAgICAgICAgICAgICAgIHJldHVybiAkKGNsc1dyYXBwZXIucmVwbGFjZSgnJXVuaXQlJywgJ2RheXMnKSwgJGVsKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGhvdXJzOiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIGNsc1dyYXBwZXIgPSByZWYuY2xzV3JhcHBlcjsKCiAgICAgICAgICAgICAgICByZXR1cm4gJChjbHNXcmFwcGVyLnJlcGxhY2UoJyV1bml0JScsICdob3VycycpLCAkZWwpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgbWludXRlczogZnVuY3Rpb24ocmVmLCAkZWwpIHsKICAgICAgICAgICAgICAgIHZhciBjbHNXcmFwcGVyID0gcmVmLmNsc1dyYXBwZXI7CgogICAgICAgICAgICAgICAgcmV0dXJuICQoY2xzV3JhcHBlci5yZXBsYWNlKCcldW5pdCUnLCAnbWludXRlcycpLCAkZWwpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgc2Vjb25kczogZnVuY3Rpb24ocmVmLCAkZWwpIHsKICAgICAgICAgICAgICAgIHZhciBjbHNXcmFwcGVyID0gcmVmLmNsc1dyYXBwZXI7CgogICAgICAgICAgICAgICAgcmV0dXJuICQoY2xzV3JhcHBlci5yZXBsYWNlKCcldW5pdCUnLCAnc2Vjb25kcycpLCAkZWwpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgdW5pdHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgogICAgICAgICAgICAgICAgcmV0dXJuIFsnZGF5cycsICdob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXS5maWx0ZXIoZnVuY3Rpb24gKHVuaXQpIHsgcmV0dXJuIHRoaXMkMVt1bml0XTsgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5zdGFydCgpOwogICAgICAgIH0sCgogICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKICAgICAgICAgICAgdGhpcy5zdG9wKCk7CiAgICAgICAgICAgIHRoaXMudW5pdHMuZm9yRWFjaChmdW5jdGlvbiAodW5pdCkgeyByZXR1cm4gZW1wdHkodGhpcyQxW3VuaXRdKTsgfSk7CiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiBbCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogJ3Zpc2liaWxpdHljaGFuZ2UnLAoKICAgICAgICAgICAgICAgIGVsOiBkb2N1bWVudCwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGlkZGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgIF0sCgogICAgICAgIHVwZGF0ZTogewoKICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgICAgIHZhciB0aW1lc3BhbiA9IGdldFRpbWVTcGFuKHRoaXMuZGF0ZSk7CgogICAgICAgICAgICAgICAgaWYgKHRpbWVzcGFuLnRvdGFsIDw9IDApIHsKCiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7CgogICAgICAgICAgICAgICAgICAgIHRpbWVzcGFuLmRheXMKICAgICAgICAgICAgICAgICAgICAgICAgPSB0aW1lc3Bhbi5ob3VycwogICAgICAgICAgICAgICAgICAgICAgICA9IHRpbWVzcGFuLm1pbnV0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgPSB0aW1lc3Bhbi5zZWNvbmRzCiAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB0aGlzLnVuaXRzLmZvckVhY2goZnVuY3Rpb24gKHVuaXQpIHsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGRpZ2l0cyA9IFN0cmluZyhNYXRoLmZsb29yKHRpbWVzcGFuW3VuaXRdKSk7CgogICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IGRpZ2l0cy5sZW5ndGggPCAyID8gKCIwIiArIGRpZ2l0cykgOiBkaWdpdHM7CgogICAgICAgICAgICAgICAgICAgIHZhciBlbCA9IHRoaXMkMVt1bml0XTsKICAgICAgICAgICAgICAgICAgICBpZiAoZWwudGV4dENvbnRlbnQgIT09IGRpZ2l0cykgewogICAgICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSBkaWdpdHMuc3BsaXQoJycpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0cy5sZW5ndGggIT09IGVsLmNoaWxkcmVuLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbChlbCwgZGlnaXRzLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiAnPHNwYW4+PC9zcGFuPic7IH0pLmpvaW4oJycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXRzLmZvckVhY2goZnVuY3Rpb24gKGRpZ2l0LCBpKSB7IHJldHVybiBlbC5jaGlsZHJlbltpXS50ZXh0Q29udGVudCA9IGRpZ2l0OyB9KTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIG1ldGhvZHM6IHsKCiAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlICYmIHRoaXMudW5pdHMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuJGVtaXQoKTsgfSwgMTAwMCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZXIpIHsKICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMudGltZXIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBudWxsOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICBmdW5jdGlvbiBnZXRUaW1lU3BhbihkYXRlKSB7CgogICAgICAgIHZhciB0b3RhbCA9IGRhdGUgLSBEYXRlLm5vdygpOwoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICB0b3RhbDogdG90YWwsCiAgICAgICAgICAgIHNlY29uZHM6IHRvdGFsIC8gMTAwMCAlIDYwLAogICAgICAgICAgICBtaW51dGVzOiB0b3RhbCAvIDEwMDAgLyA2MCAlIDYwLAogICAgICAgICAgICBob3VyczogdG90YWwgLyAxMDAwIC8gNjAgLyA2MCAlIDI0LAogICAgICAgICAgICBkYXlzOiB0b3RhbCAvIDEwMDAgLyA2MCAvIDYwIC8gMjQKICAgICAgICB9OwogICAgfQoKICAgIHZhciB0YXJnZXRDbGFzcyA9ICd1ay1hbmltYXRpb24tdGFyZ2V0JzsKCiAgICB2YXIgQW5pbWF0ZSA9IHsKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgYW5pbWF0aW9uOiBOdW1iZXIKICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGFuaW1hdGlvbjogMTUwCiAgICAgICAgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kZWw7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgbWV0aG9kczogewoKICAgICAgICAgICAgYW5pbWF0ZTogZnVuY3Rpb24oYWN0aW9uKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICAgICAgYWRkU3R5bGUoKTsKCiAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSB0b05vZGVzKHRoaXMudGFyZ2V0LmNoaWxkcmVuKTsKICAgICAgICAgICAgICAgIHZhciBwcm9wc0Zyb20gPSBjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBnZXRQcm9wcyhlbCwgdHJ1ZSk7IH0pOwoKICAgICAgICAgICAgICAgIHZhciBvbGRIZWlnaHQgPSBoZWlnaHQodGhpcy50YXJnZXQpOwogICAgICAgICAgICAgICAgdmFyIG9sZFNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7CgogICAgICAgICAgICAgICAgYWN0aW9uKCk7CgogICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwodGhpcy50YXJnZXQpOwogICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChUcmFuc2l0aW9uLmNhbmNlbCk7CgogICAgICAgICAgICAgICAgcmVzZXQodGhpcy50YXJnZXQpOwogICAgICAgICAgICAgICAgdGhpcy4kdXBkYXRlKHRoaXMudGFyZ2V0KTsKICAgICAgICAgICAgICAgIGZhc3Rkb20uZmx1c2goKTsKCiAgICAgICAgICAgICAgICB2YXIgbmV3SGVpZ2h0ID0gaGVpZ2h0KHRoaXMudGFyZ2V0KTsKCiAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdCh0b05vZGVzKHRoaXMudGFyZ2V0LmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiAhaW5jbHVkZXMoY2hpbGRyZW4sIGVsKTsgfSkpOwoKICAgICAgICAgICAgICAgIHZhciBwcm9wc1RvID0gY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gZWwucGFyZW50Tm9kZSAmJiBpIGluIHByb3BzRnJvbQogICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzRnJvbVtpXQogICAgICAgICAgICAgICAgICAgICAgICA/IGlzVmlzaWJsZShlbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0UG9zaXRpb25XaXRoTWFyZ2luKGVsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7b3BhY2l0eTogMH0KICAgICAgICAgICAgICAgICAgICAgICAgOiB7b3BhY2l0eTogaXNWaXNpYmxlKGVsKSA/IDEgOiAwfQogICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlOyB9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHByb3BzRnJvbSA9IHByb3BzVG8ubWFwKGZ1bmN0aW9uIChwcm9wcywgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBmcm9tID0gY2hpbGRyZW5baV0ucGFyZW50Tm9kZSA9PT0gdGhpcyQxLnRhcmdldAogICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzRnJvbVtpXSB8fCBnZXRQcm9wcyhjaGlsZHJlbltpXSkKICAgICAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGZyb20pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9wcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZyb20ub3BhY2l0eTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKCdvcGFjaXR5JyBpbiBwcm9wcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvcGFjaXR5ID0gZnJvbS5vcGFjaXR5OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGFjaXR5ICUgMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLm9wYWNpdHkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZnJvbS5vcGFjaXR5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMudGFyZ2V0LCB0YXJnZXRDbGFzcyk7CiAgICAgICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gcHJvcHNGcm9tW2ldICYmIGNzcyhlbCwgcHJvcHNGcm9tW2ldKTsgfSk7CiAgICAgICAgICAgICAgICBjc3ModGhpcy50YXJnZXQsICdoZWlnaHQnLCBvbGRIZWlnaHQpOwogICAgICAgICAgICAgICAgc2Nyb2xsVG9wKHdpbmRvdywgb2xkU2Nyb2xsWSk7CgogICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIHByb3BzRnJvbVtpXSAmJiBwcm9wc1RvW2ldCiAgICAgICAgICAgICAgICAgICAgICAgID8gVHJhbnNpdGlvbi5zdGFydChlbCwgcHJvcHNUb1tpXSwgdGhpcyQxLmFuaW1hdGlvbiwgJ2Vhc2UnKQogICAgICAgICAgICAgICAgICAgICAgICA6IFByb21pc2UucmVzb2x2ZSgpOyB9CiAgICAgICAgICAgICAgICApLmNvbmNhdChUcmFuc2l0aW9uLnN0YXJ0KHRoaXMudGFyZ2V0LCB7aGVpZ2h0OiBuZXdIZWlnaHR9LCB0aGlzLmFuaW1hdGlvbiwgJ2Vhc2UnKSkpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBjc3MoZWwsIHtkaXNwbGF5OiBwcm9wc1RvW2ldLm9wYWNpdHkgPT09IDAgPyAnbm9uZScgOiAnJywgekluZGV4OiAnJ30pOyB9KTsKICAgICAgICAgICAgICAgICAgICByZXNldCh0aGlzJDEudGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHVwZGF0ZSh0aGlzJDEudGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICBmYXN0ZG9tLmZsdXNoKCk7IC8vIG5lZWRlZCBmb3IgSUUxMQogICAgICAgICAgICAgICAgfSwgbm9vcCk7CgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBmdW5jdGlvbiBnZXRQcm9wcyhlbCwgb3BhY2l0eSkgewoKICAgICAgICB2YXIgekluZGV4ID0gY3NzKGVsLCAnekluZGV4Jyk7CgogICAgICAgIHJldHVybiBpc1Zpc2libGUoZWwpCiAgICAgICAgICAgID8gYXNzaWduKHsKICAgICAgICAgICAgICAgIGRpc3BsYXk6ICcnLAogICAgICAgICAgICAgICAgb3BhY2l0eTogb3BhY2l0eSA/IGNzcyhlbCwgJ29wYWNpdHknKSA6ICcwJywKICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJywKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICAgICAgekluZGV4OiB6SW5kZXggPT09ICdhdXRvJyA/IGluZGV4KGVsKSA6IHpJbmRleAogICAgICAgICAgICB9LCBnZXRQb3NpdGlvbldpdGhNYXJnaW4oZWwpKQogICAgICAgICAgICA6IGZhbHNlOwogICAgfQoKICAgIGZ1bmN0aW9uIHJlc2V0KGVsKSB7CiAgICAgICAgY3NzKGVsLmNoaWxkcmVuLCB7CiAgICAgICAgICAgIGhlaWdodDogJycsCiAgICAgICAgICAgIGxlZnQ6ICcnLAogICAgICAgICAgICBvcGFjaXR5OiAnJywKICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJycsCiAgICAgICAgICAgIHBvc2l0aW9uOiAnJywKICAgICAgICAgICAgdG9wOiAnJywKICAgICAgICAgICAgd2lkdGg6ICcnCiAgICAgICAgfSk7CiAgICAgICAgcmVtb3ZlQ2xhc3MoZWwsIHRhcmdldENsYXNzKTsKICAgICAgICBjc3MoZWwsICdoZWlnaHQnLCAnJyk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0UG9zaXRpb25XaXRoTWFyZ2luKGVsKSB7CiAgICAgICAgdmFyIHJlZiA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgIHZhciBoZWlnaHQgPSByZWYuaGVpZ2h0OwogICAgICAgIHZhciB3aWR0aCA9IHJlZi53aWR0aDsKICAgICAgICB2YXIgcmVmJDEgPSBwb3NpdGlvbihlbCk7CiAgICAgICAgdmFyIHRvcCA9IHJlZiQxLnRvcDsKICAgICAgICB2YXIgbGVmdCA9IHJlZiQxLmxlZnQ7CiAgICAgICAgdG9wICs9IHRvRmxvYXQoY3NzKGVsLCAnbWFyZ2luVG9wJykpOwoKICAgICAgICByZXR1cm4ge3RvcDogdG9wLCBsZWZ0OiBsZWZ0LCBoZWlnaHQ6IGhlaWdodCwgd2lkdGg6IHdpZHRofTsKICAgIH0KCiAgICB2YXIgc3R5bGU7CgogICAgZnVuY3Rpb24gYWRkU3R5bGUoKSB7CiAgICAgICAgaWYgKHN0eWxlKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgc3R5bGUgPSBhcHBlbmQoZG9jdW1lbnQuaGVhZCwgJzxzdHlsZT4nKS5zaGVldDsKICAgICAgICBzdHlsZS5pbnNlcnRSdWxlKAogICAgICAgICAgICAoIi4iICsgdGFyZ2V0Q2xhc3MgKyAiID4gKiB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfSIpLCAwCiAgICAgICAgKTsKICAgIH0KCiAgICB2YXIgRmlsdGVyID0gewoKICAgICAgICBtaXhpbnM6IFtBbmltYXRlXSwKCiAgICAgICAgYXJnczogJ3RhcmdldCcsCgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIHRhcmdldDogQm9vbGVhbiwKICAgICAgICAgICAgc2VsQWN0aXZlOiBCb29sZWFuCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICB0YXJnZXQ6IG51bGwsCiAgICAgICAgICAgIHNlbEFjdGl2ZTogZmFsc2UsCiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstZmlsdGVyLWNvbnRyb2wnLAogICAgICAgICAgICBjbHM6ICd1ay1hY3RpdmUnLAogICAgICAgICAgICBhbmltYXRpb246IDI1MAogICAgICAgIH0sCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICB0b2dnbGVzOiB7CgogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgICAgIHZhciBhdHRySXRlbSA9IHJlZi5hdHRySXRlbTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQkKCgiWyIgKyAodGhpcy5hdHRySXRlbSkgKyAiXSxbZGF0YS0iICsgKHRoaXMuYXR0ckl0ZW0pICsgIl0iKSwgJGVsKTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgd2F0Y2g6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7CiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDsKCiAgICAgICAgICAgICAgICByZXR1cm4gJCh0YXJnZXQsICRlbCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBjaGlsZHJlbjogewoKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvTm9kZXModGhpcy50YXJnZXQgJiYgdGhpcy50YXJnZXQuY2hpbGRyZW4pOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICB3YXRjaDogZnVuY3Rpb24obGlzdCwgb2xkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VxdWFsTGlzdChsaXN0LCBvbGQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiBbCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJywKCiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgiWyIgKyAodGhpcy5hdHRySXRlbSkgKyAiXSxbZGF0YS0iICsgKHRoaXMuYXR0ckl0ZW0pICsgIl0iKTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkgewoKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseShlLmN1cnJlbnQpOwoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgXSwKCiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgpOwoKICAgICAgICAgICAgaWYgKHRoaXMuc2VsQWN0aXZlICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgdmFyIGFjdGl2ZXMgPSAkJCh0aGlzLnNlbEFjdGl2ZSwgdGhpcy4kZWwpOwogICAgICAgICAgICAgICAgdGhpcy50b2dnbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLmNscywgaW5jbHVkZXMoYWN0aXZlcywgZWwpKTsgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgbWV0aG9kczogewoKICAgICAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKG1lcmdlU3RhdGUoZWwsIHRoaXMuYXR0ckl0ZW0sIHRoaXMuZ2V0U3RhdGUoKSkpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZ2V0U3RhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlcwogICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGhhc0NsYXNzKGl0ZW0sIHRoaXMkMS5jbHMpOyB9KQogICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKHN0YXRlLCBlbCkgeyByZXR1cm4gbWVyZ2VTdGF0ZShlbCwgdGhpcyQxLmF0dHJJdGVtLCBzdGF0ZSk7IH0sIHtmaWx0ZXI6IHsnJzogJyd9LCBzb3J0OiBbXX0pOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgc2V0U3RhdGU6IGZ1bmN0aW9uKHN0YXRlLCBhbmltYXRlKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKICAgICAgICAgICAgICAgIGlmICggYW5pbWF0ZSA9PT0gdm9pZCAwICkgYW5pbWF0ZSA9IHRydWU7CgoKICAgICAgICAgICAgICAgIHN0YXRlID0gYXNzaWduKHtmaWx0ZXI6IHsnJzogJyd9LCBzb3J0OiBbXX0sIHN0YXRlKTsKCiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnYmVmb3JlRmlsdGVyJywgW3RoaXMsIHN0YXRlXSk7CgogICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7CiAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSByZWYuY2hpbGRyZW47CgogICAgICAgICAgICAgICAgdGhpcy50b2dnbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLmNscywgISFtYXRjaEZpbHRlcihlbCwgdGhpcyQxLmF0dHJJdGVtLCBzdGF0ZSkpOyB9KTsKCiAgICAgICAgICAgICAgICB2YXIgYXBwbHkgPSBmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvciA9IGdldFNlbGVjdG9yKHN0YXRlKTsKCiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGNzcyhlbCwgJ2Rpc3BsYXknLCBzZWxlY3RvciAmJiAhbWF0Y2hlcyhlbCwgc2VsZWN0b3IpID8gJ25vbmUnIDogJycpOyB9KTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHN0YXRlLnNvcnQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNvcnQgPSByZWZbMF07CiAgICAgICAgICAgICAgICAgICAgdmFyIG9yZGVyID0gcmVmWzFdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoc29ydCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc29ydGVkID0gc29ydEl0ZW1zKGNoaWxkcmVuLCBzb3J0LCBvcmRlcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNFcXVhbChzb3J0ZWQsIGNoaWxkcmVuKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiBhcHBlbmQodGhpcyQxLnRhcmdldCwgZWwpOyB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIGlmIChhbmltYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmltYXRlKGFwcGx5KS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRyaWdnZXIodGhpcyQxLiRlbCwgJ2FmdGVyRmlsdGVyJywgW3RoaXMkMV0pOyB9KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYXBwbHkoKTsKICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnYWZ0ZXJGaWx0ZXInLCBbdGhpc10pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHVwZGF0ZVN0YXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKICAgICAgICAgICAgICAgIGZhc3Rkb20ud3JpdGUoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLnNldFN0YXRlKHRoaXMkMS5nZXRTdGF0ZSgpLCBmYWxzZSk7IH0pOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9OwoKICAgIGZ1bmN0aW9uIGdldEZpbHRlcihlbCwgYXR0cikgewogICAgICAgIHJldHVybiBwYXJzZU9wdGlvbnMoZGF0YShlbCwgYXR0ciksIFsnZmlsdGVyJ10pOwogICAgfQoKICAgIGZ1bmN0aW9uIG1lcmdlU3RhdGUoZWwsIGF0dHIsIHN0YXRlKSB7CgogICAgICAgIHZhciBmaWx0ZXJCeSA9IGdldEZpbHRlcihlbCwgYXR0cik7CiAgICAgICAgdmFyIGZpbHRlciA9IGZpbHRlckJ5LmZpbHRlcjsKICAgICAgICB2YXIgZ3JvdXAgPSBmaWx0ZXJCeS5ncm91cDsKICAgICAgICB2YXIgc29ydCA9IGZpbHRlckJ5LnNvcnQ7CiAgICAgICAgdmFyIG9yZGVyID0gZmlsdGVyQnkub3JkZXI7IGlmICggb3JkZXIgPT09IHZvaWQgMCApIG9yZGVyID0gJ2FzYyc7CgogICAgICAgIGlmIChmaWx0ZXIgfHwgaXNVbmRlZmluZWQoc29ydCkpIHsKCiAgICAgICAgICAgIGlmIChncm91cCkgewoKICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIpIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgc3RhdGUuZmlsdGVyWycnXTsKICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maWx0ZXJbZ3JvdXBdID0gZmlsdGVyOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgc3RhdGUuZmlsdGVyW2dyb3VwXTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzRW1wdHkoc3RhdGUuZmlsdGVyKSB8fCAnJyBpbiBzdGF0ZS5maWx0ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZmlsdGVyID0geycnOiBmaWx0ZXIgfHwgJyd9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc3RhdGUuZmlsdGVyID0geycnOiBmaWx0ZXIgfHwgJyd9OwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChzb3J0KSkgewogICAgICAgICAgICBzdGF0ZS5zb3J0ID0gW3NvcnQsIG9yZGVyXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdGF0ZTsKICAgIH0KCiAgICBmdW5jdGlvbiBtYXRjaEZpbHRlcihlbCwgYXR0ciwgcmVmKSB7CiAgICAgICAgdmFyIHN0YXRlRmlsdGVyID0gcmVmLmZpbHRlcjsgaWYgKCBzdGF0ZUZpbHRlciA9PT0gdm9pZCAwICkgc3RhdGVGaWx0ZXIgPSB7Jyc6ICcnfTsKICAgICAgICB2YXIgcmVmX3NvcnQgPSByZWYuc29ydDsKICAgICAgICB2YXIgc3RhdGVTb3J0ID0gcmVmX3NvcnRbMF07CiAgICAgICAgdmFyIHN0YXRlT3JkZXIgPSByZWZfc29ydFsxXTsKCgogICAgICAgIHZhciByZWYkMSA9IGdldEZpbHRlcihlbCwgYXR0cik7CiAgICAgICAgdmFyIGZpbHRlciA9IHJlZiQxLmZpbHRlcjsgaWYgKCBmaWx0ZXIgPT09IHZvaWQgMCApIGZpbHRlciA9ICcnOwogICAgICAgIHZhciBncm91cCA9IHJlZiQxLmdyb3VwOyBpZiAoIGdyb3VwID09PSB2b2lkIDAgKSBncm91cCA9ICcnOwogICAgICAgIHZhciBzb3J0ID0gcmVmJDEuc29ydDsKICAgICAgICB2YXIgb3JkZXIgPSByZWYkMS5vcmRlcjsgaWYgKCBvcmRlciA9PT0gdm9pZCAwICkgb3JkZXIgPSAnYXNjJzsKCiAgICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKHNvcnQpCiAgICAgICAgICAgID8gZ3JvdXAgaW4gc3RhdGVGaWx0ZXIgJiYgZmlsdGVyID09PSBzdGF0ZUZpbHRlcltncm91cF0KICAgICAgICAgICAgICAgIHx8ICFmaWx0ZXIgJiYgZ3JvdXAgJiYgIShncm91cCBpbiBzdGF0ZUZpbHRlcikgJiYgIXN0YXRlRmlsdGVyWycnXQogICAgICAgICAgICA6IHN0YXRlU29ydCA9PT0gc29ydCAmJiBzdGF0ZU9yZGVyID09PSBvcmRlcjsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0VxdWFsTGlzdChsaXN0QSwgbGlzdEIpIHsKICAgICAgICByZXR1cm4gbGlzdEEubGVuZ3RoID09PSBsaXN0Qi5sZW5ndGgKICAgICAgICAgICAgJiYgbGlzdEEuZXZlcnkoZnVuY3Rpb24gKGVsKSB7IHJldHVybiB+bGlzdEIuaW5kZXhPZihlbCk7IH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldFNlbGVjdG9yKHJlZikgewogICAgICAgIHZhciBmaWx0ZXIgPSByZWYuZmlsdGVyOwoKICAgICAgICB2YXIgc2VsZWN0b3IgPSAnJzsKICAgICAgICBlYWNoKGZpbHRlciwgZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBzZWxlY3RvciArPSB2YWx1ZSB8fCAnJzsgfSk7CiAgICAgICAgcmV0dXJuIHNlbGVjdG9yOwogICAgfQoKICAgIGZ1bmN0aW9uIHNvcnRJdGVtcyhub2Rlcywgc29ydCwgb3JkZXIpIHsKICAgICAgICByZXR1cm4gYXNzaWduKFtdLCBub2Rlcykuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gZGF0YShhLCBzb3J0KS5sb2NhbGVDb21wYXJlKGRhdGEoYiwgc29ydCksIHVuZGVmaW5lZCwge251bWVyaWM6IHRydWV9KSAqIChvcmRlciA9PT0gJ2FzYycgfHwgLTEpOyB9KTsKICAgIH0KCiAgICB2YXIgQW5pbWF0aW9ucyA9IHsKCiAgICAgICAgc2xpZGU6IHsKCiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGRpcikgewogICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoZGlyICogLTEwMCl9LAogICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpfQogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKGN1cnJlbnQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGVkKGN1cnJlbnQpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50LCBkaXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKGRpciAqIC0xMDAgKiBwZXJjZW50KX0sCiAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKGRpciAqIDEwMCAqICgxIC0gcGVyY2VudCkpfQogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICBmdW5jdGlvbiB0cmFuc2xhdGVkKGVsKSB7CiAgICAgICAgcmV0dXJuIE1hdGguYWJzKGNzcyhlbCwgJ3RyYW5zZm9ybScpLnNwbGl0KCcsJylbNF0gLyBlbC5vZmZzZXRXaWR0aCkgfHwgMDsKICAgIH0KCiAgICBmdW5jdGlvbiB0cmFuc2xhdGUodmFsdWUsIHVuaXQpIHsKICAgICAgICBpZiAoIHZhbHVlID09PSB2b2lkIDAgKSB2YWx1ZSA9IDA7CiAgICAgICAgaWYgKCB1bml0ID09PSB2b2lkIDAgKSB1bml0ID0gJyUnOwoKICAgICAgICB2YWx1ZSArPSB2YWx1ZSA/IHVuaXQgOiAnJzsKICAgICAgICByZXR1cm4gaXNJRSA/ICgidHJhbnNsYXRlWCgiICsgdmFsdWUgKyAiKSIpIDogKCJ0cmFuc2xhdGUzZCgiICsgdmFsdWUgKyAiLCAwLCAwKSIpOyAvLyBjdXJyZW50bHkgbm90IHRyYW5zbGF0ZTNkIGluIElFLCB0cmFuc2xhdGUzZCB3aXRoaW4gdHJhbnNsYXRlM2QgZG9lcyBub3Qgd29yayB3aGlsZSB0cmFuc2l0aW9uaW5nCiAgICB9CgogICAgZnVuY3Rpb24gc2NhbGUzZCh2YWx1ZSkgewogICAgICAgIHJldHVybiAoInNjYWxlM2QoIiArIHZhbHVlICsgIiwgIiArIHZhbHVlICsgIiwgMSkiKTsKICAgIH0KCiAgICB2YXIgQW5pbWF0aW9ucyQxID0gYXNzaWduKHt9LCBBbmltYXRpb25zLCB7CgogICAgICAgIGZhZGU6IHsKCiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMH0sCiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDF9CiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkgewogICAgICAgICAgICAgICAgcmV0dXJuIDEgLSBjc3MoY3VycmVudCwgJ29wYWNpdHknKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkgewogICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnR9LAogICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiBwZXJjZW50fQogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfQoKICAgICAgICB9LAoKICAgICAgICBzY2FsZTogewoKICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAwLCB0cmFuc2Zvcm06IHNjYWxlM2QoMSAtIC4yKX0sCiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDEsIHRyYW5zZm9ybTogc2NhbGUzZCgxKX0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gMSAtIGNzcyhjdXJyZW50LCAnb3BhY2l0eScpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAxIC0gcGVyY2VudCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgLSAuMiAqIHBlcmNlbnQpfSwKICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogcGVyY2VudCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgLSAuMiArIC4yICogcGVyY2VudCl9CiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9KTsKCiAgICBmdW5jdGlvbiBUcmFuc2l0aW9uZXIocHJldiwgbmV4dCwgZGlyLCByZWYpIHsKICAgICAgICB2YXIgYW5pbWF0aW9uID0gcmVmLmFuaW1hdGlvbjsKICAgICAgICB2YXIgZWFzaW5nID0gcmVmLmVhc2luZzsKCgogICAgICAgIHZhciBwZXJjZW50ID0gYW5pbWF0aW9uLnBlcmNlbnQ7CiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IGFuaW1hdGlvbi50cmFuc2xhdGU7CiAgICAgICAgdmFyIHNob3cgPSBhbmltYXRpb24uc2hvdzsgaWYgKCBzaG93ID09PSB2b2lkIDAgKSBzaG93ID0gbm9vcDsKICAgICAgICB2YXIgcHJvcHMgPSBzaG93KGRpcik7CiAgICAgICAgdmFyIGRlZmVycmVkID0gbmV3IERlZmVycmVkKCk7CgogICAgICAgIHJldHVybiB7CgogICAgICAgICAgICBkaXI6IGRpciwKCiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGR1cmF0aW9uLCBwZXJjZW50LCBsaW5lYXIpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwogICAgICAgICAgICAgICAgaWYgKCBwZXJjZW50ID09PSB2b2lkIDAgKSBwZXJjZW50ID0gMDsKCgogICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IGxpbmVhciA/ICdsaW5lYXInIDogZWFzaW5nOwogICAgICAgICAgICAgICAgZHVyYXRpb24gLT0gTWF0aC5yb3VuZChkdXJhdGlvbiAqIGNsYW1wKHBlcmNlbnQsIC0xLCAxKSk7CgogICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUocGVyY2VudCk7CgogICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZShuZXh0LCAnaXRlbWluJywge3BlcmNlbnQ6IHBlcmNlbnQsIGR1cmF0aW9uOiBkdXJhdGlvbiwgdGltaW5nOiB0aW1pbmcsIGRpcjogZGlyfSk7CiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKHByZXYsICdpdGVtb3V0Jywge3BlcmNlbnQ6IDEgLSBwZXJjZW50LCBkdXJhdGlvbjogZHVyYXRpb24sIHRpbWluZzogdGltaW5nLCBkaXI6IGRpcn0pOwoKICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKFsKICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KG5leHQsIHByb3BzWzFdLCBkdXJhdGlvbiwgdGltaW5nKSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KHByZXYsIHByb3BzWzBdLCBkdXJhdGlvbiwgdGltaW5nKQogICAgICAgICAgICAgICAgXSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgfSwgbm9vcCk7CgogICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBzdG9wOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBUcmFuc2l0aW9uLnN0b3AoW25leHQsIHByZXZdKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbChbbmV4dCwgcHJldl0pOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBwcm9wc1swXSkgewogICAgICAgICAgICAgICAgICAgIGNzcyhbbmV4dCwgcHJldl0sIHByb3AsICcnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGZvcndhcmQ6IGZ1bmN0aW9uKGR1cmF0aW9uLCBwZXJjZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoIHBlcmNlbnQgPT09IHZvaWQgMCApIHBlcmNlbnQgPSB0aGlzLnBlcmNlbnQoKTsKCiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbChbbmV4dCwgcHJldl0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyhkdXJhdGlvbiwgcGVyY2VudCwgdHJ1ZSk7CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50KSB7CgogICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpOwoKICAgICAgICAgICAgICAgIHZhciBwcm9wcyA9IHRyYW5zbGF0ZShwZXJjZW50LCBkaXIpOwogICAgICAgICAgICAgICAgY3NzKG5leHQsIHByb3BzWzFdKTsKICAgICAgICAgICAgICAgIGNzcyhwcmV2LCBwcm9wc1swXSk7CiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKG5leHQsICdpdGVtdHJhbnNsYXRlaW4nLCB7cGVyY2VudDogcGVyY2VudCwgZGlyOiBkaXJ9KTsKICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUocHJldiwgJ2l0ZW10cmFuc2xhdGVvdXQnLCB7cGVyY2VudDogMSAtIHBlcmNlbnQsIGRpcjogZGlyfSk7CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcGVyY2VudChwcmV2IHx8IG5leHQsIG5leHQsIGRpcik7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBnZXREaXN0YW5jZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJldiAmJiBwcmV2Lm9mZnNldFdpZHRoOwogICAgICAgICAgICB9CgogICAgICAgIH07CgogICAgfQoKICAgIGZ1bmN0aW9uIHRyaWdnZXJVcGRhdGUoZWwsIHR5cGUsIGRhdGEpIHsKICAgICAgICB0cmlnZ2VyKGVsLCBjcmVhdGVFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UsIGRhdGEpKTsKICAgIH0KCiAgICB2YXIgU2xpZGVyQXV0b3BsYXkgPSB7CgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIGF1dG9wbGF5OiBCb29sZWFuLAogICAgICAgICAgICBhdXRvcGxheUludGVydmFsOiBOdW1iZXIsCiAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogQm9vbGVhbgogICAgICAgIH0sCgogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLAogICAgICAgICAgICBhdXRvcGxheUludGVydmFsOiA3MDAwLAogICAgICAgICAgICBwYXVzZU9uSG92ZXI6IHRydWUKICAgICAgICB9LAoKICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLmF1dG9wbGF5ICYmIHRoaXMuc3RhcnRBdXRvcGxheSgpOwogICAgICAgIH0sCgogICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7CiAgICAgICAgfSwKCiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYXR0cih0aGlzLnNsaWRlcywgJ3RhYmluZGV4JywgJy0xJyk7CiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiBbCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogJ3Zpc2liaWxpdHljaGFuZ2UnLAoKICAgICAgICAgICAgICAgIGVsOiBkb2N1bWVudCwKCiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dG9wbGF5OwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGlkZGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydEF1dG9wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICBdLAoKICAgICAgICBtZXRob2RzOiB7CgogICAgICAgICAgICBzdGFydEF1dG9wbGF5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgICAgICB0aGlzLnN0b3BBdXRvcGxheSgpOwoKICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHJldHVybiAoIXRoaXMkMS5kcmFnZ2FibGUgfHwgISQoJzpmb2N1cycsIHRoaXMkMS4kZWwpKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoIXRoaXMkMS5wYXVzZU9uSG92ZXIgfHwgIW1hdGNoZXModGhpcyQxLiRlbCwgJzpob3ZlcicpKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAhdGhpcyQxLnN0YWNrLmxlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAmJiB0aGlzJDEuc2hvdygnbmV4dCcpOyB9LAogICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b3BsYXlJbnRlcnZhbAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBzdG9wQXV0b3BsYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5pbnRlcnZhbCAmJiBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9OwoKICAgIHZhciBTbGlkZXJEcmFnID0gewoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBkcmFnZ2FibGU6IEJvb2xlYW4KICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZSwKICAgICAgICAgICAgdGhyZXNob2xkOiAxMAogICAgICAgIH0sCgogICAgICAgIGNyZWF0ZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICBbJ3N0YXJ0JywgJ21vdmUnLCAnZW5kJ10uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CgogICAgICAgICAgICAgICAgdmFyIGZuID0gdGhpcyQxW2tleV07CiAgICAgICAgICAgICAgICB0aGlzJDFba2V5XSA9IGZ1bmN0aW9uIChlKSB7CgogICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSBnZXRFdmVudFBvcyhlKS54ICogKGlzUnRsID8gLTEgOiAxKTsKCiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnByZXZQb3MgPSBwb3MgIT09IHRoaXMkMS5wb3MgPyB0aGlzJDEucG9zIDogdGhpcyQxLnByZXZQb3M7CiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvcyA9IHBvczsKCiAgICAgICAgICAgICAgICAgICAgZm4oZSk7CiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgfSk7CgogICAgICAgIH0sCgogICAgICAgIGV2ZW50czogWwoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG5hbWU6IHBvaW50ZXJEb3duLAoKICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxTbGlkZXM7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdnYWJsZQogICAgICAgICAgICAgICAgICAgICAgICB8fCAhaXNUb3VjaChlKSAmJiBoYXNUZXh0Tm9kZXNPbmx5KGUudGFyZ2V0KQogICAgICAgICAgICAgICAgICAgICAgICB8fCBlLmJ1dHRvbiA+IDAKICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5sZW5ndGggPCAyCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIC8vIFdvcmthcm91bmQgZm9yIGlPUyAxMSBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQyNTAKCiAgICAgICAgICAgICAgICBuYW1lOiAndG91Y2htb3ZlJywKICAgICAgICAgICAgICAgIHBhc3NpdmU6IGZhbHNlLAogICAgICAgICAgICAgICAgaGFuZGxlcjogJ21vdmUnLAogICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbFNsaWRlczsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAnZHJhZ3N0YXJ0JywKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIF0sCgogICAgICAgIG1ldGhvZHM6IHsKCiAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgICAgICB0aGlzLmRyYWcgPSB0aGlzLnBvczsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJhbnNpdGlvbmVyKSB7CgogICAgICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IHRoaXMuX3RyYW5zaXRpb25lci5wZXJjZW50KCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnICs9IHRoaXMuX3RyYW5zaXRpb25lci5nZXREaXN0YW5jZSgpICogdGhpcy5wZXJjZW50ICogdGhpcy5kaXI7CgogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lci5jYW5jZWwoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIudHJhbnNsYXRlKHRoaXMucGVyY2VudCk7CgogICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlOwoKICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrID0gW107CgogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZJbmRleCA9IHRoaXMuaW5kZXg7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gU2VlIGFib3ZlIHdvcmthcm91bmQgbm90aWNlCiAgICAgICAgICAgICAgICB2YXIgb2ZmID0gcG9pbnRlck1vdmUgIT09ICd0b3VjaG1vdmUnCiAgICAgICAgICAgICAgICAgICAgPyBvbihkb2N1bWVudCwgcG9pbnRlck1vdmUsIHRoaXMubW92ZSwge3Bhc3NpdmU6IGZhbHNlfSkKICAgICAgICAgICAgICAgICAgICA6IG5vb3A7CiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZE1vdmUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgb2ZmKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnVuYmluZE1vdmUgPSBudWxsOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIG9uKHdpbmRvdywgJ3Njcm9sbCcsIHRoaXMudW5iaW5kTW92ZSk7CiAgICAgICAgICAgICAgICBvbihkb2N1bWVudCwgcG9pbnRlclVwLCB0aGlzLmVuZCwgdHJ1ZSk7CgogICAgICAgICAgICAgICAgY3NzKHRoaXMubGlzdCwgJ3VzZXJTZWxlY3QnLCAnbm9uZScpOwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIG1vdmU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgICAgICAvLyBTZWUgYWJvdmUgd29ya2Fyb3VuZCBub3RpY2UKICAgICAgICAgICAgICAgIGlmICghdGhpcy51bmJpbmRNb3ZlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IHRoaXMucG9zIC0gdGhpcy5kcmFnOwoKICAgICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA9PT0gMCB8fCB0aGlzLnByZXZQb3MgPT09IHRoaXMucG9zIHx8ICF0aGlzLmRyYWdnaW5nICYmIE1hdGguYWJzKGRpc3RhbmNlKSA8IHRoaXMudGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNzcyh0aGlzLmxpc3QsICdwb2ludGVyRXZlbnRzJywgJ25vbmUnKTsKCiAgICAgICAgICAgICAgICBlLmNhbmNlbGFibGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgdGhpcy5kaXIgPSAoZGlzdGFuY2UgPCAwID8gMSA6IC0xKTsKCiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpczsKICAgICAgICAgICAgICAgIHZhciBzbGlkZXMgPSByZWYuc2xpZGVzOwogICAgICAgICAgICAgICAgdmFyIHJlZiQxID0gdGhpczsKICAgICAgICAgICAgICAgIHZhciBwcmV2SW5kZXggPSByZWYkMS5wcmV2SW5kZXg7CiAgICAgICAgICAgICAgICB2YXIgZGlzID0gTWF0aC5hYnMoZGlzdGFuY2UpOwogICAgICAgICAgICAgICAgdmFyIG5leHRJbmRleCA9IHRoaXMuZ2V0SW5kZXgocHJldkluZGV4ICsgdGhpcy5kaXIsIHByZXZJbmRleCk7CiAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSB0aGlzLl9nZXREaXN0YW5jZShwcmV2SW5kZXgsIG5leHRJbmRleCkgfHwgc2xpZGVzW3ByZXZJbmRleF0ub2Zmc2V0V2lkdGg7CgogICAgICAgICAgICAgICAgd2hpbGUgKG5leHRJbmRleCAhPT0gcHJldkluZGV4ICYmIGRpcyA+IHdpZHRoKSB7CgogICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZyAtPSB3aWR0aCAqIHRoaXMuZGlyOwoKICAgICAgICAgICAgICAgICAgICBwcmV2SW5kZXggPSBuZXh0SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgZGlzIC09IHdpZHRoOwogICAgICAgICAgICAgICAgICAgIG5leHRJbmRleCA9IHRoaXMuZ2V0SW5kZXgocHJldkluZGV4ICsgdGhpcy5kaXIsIHByZXZJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSB0aGlzLl9nZXREaXN0YW5jZShwcmV2SW5kZXgsIG5leHRJbmRleCkgfHwgc2xpZGVzW3ByZXZJbmRleF0ub2Zmc2V0V2lkdGg7CgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IGRpcyAvIHdpZHRoOwoKICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gc2xpZGVzW3ByZXZJbmRleF07CiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHNsaWRlc1tuZXh0SW5kZXhdOwogICAgICAgICAgICAgICAgdmFyIGNoYW5nZWQgPSB0aGlzLmluZGV4ICE9PSBuZXh0SW5kZXg7CiAgICAgICAgICAgICAgICB2YXIgZWRnZSA9IHByZXZJbmRleCA9PT0gbmV4dEluZGV4OwoKICAgICAgICAgICAgICAgIHZhciBpdGVtU2hvd247CgogICAgICAgICAgICAgICAgW3RoaXMuaW5kZXgsIHRoaXMucHJldkluZGV4XS5maWx0ZXIoZnVuY3Rpb24gKGkpIHsgcmV0dXJuICFpbmNsdWRlcyhbbmV4dEluZGV4LCBwcmV2SW5kZXhdLCBpKTsgfSkuZm9yRWFjaChmdW5jdGlvbiAoaSkgewogICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoc2xpZGVzW2ldLCAnaXRlbWhpZGRlbicsIFt0aGlzJDFdKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVNob3duID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnByZXZJbmRleCA9IHByZXZJbmRleDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXggPT09IHByZXZJbmRleCAmJiB0aGlzLnByZXZJbmRleCAhPT0gcHJldkluZGV4IHx8IGl0ZW1TaG93bikgewogICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoc2xpZGVzW3RoaXMuaW5kZXhdLCAnaXRlbXNob3duJywgW3RoaXNdKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucHJldkluZGV4ID0gcHJldkluZGV4OwogICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSBuZXh0SW5kZXg7CgogICAgICAgICAgICAgICAgICAgICFlZGdlICYmIHRyaWdnZXIocHJldiwgJ2JlZm9yZWl0ZW1oaWRlJywgW3RoaXNdKTsKICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKG5leHQsICdiZWZvcmVpdGVtc2hvdycsIFt0aGlzXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyID0gdGhpcy5fdHJhbnNsYXRlKE1hdGguYWJzKHRoaXMucGVyY2VudCksIHByZXYsICFlZGdlICYmIG5leHQpOwoKICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7CiAgICAgICAgICAgICAgICAgICAgIWVkZ2UgJiYgdHJpZ2dlcihwcmV2LCAnaXRlbWhpZGUnLCBbdGhpc10pOwogICAgICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2l0ZW1zaG93JywgW3RoaXNdKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBlbmQ6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIG9mZih3aW5kb3csICdzY3JvbGwnLCB0aGlzLnVuYmluZE1vdmUpOwogICAgICAgICAgICAgICAgdGhpcy51bmJpbmRNb3ZlICYmIHRoaXMudW5iaW5kTW92ZSgpOwogICAgICAgICAgICAgICAgb2ZmKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kLCB0cnVlKTsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykgewoKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gbnVsbDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXggPT09IHRoaXMucHJldkluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IDEgLSB0aGlzLnBlcmNlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlyICo9IC0xOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaG93KGZhbHNlLCB0aGlzLmluZGV4LCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpckNoYW5nZSA9IChpc1J0bCA/IHRoaXMuZGlyICogKGlzUnRsID8gMSA6IC0xKSA6IHRoaXMuZGlyKSA8IDAgPT09IHRoaXMucHJldlBvcyA+IHRoaXMucG9zOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gZGlyQ2hhbmdlID8gdGhpcy5pbmRleCA6IHRoaXMucHJldkluZGV4OwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpckNoYW5nZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJjZW50ID0gMSAtIHRoaXMucGVyY2VudDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KHRoaXMuZGlyID4gMCAmJiAhZGlyQ2hhbmdlIHx8IHRoaXMuZGlyIDwgMCAmJiBkaXJDaGFuZ2UgPyAnbmV4dCcgOiAncHJldmlvdXMnLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNzcyh0aGlzLmxpc3QsIHt1c2VyU2VsZWN0OiAnJywgcG9pbnRlckV2ZW50czogJyd9KTsKCiAgICAgICAgICAgICAgICB0aGlzLmRyYWcKICAgICAgICAgICAgICAgICAgICA9IHRoaXMucGVyY2VudAogICAgICAgICAgICAgICAgICAgID0gbnVsbDsKCiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH07CgogICAgZnVuY3Rpb24gaGFzVGV4dE5vZGVzT25seShlbCkgewogICAgICAgIHJldHVybiAhZWwuY2hpbGRyZW4ubGVuZ3RoICYmIGVsLmNoaWxkTm9kZXMubGVuZ3RoOwogICAgfQoKICAgIHZhciBTbGlkZXJOYXYgPSB7CgogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgc2VsTmF2OiBmYWxzZQogICAgICAgIH0sCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICBuYXY6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7CiAgICAgICAgICAgICAgICB2YXIgc2VsTmF2ID0gcmVmLnNlbE5hdjsKCiAgICAgICAgICAgICAgICByZXR1cm4gJChzZWxOYXYsICRlbCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBzZWxOYXZJdGVtOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBhdHRySXRlbSA9IHJlZi5hdHRySXRlbTsKCiAgICAgICAgICAgICAgICByZXR1cm4gKCJbIiArIGF0dHJJdGVtICsgIl0sW2RhdGEtIiArIGF0dHJJdGVtICsgIl0iKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIG5hdkl0ZW1zOiBmdW5jdGlvbihfLCAkZWwpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkJCh0aGlzLnNlbE5hdkl0ZW0sICRlbCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgdXBkYXRlOiB7CgogICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICAgICAgaWYgKHRoaXMubmF2ICYmIHRoaXMubGVuZ3RoICE9PSB0aGlzLm5hdi5jaGlsZHJlbi5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBodG1sKHRoaXMubmF2LCB0aGlzLnNsaWRlcy5tYXAoZnVuY3Rpb24gKF8sIGkpIHsgcmV0dXJuICgiPGxpICIgKyAodGhpcyQxLmF0dHJJdGVtKSArICI9XCIiICsgaSArICJcIj48YSBocmVmPVwiI1wiPjwvYT48L2xpPiIpOyB9KS5qb2luKCcnKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoJCQodGhpcy5zZWxOYXZJdGVtLCB0aGlzLiRlbCkuY29uY2F0KHRoaXMubmF2KSwgJ3VrLWhpZGRlbicsICF0aGlzLm1heEluZGV4KTsKCiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5hdigpOwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXQoKICAgICAgICB9LAoKICAgICAgICBldmVudHM6IFsKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLAoKICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxOYXZJdGVtOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhkYXRhKGUuY3VycmVudCwgdGhpcy5hdHRySXRlbSkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbXNob3cnLAogICAgICAgICAgICAgICAgaGFuZGxlcjogJ3VwZGF0ZU5hdicKCiAgICAgICAgICAgIH0KCiAgICAgICAgXSwKCiAgICAgICAgbWV0aG9kczogewoKICAgICAgICAgICAgdXBkYXRlTmF2OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuZ2V0VmFsaWRJbmRleCgpOwogICAgICAgICAgICAgICAgdGhpcy5uYXZJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgewoKICAgICAgICAgICAgICAgICAgICB2YXIgY21kID0gZGF0YShlbCwgdGhpcyQxLmF0dHJJdGVtKTsKCiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbHNBY3RpdmUsIHRvTnVtYmVyKGNtZCkgPT09IGkpOwogICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCAndWstaW52aXNpYmxlJywgdGhpcyQxLmZpbml0ZSAmJiAoY21kID09PSAncHJldmlvdXMnICYmIGkgPT09IDAgfHwgY21kID09PSAnbmV4dCcgJiYgaSA+PSB0aGlzJDEubWF4SW5kZXgpKTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICB2YXIgU2xpZGVyID0gewoKICAgICAgICBtaXhpbnM6IFtTbGlkZXJBdXRvcGxheSwgU2xpZGVyRHJhZywgU2xpZGVyTmF2XSwKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgY2xzQWN0aXZhdGVkOiBCb29sZWFuLAogICAgICAgICAgICBlYXNpbmc6IFN0cmluZywKICAgICAgICAgICAgaW5kZXg6IE51bWJlciwKICAgICAgICAgICAgZmluaXRlOiBCb29sZWFuLAogICAgICAgICAgICB2ZWxvY2l0eTogTnVtYmVyCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHsKICAgICAgICAgICAgZWFzaW5nOiAnZWFzZScsCiAgICAgICAgICAgIGZpbml0ZTogZmFsc2UsCiAgICAgICAgICAgIHZlbG9jaXR5OiAxLAogICAgICAgICAgICBpbmRleDogMCwKICAgICAgICAgICAgcHJldkluZGV4OiAtMSwKICAgICAgICAgICAgc3RhY2s6IFtdLAogICAgICAgICAgICBwZXJjZW50OiAwLAogICAgICAgICAgICBjbHNBY3RpdmU6ICd1ay1hY3RpdmUnLAogICAgICAgICAgICBjbHNBY3RpdmF0ZWQ6IGZhbHNlLAogICAgICAgICAgICBUcmFuc2l0aW9uZXI6IGZhbHNlLAogICAgICAgICAgICB0cmFuc2l0aW9uT3B0aW9uczoge30KICAgICAgICB9KTsgfSwKCiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSAtMTsKICAgICAgICAgICAgdGhpcy5pbmRleCA9IHRoaXMuZ2V0VmFsaWRJbmRleCh0aGlzLmluZGV4KTsKICAgICAgICAgICAgdGhpcy5zdGFjayA9IFtdOwogICAgICAgIH0sCgogICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSk7CiAgICAgICAgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIGR1cmF0aW9uOiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIHZlbG9jaXR5ID0gcmVmLnZlbG9jaXR5OwoKICAgICAgICAgICAgICAgIHJldHVybiBzcGVlZFVwKCRlbC5vZmZzZXRXaWR0aCAvIHZlbG9jaXR5KTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGxpc3Q6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7CiAgICAgICAgICAgICAgICB2YXIgc2VsTGlzdCA9IHJlZi5zZWxMaXN0OwoKICAgICAgICAgICAgICAgIHJldHVybiAkKHNlbExpc3QsICRlbCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBtYXhJbmRleDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGggLSAxOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgc2VsU2xpZGVzOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBzZWxMaXN0ID0gcmVmLnNlbExpc3Q7CgogICAgICAgICAgICAgICAgcmV0dXJuIChzZWxMaXN0ICsgIiA+ICoiKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHNsaWRlczogewoKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvTm9kZXModGhpcy5saXN0LmNoaWxkcmVuKTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgd2F0Y2g6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuJHJlc2V0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgbGVuZ3RoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNsaWRlcy5sZW5ndGg7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiB7CgogICAgICAgICAgICBpdGVtc2hvd246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy4kdXBkYXRlKHRoaXMubGlzdCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgbWV0aG9kczogewoKICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oaW5kZXgsIGZvcmNlKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKICAgICAgICAgICAgICAgIGlmICggZm9yY2UgPT09IHZvaWQgMCApIGZvcmNlID0gZmFsc2U7CgoKICAgICAgICAgICAgICAgIGlmICh0aGlzLmRyYWdnaW5nIHx8ICF0aGlzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpczsKICAgICAgICAgICAgICAgIHZhciBzdGFjayA9IHJlZi5zdGFjazsKICAgICAgICAgICAgICAgIHZhciBxdWV1ZUluZGV4ID0gZm9yY2UgPyAwIDogc3RhY2subGVuZ3RoOwogICAgICAgICAgICAgICAgdmFyIHJlc2V0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHN0YWNrLnNwbGljZShxdWV1ZUluZGV4LCAxKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2hvdyhzdGFjay5zaGlmdCgpLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIHN0YWNrW2ZvcmNlID8gJ3Vuc2hpZnQnIDogJ3B1c2gnXShpbmRleCk7CgogICAgICAgICAgICAgICAgaWYgKCFmb3JjZSAmJiBzdGFjay5sZW5ndGggPiAxKSB7CgogICAgICAgICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPT09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyLmZvcndhcmQoTWF0aC5taW4odGhpcy5kdXJhdGlvbiwgMjAwKSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHByZXZJbmRleCA9IHRoaXMuaW5kZXg7CiAgICAgICAgICAgICAgICB2YXIgcHJldiA9IGhhc0NsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSkgJiYgdGhpcy5zbGlkZXNbcHJldkluZGV4XTsKICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSB0aGlzLmdldEluZGV4KGluZGV4LCB0aGlzLmluZGV4KTsKICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gdGhpcy5zbGlkZXNbbmV4dEluZGV4XTsKCiAgICAgICAgICAgICAgICBpZiAocHJldiA9PT0gbmV4dCkgewogICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRoaXMuZGlyID0gZ2V0RGlyZWN0aW9uKGluZGV4LCBwcmV2SW5kZXgpOwogICAgICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSBwcmV2SW5kZXg7CiAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gbmV4dEluZGV4OwoKICAgICAgICAgICAgICAgIHByZXYgJiYgdHJpZ2dlcihwcmV2LCAnYmVmb3JlaXRlbWhpZGUnLCBbdGhpc10pOwogICAgICAgICAgICAgICAgaWYgKCF0cmlnZ2VyKG5leHQsICdiZWZvcmVpdGVtc2hvdycsIFt0aGlzLCBwcmV2XSkpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5wcmV2SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzLl9zaG93KHByZXYsIG5leHQsIGZvcmNlKS50aGVuKGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZGVuJywgW3RoaXMkMV0pOwogICAgICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2l0ZW1zaG93bicsIFt0aGlzJDFdKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rkb20ud3JpdGUoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2hvdyhzdGFjay5zaGlmdCgpLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl90cmFuc2l0aW9uZXIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBwcmV2ICYmIHRyaWdnZXIocHJldiwgJ2l0ZW1oaWRlJywgW3RoaXNdKTsKICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2l0ZW1zaG93JywgW3RoaXNdKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsKCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBnZXRJbmRleDogZnVuY3Rpb24oaW5kZXgsIHByZXYpIHsKICAgICAgICAgICAgICAgIGlmICggaW5kZXggPT09IHZvaWQgMCApIGluZGV4ID0gdGhpcy5pbmRleDsKICAgICAgICAgICAgICAgIGlmICggcHJldiA9PT0gdm9pZCAwICkgcHJldiA9IHRoaXMuaW5kZXg7CgogICAgICAgICAgICAgICAgcmV0dXJuIGNsYW1wKGdldEluZGV4KGluZGV4LCB0aGlzLnNsaWRlcywgcHJldiwgdGhpcy5maW5pdGUpLCAwLCB0aGlzLm1heEluZGV4KTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGdldFZhbGlkSW5kZXg6IGZ1bmN0aW9uKGluZGV4LCBwcmV2SW5kZXgpIHsKICAgICAgICAgICAgICAgIGlmICggaW5kZXggPT09IHZvaWQgMCApIGluZGV4ID0gdGhpcy5pbmRleDsKICAgICAgICAgICAgICAgIGlmICggcHJldkluZGV4ID09PSB2b2lkIDAgKSBwcmV2SW5kZXggPSB0aGlzLnByZXZJbmRleDsKCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRJbmRleChpbmRleCwgcHJldkluZGV4KTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIF9zaG93OiBmdW5jdGlvbihwcmV2LCBuZXh0LCBmb3JjZSkgewoKICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lciA9IHRoaXMuX2dldFRyYW5zaXRpb25lcigKICAgICAgICAgICAgICAgICAgICBwcmV2LAogICAgICAgICAgICAgICAgICAgIG5leHQsCiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXIsCiAgICAgICAgICAgICAgICAgICAgYXNzaWduKHsKICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBmb3JjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXh0Lm9mZnNldFdpZHRoIDwgNjAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpJyAvKiBlYXNlT3V0UXVhZCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2N1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSknIC8qIGVhc2VPdXRRdWFydCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmVhc2luZwogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMudHJhbnNpdGlvbk9wdGlvbnMpCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICghZm9yY2UgJiYgIXByZXYpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIudHJhbnNsYXRlKDEpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy5zdGFjazsKICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zaXRpb25lcltsZW5ndGggPiAxID8gJ2ZvcndhcmQnIDogJ3Nob3cnXShsZW5ndGggPiAxID8gTWF0aC5taW4odGhpcy5kdXJhdGlvbiwgNzUgKyA3NSAvIChsZW5ndGggLSAxKSkgOiB0aGlzLmR1cmF0aW9uLCB0aGlzLnBlcmNlbnQpOwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIF9nZXREaXN0YW5jZTogZnVuY3Rpb24ocHJldiwgbmV4dCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFRyYW5zaXRpb25lcihwcmV2LCBwcmV2ICE9PSBuZXh0ICYmIG5leHQpLmdldERpc3RhbmNlKCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBfdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50LCBwcmV2LCBuZXh0KSB7CiAgICAgICAgICAgICAgICBpZiAoIHByZXYgPT09IHZvaWQgMCApIHByZXYgPSB0aGlzLnByZXZJbmRleDsKICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gdm9pZCAwICkgbmV4dCA9IHRoaXMuaW5kZXg7CgogICAgICAgICAgICAgICAgdmFyIHRyYW5zaXRpb25lciA9IHRoaXMuX2dldFRyYW5zaXRpb25lcihwcmV2ICE9PSBuZXh0ID8gcHJldiA6IGZhbHNlLCBuZXh0KTsKICAgICAgICAgICAgICAgIHRyYW5zaXRpb25lci50cmFuc2xhdGUocGVyY2VudCk7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNpdGlvbmVyOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgX2dldFRyYW5zaXRpb25lcjogZnVuY3Rpb24ocHJldiwgbmV4dCwgZGlyLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICBpZiAoIHByZXYgPT09IHZvaWQgMCApIHByZXYgPSB0aGlzLnByZXZJbmRleDsKICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gdm9pZCAwICkgbmV4dCA9IHRoaXMuaW5kZXg7CiAgICAgICAgICAgICAgICBpZiAoIGRpciA9PT0gdm9pZCAwICkgZGlyID0gdGhpcy5kaXIgfHwgMTsKICAgICAgICAgICAgICAgIGlmICggb3B0aW9ucyA9PT0gdm9pZCAwICkgb3B0aW9ucyA9IHRoaXMudHJhbnNpdGlvbk9wdGlvbnM7CgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0aGlzLlRyYW5zaXRpb25lcigKICAgICAgICAgICAgICAgICAgICBpc051bWJlcihwcmV2KSA/IHRoaXMuc2xpZGVzW3ByZXZdIDogcHJldiwKICAgICAgICAgICAgICAgICAgICBpc051bWJlcihuZXh0KSA/IHRoaXMuc2xpZGVzW25leHRdIDogbmV4dCwKICAgICAgICAgICAgICAgICAgICBkaXIgKiAoaXNSdGwgPyAtMSA6IDEpLAogICAgICAgICAgICAgICAgICAgIG9wdGlvbnMKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH07CgogICAgZnVuY3Rpb24gZ2V0RGlyZWN0aW9uKGluZGV4LCBwcmV2SW5kZXgpIHsKICAgICAgICByZXR1cm4gaW5kZXggPT09ICduZXh0JwogICAgICAgICAgICA/IDEKICAgICAgICAgICAgOiBpbmRleCA9PT0gJ3ByZXZpb3VzJwogICAgICAgICAgICAgICAgPyAtMQogICAgICAgICAgICAgICAgOiBpbmRleCA8IHByZXZJbmRleAogICAgICAgICAgICAgICAgICAgID8gLTEKICAgICAgICAgICAgICAgICAgICA6IDE7CiAgICB9CgogICAgZnVuY3Rpb24gc3BlZWRVcCh4KSB7CiAgICAgICAgcmV0dXJuIC41ICogeCArIDMwMDsgLy8gcGFyYWJvbGEgdGhyb3VnaCAoNDAwLDUwMDsgNjAwLDYwMDsgMTgwMCwxMjAwKQogICAgfQoKICAgIHZhciBTbGlkZXNob3cgPSB7CgogICAgICAgIG1peGluczogW1NsaWRlcl0sCgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIGFuaW1hdGlvbjogU3RyaW5nCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBhbmltYXRpb246ICdzbGlkZScsCiAgICAgICAgICAgIGNsc0FjdGl2YXRlZDogJ3VrLXRyYW5zaXRpb24tYWN0aXZlJywKICAgICAgICAgICAgQW5pbWF0aW9uczogQW5pbWF0aW9ucywKICAgICAgICAgICAgVHJhbnNpdGlvbmVyOiBUcmFuc2l0aW9uZXIKICAgICAgICB9LAoKICAgICAgICBjb21wdXRlZDogewoKICAgICAgICAgICAgYW5pbWF0aW9uOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uOwogICAgICAgICAgICAgICAgdmFyIEFuaW1hdGlvbnMgPSByZWYuQW5pbWF0aW9uczsKCiAgICAgICAgICAgICAgICByZXR1cm4gYXNzaWduKGFuaW1hdGlvbiBpbiBBbmltYXRpb25zID8gQW5pbWF0aW9uc1thbmltYXRpb25dIDogQW5pbWF0aW9ucy5zbGlkZSwge25hbWU6IGFuaW1hdGlvbn0pOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgdHJhbnNpdGlvbk9wdGlvbnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHthbmltYXRpb246IHRoaXMuYW5pbWF0aW9ufTsKICAgICAgICAgICAgfQoKICAgICAgICB9LAoKICAgICAgICBldmVudHM6IHsKCiAgICAgICAgICAgICdpdGVtc2hvdyBpdGVtaGlkZSBpdGVtc2hvd24gaXRlbWhpZGRlbic6IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7CgogICAgICAgICAgICAgICAgdGhpcy4kdXBkYXRlKHRhcmdldCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBiZWZvcmVpdGVtc2hvdzogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDsKCiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0YXJnZXQsIHRoaXMuY2xzQWN0aXZlKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGl0ZW1zaG93bjogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDsKCiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0YXJnZXQsIHRoaXMuY2xzQWN0aXZhdGVkKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGl0ZW1oaWRkZW46IGZ1bmN0aW9uKHJlZikgewogICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7CgogICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSwgdGhpcy5jbHNBY3RpdmF0ZWQpOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9OwoKICAgIHZhciBsaWdodGJveFBhbmVsID0gewoKICAgICAgICBtaXhpbnM6IFtDb250YWluZXIsIE1vZGFsLCBUb2dnbGFibGUsIFNsaWRlc2hvd10sCgogICAgICAgIGZ1bmN0aW9uYWw6IHRydWUsCgogICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgIGRlbGF5Q29udHJvbHM6IE51bWJlciwKICAgICAgICAgICAgcHJlbG9hZDogTnVtYmVyLAogICAgICAgICAgICB2aWRlb0F1dG9wbGF5OiBCb29sZWFuLAogICAgICAgICAgICB0ZW1wbGF0ZTogU3RyaW5nCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHsKICAgICAgICAgICAgcHJlbG9hZDogMSwKICAgICAgICAgICAgdmlkZW9BdXRvcGxheTogZmFsc2UsCiAgICAgICAgICAgIGRlbGF5Q29udHJvbHM6IDMwMDAsCiAgICAgICAgICAgIGl0ZW1zOiBbXSwKICAgICAgICAgICAgY2xzOiAndWstb3BlbicsCiAgICAgICAgICAgIGNsc1BhZ2U6ICd1ay1saWdodGJveC1wYWdlJywKICAgICAgICAgICAgc2VsTGlzdDogJy51ay1saWdodGJveC1pdGVtcycsCiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstbGlnaHRib3gtaXRlbScsCiAgICAgICAgICAgIHNlbENsb3NlOiAnLnVrLWNsb3NlLWxhcmdlJywKICAgICAgICAgICAgc2VsQ2FwdGlvbjogJy51ay1saWdodGJveC1jYXB0aW9uJywKICAgICAgICAgICAgcGF1c2VPbkhvdmVyOiBmYWxzZSwKICAgICAgICAgICAgdmVsb2NpdHk6IDIsCiAgICAgICAgICAgIEFuaW1hdGlvbnM6IEFuaW1hdGlvbnMkMSwKICAgICAgICAgICAgdGVtcGxhdGU6ICI8ZGl2IGNsYXNzPVwidWstbGlnaHRib3ggdWstb3ZlcmZsb3ctaGlkZGVuXCI+IDx1bCBjbGFzcz1cInVrLWxpZ2h0Ym94LWl0ZW1zXCI+PC91bD4gPGRpdiBjbGFzcz1cInVrLWxpZ2h0Ym94LXRvb2xiYXIgdWstcG9zaXRpb24tdG9wIHVrLXRleHQtcmlnaHQgdWstdHJhbnNpdGlvbi1zbGlkZS10b3AgdWstdHJhbnNpdGlvbi1vcGFxdWVcIj4gPGJ1dHRvbiBjbGFzcz1cInVrLWxpZ2h0Ym94LXRvb2xiYXItaWNvbiB1ay1jbG9zZS1sYXJnZVwiIHR5cGU9XCJidXR0b25cIiB1ay1jbG9zZT48L2J1dHRvbj4gPC9kaXY+IDxhIGNsYXNzPVwidWstbGlnaHRib3gtYnV0dG9uIHVrLXBvc2l0aW9uLWNlbnRlci1sZWZ0IHVrLXBvc2l0aW9uLW1lZGl1bSB1ay10cmFuc2l0aW9uLWZhZGVcIiBocmVmPVwiI1wiIHVrLXNsaWRlbmF2LXByZXZpb3VzIHVrLWxpZ2h0Ym94LWl0ZW09XCJwcmV2aW91c1wiPjwvYT4gPGEgY2xhc3M9XCJ1ay1saWdodGJveC1idXR0b24gdWstcG9zaXRpb24tY2VudGVyLXJpZ2h0IHVrLXBvc2l0aW9uLW1lZGl1bSB1ay10cmFuc2l0aW9uLWZhZGVcIiBocmVmPVwiI1wiIHVrLXNsaWRlbmF2LW5leHQgdWstbGlnaHRib3gtaXRlbT1cIm5leHRcIj48L2E+IDxkaXYgY2xhc3M9XCJ1ay1saWdodGJveC10b29sYmFyIHVrLWxpZ2h0Ym94LWNhcHRpb24gdWstcG9zaXRpb24tYm90dG9tIHVrLXRleHQtY2VudGVyIHVrLXRyYW5zaXRpb24tc2xpZGUtYm90dG9tIHVrLXRyYW5zaXRpb24tb3BhcXVlXCI+PC9kaXY+IDwvZGl2PiIKICAgICAgICB9KTsgfSwKCiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24oKSB7CgogICAgICAgICAgICB2YXIgJGVsID0gJCh0aGlzLnRlbXBsYXRlKTsKICAgICAgICAgICAgdmFyIGxpc3QgPSAkKHRoaXMuc2VsTGlzdCwgJGVsKTsKICAgICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFwcGVuZChsaXN0LCAnPGxpPjwvbGk+Jyk7IH0pOwoKICAgICAgICAgICAgdGhpcy4kbW91bnQoYXBwZW5kKHRoaXMuY29udGFpbmVyLCAkZWwpKTsKCiAgICAgICAgfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIGNhcHRpb246IGZ1bmN0aW9uKHJlZiwgJGVsKSB7CiAgICAgICAgICAgICAgICB2YXIgc2VsQ2FwdGlvbiA9IHJlZi5zZWxDYXB0aW9uOwoKICAgICAgICAgICAgICAgIHJldHVybiAkKCcudWstbGlnaHRib3gtY2FwdGlvbicsICRlbCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiBbCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogKHBvaW50ZXJNb3ZlICsgIiAiICsgcG9pbnRlckRvd24gKyAiIGtleWRvd24iKSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiAnc2hvd0NvbnRyb2xzJwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLAoKICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsCgogICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbFNsaWRlczsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoZS5kZWZhdWx0UHJldmVudGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvd24nLAoKICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93Q29udHJvbHMoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogJ2hpZGUnLAoKICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZUNvbnRyb2xzKCk7CgogICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSk7CiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdG9wKHRoaXMuc2xpZGVzKTsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogJ2hpZGRlbicsCgogICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRkZXN0cm95KHRydWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAna2V5dXAnLAoKICAgICAgICAgICAgICAgIGVsOiBkb2N1bWVudCwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1RvZ2dsZWQodGhpcy4kZWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS5rZXlDb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coJ3ByZXZpb3VzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygnbmV4dCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVpdGVtc2hvdycsCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkgewoKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnYWJsZSA9IGZhbHNlOwoKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlTm93KHRoaXMuJGVsLCB0cnVlKTsKCiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmltYXRpb24gPSBBbmltYXRpb25zJDFbJ3NjYWxlJ107CiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZS50YXJnZXQsIHRoaXMuY2xzQWN0aXZlKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnNwbGljZSgxLCAwLCB0aGlzLmluZGV4KTsKCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtc2hvdycsCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7CgoKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGluZGV4KHRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiQxID0gdGhpcy5nZXRJdGVtKGkpOwogICAgICAgICAgICAgICAgICAgIHZhciBjYXB0aW9uID0gcmVmJDEuY2FwdGlvbjsKCiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuY2FwdGlvbiwgJ2Rpc3BsYXknLCBjYXB0aW9uID8gJycgOiAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgIGh0bWwodGhpcy5jYXB0aW9uLCBjYXB0aW9uKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPD0gdGhpcy5wcmVsb2FkOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkSXRlbSh0aGlzLmdldEluZGV4KGkgKyBqKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZEl0ZW0odGhpcy5nZXRJbmRleChpIC0gaikpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtc2hvd24nLAoKICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dhYmxlID0gdGhpcy4kcHJvcHMuZHJhZ2dhYmxlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbWxvYWQnLAoKICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKF8sIGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICAgICAgICAgIHZhciBzb3VyY2UgPSBpdGVtLnNvdXJjZTsKICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGl0ZW0udHlwZTsKICAgICAgICAgICAgICAgICAgICB2YXIgYWx0ID0gaXRlbS5hbHQ7CgogICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SXRlbShpdGVtLCAnPHNwYW4gdWstc3Bpbm5lcj48L3NwYW4+Jyk7CgogICAgICAgICAgICAgICAgICAgIGlmICghc291cmNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaGVzOwoKICAgICAgICAgICAgICAgICAgICAvLyBJbWFnZQogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnaW1hZ2UnIHx8IHNvdXJjZS5tYXRjaCgvXC4oanAoZSk/Z3xwbmd8Z2lmfHN2Z3x3ZWJwKSgkfFw/KS9pKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2Uoc291cmNlKS50aGVuKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGltZykgeyByZXR1cm4gdGhpcyQxLnNldEl0ZW0oaXRlbSwgKCI8aW1nIHdpZHRoPVwiIiArIChpbWcud2lkdGgpICsgIlwiIGhlaWdodD1cIiIgKyAoaW1nLmhlaWdodCkgKyAiXCIgc3JjPVwiIiArIHNvdXJjZSArICJcIiBhbHQ9XCIiICsgKGFsdCA/IGFsdCA6ICcnKSArICJcIj4iKSk7IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuc2V0RXJyb3IoaXRlbSk7IH0KICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZpZGVvCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndmlkZW8nIHx8IHNvdXJjZS5tYXRjaCgvXC4obXA0fHdlYm18b2d2KSgkfFw/KS9pKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvID0gJCgoIjx2aWRlbyBjb250cm9scyBwbGF5c2lubGluZSIgKyAoaXRlbS5wb3N0ZXIgPyAoIiBwb3N0ZXI9XCIiICsgKGl0ZW0ucG9zdGVyKSArICJcIiIpIDogJycpICsgIiB1ay12aWRlbz1cIiIgKyAodGhpcy52aWRlb0F1dG9wbGF5KSArICJcIj48L3ZpZGVvPiIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih2aWRlbywgJ3NyYycsIHNvdXJjZSk7CgogICAgICAgICAgICAgICAgICAgICAgICBvbmNlKHZpZGVvLCAnZXJyb3IgbG9hZGVkbWV0YWRhdGEnLCBmdW5jdGlvbiAodHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdlcnJvcicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2V0RXJyb3IoaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIodmlkZW8sIHt3aWR0aDogdmlkZW8udmlkZW9XaWR0aCwgaGVpZ2h0OiB2aWRlby52aWRlb0hlaWdodH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zZXRJdGVtKGl0ZW0sIHZpZGVvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBJZnJhbWUKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdpZnJhbWUnIHx8IHNvdXJjZS5tYXRjaCgvXC4oaHRtbHxwaHApKCR8XD8pL2kpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEl0ZW0oaXRlbSwgKCI8aWZyYW1lIGNsYXNzPVwidWstbGlnaHRib3gtaWZyYW1lXCIgc3JjPVwiIiArIHNvdXJjZSArICJcIiBmcmFtZWJvcmRlcj1cIjBcIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+IikpOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gWW91VHViZQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKG1hdGNoZXMgPSBzb3VyY2UubWF0Y2goL1wvXC8uKj95b3V0dWJlKC1ub2Nvb2tpZSk/XC5bYS16XStcL3dhdGNoXD92PShbXiZcc10rKS8pIHx8IHNvdXJjZS5tYXRjaCgvKCl5b3V0dVwuYmVcLyguKikvKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IG1hdGNoZXNbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZXRJZnJhbWUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB3aWR0aCA9PT0gdm9pZCAwICkgd2lkdGggPSA2NDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGhlaWdodCA9PT0gdm9pZCAwICkgaGVpZ2h0ID0gNDUwOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzJDEuc2V0SXRlbShpdGVtLCBnZXRJZnJhbWUoKCJodHRwczovL3d3dy55b3V0dWJlIiArIChtYXRjaGVzWzFdIHx8ICcnKSArICIuY29tL2VtYmVkLyIgKyBpZCksIHdpZHRoLCBoZWlnaHQsIHRoaXMkMS52aWRlb0F1dG9wbGF5KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICBnZXRJbWFnZSgoImh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpLyIgKyBpZCArICIvbWF4cmVzZGVmYXVsdC5qcGciKSkudGhlbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSByZWYud2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IHJlZi5oZWlnaHQ7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFlvdVR1YmUgZGVmYXVsdCA0MDQgdGh1bWIsIGZhbGwgYmFjayB0byBsb3cgcmVzb2x1dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PT0gMTIwICYmIGhlaWdodCA9PT0gOTApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2UoKCJodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS8iICsgaWQgKyAiLzAuanBnIikpLnRoZW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gcmVmLndpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSByZWYuaGVpZ2h0OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0SWZyYW1lKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SWZyYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SWZyYW1lKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJZnJhbWUKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZpbWVvCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgobWF0Y2hlcyA9IHNvdXJjZS5tYXRjaCgvKFwvXC8uKj8pdmltZW9cLlthLXpdK1wvKFswLTldKykuKj8vKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGFqYXgoKCJodHRwczovL3ZpbWVvLmNvbS9hcGkvb2VtYmVkLmpzb24/bWF4d2lkdGg9MTkyMCZ1cmw9IiArIChlbmNvZGVVUkkoc291cmNlKSkpLCB7cmVzcG9uc2VUeXBlOiAnanNvbicsIHdpdGhDcmVkZW50aWFsczogZmFsc2V9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHJlZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmX3Jlc3BvbnNlID0gcmVmLnJlc3BvbnNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gcmVmX3Jlc3BvbnNlLmhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gcmVmX3Jlc3BvbnNlLndpZHRoOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMkMS5zZXRJdGVtKGl0ZW0sIGdldElmcmFtZSgoImh0dHBzOi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8iICsgKG1hdGNoZXNbMl0pKSwgd2lkdGgsIGhlaWdodCwgdGhpcyQxLnZpZGVvQXV0b3BsYXkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuc2V0RXJyb3IoaXRlbSk7IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgIF0sCgogICAgICAgIG1ldGhvZHM6IHsKCiAgICAgICAgICAgIGxvYWRJdGVtOiBmdW5jdGlvbihpbmRleCkgewogICAgICAgICAgICAgICAgaWYgKCBpbmRleCA9PT0gdm9pZCAwICkgaW5kZXggPSB0aGlzLmluZGV4OwoKCiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0SXRlbShpbmRleCk7CgogICAgICAgICAgICAgICAgaWYgKGl0ZW0uY29udGVudCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaXRlbWxvYWQnLCBbaXRlbV0pOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZ2V0SXRlbTogZnVuY3Rpb24oaW5kZXgpIHsKICAgICAgICAgICAgICAgIGlmICggaW5kZXggPT09IHZvaWQgMCApIGluZGV4ID0gdGhpcy5pbmRleDsKCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtc1tpbmRleF0gfHwge307CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBzZXRJdGVtOiBmdW5jdGlvbihpdGVtLCBjb250ZW50KSB7CiAgICAgICAgICAgICAgICBhc3NpZ24oaXRlbSwge2NvbnRlbnQ6IGNvbnRlbnR9KTsKICAgICAgICAgICAgICAgIHZhciBlbCA9IGh0bWwodGhpcy5zbGlkZXNbdGhpcy5pdGVtcy5pbmRleE9mKGl0ZW0pXSwgY29udGVudCk7CiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaXRlbWxvYWRlZCcsIFt0aGlzLCBlbF0pOwogICAgICAgICAgICAgICAgdGhpcy4kdXBkYXRlKGVsKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHNldEVycm9yOiBmdW5jdGlvbihpdGVtKSB7CiAgICAgICAgICAgICAgICB0aGlzLnNldEl0ZW0oaXRlbSwgJzxzcGFuIHVrLWljb249Imljb246IGJvbHQ7IHJhdGlvOiAyIj48L3NwYW4+Jyk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBzaG93Q29udHJvbHM6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNvbnRyb2xzVGltZXIpOwogICAgICAgICAgICAgICAgdGhpcy5jb250cm9sc1RpbWVyID0gc2V0VGltZW91dCh0aGlzLmhpZGVDb250cm9scywgdGhpcy5kZWxheUNvbnRyb2xzKTsKCiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWFjdGl2ZScsICd1ay10cmFuc2l0aW9uLWFjdGl2ZScpOwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGhpZGVDb250cm9sczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgJ3VrLWFjdGl2ZScsICd1ay10cmFuc2l0aW9uLWFjdGl2ZScpOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9OwoKICAgIGZ1bmN0aW9uIGdldElmcmFtZShzcmMsIHdpZHRoLCBoZWlnaHQsIGF1dG9wbGF5KSB7CiAgICAgICAgcmV0dXJuICgiPGlmcmFtZSBzcmM9XCIiICsgc3JjICsgIlwiIHdpZHRoPVwiIiArIHdpZHRoICsgIlwiIGhlaWdodD1cIiIgKyBoZWlnaHQgKyAiXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDEwMCU7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7XCIgZnJhbWVib3JkZXI9XCIwXCIgYWxsb3dmdWxsc2NyZWVuIHVrLXZpZGVvPVwiYXV0b3BsYXk6ICIgKyBhdXRvcGxheSArICJcIiB1ay1yZXNwb25zaXZlPjwvaWZyYW1lPiIpOwogICAgfQoKICAgIHZhciBMaWdodGJveCA9IHsKCiAgICAgICAgaW5zdGFsbDogaW5zdGFsbCQyLAoKICAgICAgICBwcm9wczoge3RvZ2dsZTogU3RyaW5nfSwKCiAgICAgICAgZGF0YToge3RvZ2dsZTogJ2EnfSwKCiAgICAgICAgY29tcHV0ZWQ6IHsKCiAgICAgICAgICAgIHRvZ2dsZXM6IHsKCiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRvZ2dsZSA9IHJlZi50b2dnbGU7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiAkJCh0b2dnbGUsICRlbCk7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIHdhdGNoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBpdGVtczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdW5pcXVlQnkodGhpcy50b2dnbGVzLm1hcCh0b0l0ZW0pLCAnc291cmNlJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5oaWRlKCk7CiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiBbCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJywKCiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy50b2dnbGUpICsgIjpub3QoLnVrLWRpc2FibGVkKSIpOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIHZhciBzcmMgPSBkYXRhKGUuY3VycmVudCwgJ2hyZWYnKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coZmluZEluZGV4KHRoaXMuaXRlbXMsIGZ1bmN0aW9uIChyZWYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvdXJjZSA9IHJlZi5zb3VyY2U7CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlID09PSBzcmM7CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICBdLAoKICAgICAgICBtZXRob2RzOiB7CgogICAgICAgICAgICBzaG93OiBmdW5jdGlvbihpbmRleCkgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgICAgIHRoaXMucGFuZWwgPSB0aGlzLnBhbmVsIHx8IHRoaXMuJGNyZWF0ZSgnbGlnaHRib3hQYW5lbCcsIGFzc2lnbih7fSwgdGhpcy4kcHJvcHMsIHtpdGVtczogdGhpcy5pdGVtc30pKTsKCiAgICAgICAgICAgICAgICBvbih0aGlzLnBhbmVsLiRlbCwgJ2hpZGRlbicsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5wYW5lbCA9IGZhbHNlOyB9KTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbC5zaG93KGluZGV4KTsKCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbCAmJiB0aGlzLnBhbmVsLmhpZGUoKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH07CgogICAgZnVuY3Rpb24gaW5zdGFsbCQyKFVJa2l0LCBMaWdodGJveCkgewoKICAgICAgICBpZiAoIVVJa2l0LmxpZ2h0Ym94UGFuZWwpIHsKICAgICAgICAgICAgVUlraXQuY29tcG9uZW50KCdsaWdodGJveFBhbmVsJywgbGlnaHRib3hQYW5lbCk7CiAgICAgICAgfQoKICAgICAgICBhc3NpZ24oCiAgICAgICAgICAgIExpZ2h0Ym94LnByb3BzLAogICAgICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2xpZ2h0Ym94UGFuZWwnKS5vcHRpb25zLnByb3BzCiAgICAgICAgKTsKCiAgICB9CgogICAgZnVuY3Rpb24gdG9JdGVtKGVsKSB7CiAgICAgICAgcmV0dXJuIFsnaHJlZicsICdjYXB0aW9uJywgJ3R5cGUnLCAncG9zdGVyJywgJ2FsdCddLnJlZHVjZShmdW5jdGlvbiAob2JqLCBhdHRyKSB7CiAgICAgICAgICAgIG9ialthdHRyID09PSAnaHJlZicgPyAnc291cmNlJyA6IGF0dHJdID0gZGF0YShlbCwgYXR0cik7CiAgICAgICAgICAgIHJldHVybiBvYmo7CiAgICAgICAgfSwge30pOwogICAgfQoKICAgIHZhciBvYmo7CgogICAgdmFyIGNvbnRhaW5lcnMgPSB7fTsKCiAgICB2YXIgTm90aWZpY2F0aW9uID0gewoKICAgICAgICBmdW5jdGlvbmFsOiB0cnVlLAoKICAgICAgICBhcmdzOiBbJ21lc3NhZ2UnLCAnc3RhdHVzJ10sCgogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgbWVzc2FnZTogJycsCiAgICAgICAgICAgIHN0YXR1czogJycsCiAgICAgICAgICAgIHRpbWVvdXQ6IDUwMDAsCiAgICAgICAgICAgIGdyb3VwOiBudWxsLAogICAgICAgICAgICBwb3M6ICd0b3AtY2VudGVyJywKICAgICAgICAgICAgY2xzQ2xvc2U6ICd1ay1ub3RpZmljYXRpb24tY2xvc2UnLAogICAgICAgICAgICBjbHNNc2c6ICd1ay1ub3RpZmljYXRpb24tbWVzc2FnZScKICAgICAgICB9LAoKICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDMsCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICBtYXJnaW5Qcm9wOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBwb3MgPSByZWYucG9zOwoKICAgICAgICAgICAgICAgIHJldHVybiAoIm1hcmdpbiIgKyAoc3RhcnRzV2l0aChwb3MsICd0b3AnKSA/ICdUb3AnIDogJ0JvdHRvbScpKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHN0YXJ0UHJvcHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIG9iajsKCiAgICAgICAgICAgICAgICByZXR1cm4gKCBvYmogPSB7b3BhY2l0eTogMH0sIG9ialt0aGlzLm1hcmdpblByb3BdID0gLXRoaXMuJGVsLm9mZnNldEhlaWdodCwgb2JqICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24oKSB7CgogICAgICAgICAgICBpZiAoIWNvbnRhaW5lcnNbdGhpcy5wb3NdKSB7CiAgICAgICAgICAgICAgICBjb250YWluZXJzW3RoaXMucG9zXSA9IGFwcGVuZCh0aGlzLiRjb250YWluZXIsICgiPGRpdiBjbGFzcz1cInVrLW5vdGlmaWNhdGlvbiB1ay1ub3RpZmljYXRpb24tIiArICh0aGlzLnBvcykgKyAiXCI+PC9kaXY+IikpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgY29udGFpbmVyID0gY3NzKGNvbnRhaW5lcnNbdGhpcy5wb3NdLCAnZGlzcGxheScsICdibG9jaycpOwoKICAgICAgICAgICAgdGhpcy4kbW91bnQoYXBwZW5kKGNvbnRhaW5lciwKICAgICAgICAgICAgICAgICgiPGRpdiBjbGFzcz1cIiIgKyAodGhpcy5jbHNNc2cpICsgKHRoaXMuc3RhdHVzID8gKCIgIiArICh0aGlzLmNsc01zZykgKyAiLSIgKyAodGhpcy5zdGF0dXMpKSA6ICcnKSArICJcIj4gPGEgaHJlZj1cIiNcIiBjbGFzcz1cIiIgKyAodGhpcy5jbHNDbG9zZSkgKyAiXCIgZGF0YS11ay1jbG9zZT48L2E+IDxkaXY+IiArICh0aGlzLm1lc3NhZ2UpICsgIjwvZGl2PiA8L2Rpdj4iKQogICAgICAgICAgICApKTsKCiAgICAgICAgfSwKCiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CiAgICAgICAgICAgIHZhciBvYmo7CgoKICAgICAgICAgICAgdmFyIG1hcmdpbiA9IHRvRmxvYXQoY3NzKHRoaXMuJGVsLCB0aGlzLm1hcmdpblByb3ApKTsKICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydCgKICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5zdGFydFByb3BzKSwKICAgICAgICAgICAgICAgICggb2JqID0ge29wYWNpdHk6IDF9LCBvYmpbdGhpcy5tYXJnaW5Qcm9wXSA9IG1hcmdpbiwgb2JqICkKICAgICAgICAgICAgKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzJDEudGltZW91dCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMkMS50aW1lciA9IHNldFRpbWVvdXQodGhpcyQxLmNsb3NlLCB0aGlzJDEudGltZW91dCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICB9LAoKICAgICAgICBldmVudHM6ICggb2JqID0gewoKICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmPSIjIl0sYVtocmVmPSIiXScpKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOwogICAgICAgICAgICB9CgogICAgICAgIH0sIG9ialtwb2ludGVyRW50ZXJdID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZXIpIHsKICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIG9ialtwb2ludGVyTGVhdmVdID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZW91dCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuY2xvc2UsIHRoaXMudGltZW91dCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIG9iaiApLAoKICAgICAgICBtZXRob2RzOiB7CgogICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oaW1tZWRpYXRlKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICAgICAgdmFyIHJlbW92ZUZuID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMkMS4kZWwsICdjbG9zZScsIFt0aGlzJDFdKTsKICAgICAgICAgICAgICAgICAgICByZW1vdmUodGhpcyQxLiRlbCk7CgogICAgICAgICAgICAgICAgICAgIGlmICghY29udGFpbmVyc1t0aGlzJDEucG9zXS5jaGlsZHJlbi5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGNvbnRhaW5lcnNbdGhpcyQxLnBvc10sICdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lcikgewogICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoaW1tZWRpYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRm4oKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydCh0aGlzLiRlbCwgdGhpcy5zdGFydFByb3BzKS50aGVuKHJlbW92ZUZuKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICBmdW5jdGlvbiBpbnN0YWxsJDMoVUlraXQpIHsKICAgICAgICBVSWtpdC5ub3RpZmljYXRpb24uY2xvc2VBbGwgPSBmdW5jdGlvbiAoZ3JvdXAsIGltbWVkaWF0ZSkgewogICAgICAgICAgICBhcHBseShkb2N1bWVudC5ib2R5LCBmdW5jdGlvbiAoZWwpIHsKICAgICAgICAgICAgICAgIHZhciBub3RpZmljYXRpb24gPSBVSWtpdC5nZXRDb21wb25lbnQoZWwsICdub3RpZmljYXRpb24nKTsKICAgICAgICAgICAgICAgIGlmIChub3RpZmljYXRpb24gJiYgKCFncm91cCB8fCBncm91cCA9PT0gbm90aWZpY2F0aW9uLmdyb3VwKSkgewogICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5jbG9zZShpbW1lZGlhdGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9OwogICAgfQoKICAgIHZhciBwcm9wcyA9IFsneCcsICd5JywgJ2JneCcsICdiZ3knLCAncm90YXRlJywgJ3NjYWxlJywgJ2NvbG9yJywgJ2JhY2tncm91bmRDb2xvcicsICdib3JkZXJDb2xvcicsICdvcGFjaXR5JywgJ2JsdXInLCAnaHVlJywgJ2dyYXlzY2FsZScsICdpbnZlcnQnLCAnc2F0dXJhdGUnLCAnc2VwaWEnLCAnZm9wYWNpdHknLCAnc3Ryb2tlJ107CgogICAgdmFyIFBhcmFsbGF4ID0gewoKICAgICAgICBtaXhpbnM6IFtNZWRpYV0sCgogICAgICAgIHByb3BzOiBwcm9wcy5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wKSB7CiAgICAgICAgICAgIHByb3BzW3Byb3BdID0gJ2xpc3QnOwogICAgICAgICAgICByZXR1cm4gcHJvcHM7CiAgICAgICAgfSwge30pLAoKICAgICAgICBkYXRhOiBwcm9wcy5yZWR1Y2UoZnVuY3Rpb24gKGRhdGEsIHByb3ApIHsKICAgICAgICAgICAgZGF0YVtwcm9wXSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgfSwge30pLAoKICAgICAgICBjb21wdXRlZDogewoKICAgICAgICAgICAgcHJvcHM6IGZ1bmN0aW9uKHByb3BlcnRpZXMsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wKSB7CgogICAgICAgICAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZChwcm9wZXJ0aWVzW3Byb3BdKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHM7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB2YXIgaXNDb2xvciA9IHByb3AubWF0Y2goL2NvbG9yL2kpOwogICAgICAgICAgICAgICAgICAgIHZhciBpc0Nzc1Byb3AgPSBpc0NvbG9yIHx8IHByb3AgPT09ICdvcGFjaXR5JzsKCiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcywgYmdQb3MsIGRpZmY7CiAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXBzID0gcHJvcGVydGllc1twcm9wXS5zbGljZSgwKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ3NzUHJvcCkgewogICAgICAgICAgICAgICAgICAgICAgICBjc3MoJGVsLCBwcm9wLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoc3RlcHMubGVuZ3RoIDwgMikgewogICAgICAgICAgICAgICAgICAgICAgICBzdGVwcy51bnNoaWZ0KChwcm9wID09PSAnc2NhbGUnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNDc3NQcm9wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjc3MoJGVsLCBwcm9wKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMCkgfHwgMCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB2YXIgdW5pdCA9IGdldFVuaXQoc3RlcHMpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoaXNDb2xvcikgewoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9ICRlbC5zdHlsZTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbG9yID0gcmVmLmNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gcGFyc2VDb2xvcigkZWwsIHN0ZXApOyB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgJGVsLnN0eWxlLmNvbG9yID0gY29sb3I7CgogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRzV2l0aChwcm9wLCAnYmcnKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBwcm9wID09PSAnYmd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJzsKICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMgPSBzdGVwcy5tYXAoZnVuY3Rpb24gKHN0ZXApIHsgcmV0dXJuIHRvUHgoc3RlcCwgYXR0ciwgdGhpcyQxLiRlbCk7IH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgY3NzKCRlbCwgKCJiYWNrZ3JvdW5kLXBvc2l0aW9uLSIgKyAocHJvcFsyXSkpLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJnUG9zID0gY3NzKCRlbCwgJ2JhY2tncm91bmRQb3NpdGlvbicpLnNwbGl0KCcgJylbcHJvcFsyXSA9PT0gJ3gnID8gMCA6IDFdOyAvLyBJRSAxMSBjYW4ndCByZWFkIGJhY2tncm91bmQtcG9zaXRpb24tW3h8eV0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuY292ZXJzKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1pbiA9IE1hdGgubWluLmFwcGx5KE1hdGgsIHN0ZXBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXggPSBNYXRoLm1heC5hcHBseShNYXRoLCBzdGVwcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZG93biA9IHN0ZXBzLmluZGV4T2YobWluKSA8IHN0ZXBzLmluZGV4T2YobWF4KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmID0gbWF4IC0gbWluOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzID0gc3RlcHMubWFwKGZ1bmN0aW9uIChzdGVwKSB7IHJldHVybiBzdGVwIC0gKGRvd24gPyBtaW4gOiBtYXgpOyB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IChkb3duID8gLWRpZmYgOiAwKSArICJweCI7CgogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGJnUG9zOwoKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMgPSBzdGVwcy5tYXAodG9GbG9hdCk7CgogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgPT09ICdzdHJva2UnKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0ZXBzLnNvbWUoZnVuY3Rpb24gKHN0ZXApIHsgcmV0dXJuIHN0ZXA7IH0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSBnZXRNYXhQYXRoTGVuZ3RoKHRoaXMkMS4kZWwpOwogICAgICAgICAgICAgICAgICAgICAgICBjc3MoJGVsLCAnc3Ryb2tlRGFzaGFycmF5JywgbGVuZ3RoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bml0ID09PSAnJScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzID0gc3RlcHMubWFwKGZ1bmN0aW9uIChzdGVwKSB7IHJldHVybiBzdGVwICogbGVuZ3RoIC8gMTAwOyB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMgPSBzdGVwcy5yZXZlcnNlKCk7CgogICAgICAgICAgICAgICAgICAgICAgICBwcm9wID0gJ3N0cm9rZURhc2hvZmZzZXQnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHJvcHNbcHJvcF0gPSB7c3RlcHM6IHN0ZXBzLCB1bml0OiB1bml0LCBwb3M6IHBvcywgYmdQb3M6IGJnUG9zLCBkaWZmOiBkaWZmfTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzOwoKICAgICAgICAgICAgICAgIH0sIHt9KTsKCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBiZ1Byb3BzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKICAgICAgICAgICAgICAgIHJldHVybiBbJ2JneCcsICdiZ3knXS5maWx0ZXIoZnVuY3Rpb24gKGJnKSB7IHJldHVybiBiZyBpbiB0aGlzJDEucHJvcHM7IH0pOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgY292ZXJzOiBmdW5jdGlvbihfLCAkZWwpIHsKICAgICAgICAgICAgICAgIHJldHVybiBjb3ZlcnMoJGVsKTsKICAgICAgICAgICAgfQoKICAgICAgICB9LAoKICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBkZWxldGUgdGhpcy5faW1hZ2U7CiAgICAgICAgfSwKCiAgICAgICAgdXBkYXRlOiB7CgogICAgICAgICAgICByZWFkOiBmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICAgICAgZGF0YS5hY3RpdmUgPSB0aGlzLm1hdGNoTWVkaWE7CgogICAgICAgICAgICAgICAgaWYgKCFkYXRhLmFjdGl2ZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuaW1hZ2UgJiYgdGhpcy5jb3ZlcnMgJiYgdGhpcy5iZ1Byb3BzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHZhciBzcmMgPSBjc3ModGhpcy4kZWwsICdiYWNrZ3JvdW5kSW1hZ2UnKS5yZXBsYWNlKC9ebm9uZXx1cmxcKFsiJ10/KC4rPylbIiddP1wpJC8sICckMScpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoc3JjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaW1nLnNyYyA9IHNyYzsKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5pbWFnZSA9IGltZzsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW1nLm5hdHVyYWxXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS4kZW1pdCgpOyB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgaW1hZ2UgPSBkYXRhLmltYWdlOwoKICAgICAgICAgICAgICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLm5hdHVyYWxXaWR0aCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgZGltRWwgPSB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuJGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy4kZWwub2Zmc2V0SGVpZ2h0CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgdmFyIGRpbUltYWdlID0gewogICAgICAgICAgICAgICAgICAgIHdpZHRoOiBpbWFnZS5uYXR1cmFsV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpbWFnZS5uYXR1cmFsSGVpZ2h0CiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIHZhciBkaW0gPSBEaW1lbnNpb25zLmNvdmVyKGRpbUltYWdlLCBkaW1FbCk7CgogICAgICAgICAgICAgICAgdGhpcy5iZ1Byb3BzLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHsKCiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMkMS5wcm9wc1twcm9wXTsKICAgICAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IHJlZi5kaWZmOwogICAgICAgICAgICAgICAgICAgIHZhciBiZ1BvcyA9IHJlZi5iZ1BvczsKICAgICAgICAgICAgICAgICAgICB2YXIgc3RlcHMgPSByZWYuc3RlcHM7CiAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBwcm9wID09PSAnYmd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJzsKICAgICAgICAgICAgICAgICAgICB2YXIgc3BhbiA9IGRpbVthdHRyXSAtIGRpbUVsW2F0dHJdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoc3BhbiA8IGRpZmYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGltRWxbYXR0cl0gPSBkaW1bYXR0cl0gKyBkaWZmIC0gc3BhbjsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNwYW4gPiBkaWZmKSB7CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zUGVyY2VudGFnZSA9IGRpbUVsW2F0dHJdIC8gdG9QeChiZ1BvcywgYXR0ciwgdGhpcyQxLiRlbCk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zUGVyY2VudGFnZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnByb3BzW3Byb3BdLnN0ZXBzID0gc3RlcHMubWFwKGZ1bmN0aW9uIChzdGVwKSB7IHJldHVybiBzdGVwIC0gKHNwYW4gLSBkaWZmKSAvIHBvc1BlcmNlbnRhZ2U7IH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBkaW0gPSBEaW1lbnNpb25zLmNvdmVyKGRpbUltYWdlLCBkaW1FbCk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBkYXRhLmRpbSA9IGRpbTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBkaW0gPSByZWYuZGltOwogICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHJlZi5hY3RpdmU7CgoKICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKSB7CiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7YmFja2dyb3VuZFNpemU6ICcnLCBiYWNrZ3JvdW5kUmVwZWF0OiAnJ30pOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBkaW0gJiYgY3NzKHRoaXMuJGVsLCB7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZFNpemU6ICgoZGltLndpZHRoKSArICJweCAiICsgKGRpbS5oZWlnaHQpICsgInB4IiksCiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZFJlcGVhdDogJ25vLXJlcGVhdCcKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXQoKICAgICAgICB9LAoKICAgICAgICBtZXRob2RzOiB7CgogICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCiAgICAgICAgICAgICAgICBlYWNoKHRoaXMuZ2V0Q3NzKDApLCBmdW5jdGlvbiAoXywgcHJvcCkgeyByZXR1cm4gY3NzKHRoaXMkMS4kZWwsIHByb3AsICcnKTsgfSk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBnZXRDc3M6IGZ1bmN0aW9uKHBlcmNlbnQpIHsKCiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpczsKICAgICAgICAgICAgICAgIHZhciBwcm9wcyA9IHJlZi5wcm9wczsKICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wcykucmVkdWNlKGZ1bmN0aW9uIChjc3MsIHByb3ApIHsKCiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHByb3BzW3Byb3BdOwogICAgICAgICAgICAgICAgICAgIHZhciBzdGVwcyA9IHJlZi5zdGVwczsKICAgICAgICAgICAgICAgICAgICB2YXIgdW5pdCA9IHJlZi51bml0OwogICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSByZWYucG9zOwogICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGdldFZhbHVlKHN0ZXBzLCBwZXJjZW50KTsKCiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwcm9wKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmFuc2Zvcm1zCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd5JzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdCA9IHVuaXQgfHwgJ3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcy50cmFuc2Zvcm0gKz0gIiB0cmFuc2xhdGUiICsgKHVjZmlyc3QocHJvcCkpICsgIigiICsgKHRvRmxvYXQodmFsdWUpLnRvRml4ZWQodW5pdCA9PT0gJ3B4JyA/IDAgOiAyKSkgKyB1bml0ICsgIikiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm90YXRlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQgPSB1bml0IHx8ICdkZWcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzLnRyYW5zZm9ybSArPSAiIHJvdGF0ZSgiICsgKHZhbHVlICsgdW5pdCkgKyAiKSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2NhbGUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzLnRyYW5zZm9ybSArPSAiIHNjYWxlKCIgKyB2YWx1ZSArICIpIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmcgaW1hZ2UKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmd5JzoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmd4JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc1soImJhY2tncm91bmQtcG9zaXRpb24tIiArIChwcm9wWzJdKSldID0gImNhbGMoIiArIHBvcyArICIgKyAiICsgdmFsdWUgKyAicHgpIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sb3IKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29sb3InOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYWNrZ3JvdW5kQ29sb3InOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdib3JkZXJDb2xvcic6IHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmJDEgPSBnZXRTdGVwKHN0ZXBzLCBwZXJjZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IHJlZiQxWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVuZCA9IHJlZiQxWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSByZWYkMVsyXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NbcHJvcF0gPSAicmdiYSgiICsgKHN0YXJ0Lm1hcChmdW5jdGlvbiAodmFsdWUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSArIHAgKiAoZW5kW2ldIC0gdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gMyA/IHRvRmxvYXQodmFsdWUpIDogcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCcsJykpICsgIikiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ1NTIEZpbHRlcgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibHVyJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQgPSB1bml0IHx8ICdweCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MuZmlsdGVyICs9ICIgYmx1cigiICsgKHZhbHVlICsgdW5pdCkgKyAiKSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaHVlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQgPSB1bml0IHx8ICdkZWcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzLmZpbHRlciArPSAiIGh1ZS1yb3RhdGUoIiArICh2YWx1ZSArIHVuaXQpICsgIikiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZvcGFjaXR5JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQgPSB1bml0IHx8ICclJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcy5maWx0ZXIgKz0gIiBvcGFjaXR5KCIgKyAodmFsdWUgKyB1bml0KSArICIpIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmF5c2NhbGUnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbnZlcnQnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzYXR1cmF0ZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlcGlhJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQgPSB1bml0IHx8ICclJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcy5maWx0ZXIgKz0gIiAiICsgcHJvcCArICIoIiArICh2YWx1ZSArIHVuaXQpICsgIikiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NbcHJvcF0gPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHJldHVybiBjc3M7CgogICAgICAgICAgICAgICAgfSwge3RyYW5zZm9ybTogJycsIGZpbHRlcjogJyd9KTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH07CgogICAgZnVuY3Rpb24gcGFyc2VDb2xvcihlbCwgY29sb3IpIHsKICAgICAgICByZXR1cm4gY3NzKGNzcyhlbCwgJ2NvbG9yJywgY29sb3IpLCAnY29sb3InKQogICAgICAgICAgICAuc3BsaXQoL1soKSxdL2cpCiAgICAgICAgICAgIC5zbGljZSgxLCAtMSkKICAgICAgICAgICAgLmNvbmNhdCgxKQogICAgICAgICAgICAuc2xpY2UoMCwgNCkKICAgICAgICAgICAgLm1hcCh0b0Zsb2F0KTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRTdGVwKHN0ZXBzLCBwZXJjZW50KSB7CiAgICAgICAgdmFyIGNvdW50ID0gc3RlcHMubGVuZ3RoIC0gMTsKICAgICAgICB2YXIgaW5kZXggPSBNYXRoLm1pbihNYXRoLmZsb29yKGNvdW50ICogcGVyY2VudCksIGNvdW50IC0gMSk7CiAgICAgICAgdmFyIHN0ZXAgPSBzdGVwcy5zbGljZShpbmRleCwgaW5kZXggKyAyKTsKCiAgICAgICAgc3RlcC5wdXNoKHBlcmNlbnQgPT09IDEgPyAxIDogcGVyY2VudCAlICgxIC8gY291bnQpICogY291bnQpOwoKICAgICAgICByZXR1cm4gc3RlcDsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRWYWx1ZShzdGVwcywgcGVyY2VudCwgZGlnaXRzKSB7CiAgICAgICAgaWYgKCBkaWdpdHMgPT09IHZvaWQgMCApIGRpZ2l0cyA9IDI7CgogICAgICAgIHZhciByZWYgPSBnZXRTdGVwKHN0ZXBzLCBwZXJjZW50KTsKICAgICAgICB2YXIgc3RhcnQgPSByZWZbMF07CiAgICAgICAgdmFyIGVuZCA9IHJlZlsxXTsKICAgICAgICB2YXIgcCA9IHJlZlsyXTsKICAgICAgICByZXR1cm4gKGlzTnVtYmVyKHN0YXJ0KQogICAgICAgICAgICA/IHN0YXJ0ICsgTWF0aC5hYnMoc3RhcnQgLSBlbmQpICogcCAqIChzdGFydCA8IGVuZCA/IDEgOiAtMSkKICAgICAgICAgICAgOiArZW5kCiAgICAgICAgKS50b0ZpeGVkKGRpZ2l0cyk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0VW5pdChzdGVwcykgewogICAgICAgIHJldHVybiBzdGVwcy5yZWR1Y2UoZnVuY3Rpb24gKHVuaXQsIHN0ZXApIHsgcmV0dXJuIGlzU3RyaW5nKHN0ZXApICYmIHN0ZXAucmVwbGFjZSgvLXxcZC9nLCAnJykudHJpbSgpIHx8IHVuaXQ7IH0sICcnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBjb3ZlcnMoZWwpIHsKICAgICAgICB2YXIgcmVmID0gZWwuc3R5bGU7CiAgICAgICAgdmFyIGJhY2tncm91bmRTaXplID0gcmVmLmJhY2tncm91bmRTaXplOwogICAgICAgIHZhciBjb3ZlcnMgPSBjc3MoY3NzKGVsLCAnYmFja2dyb3VuZFNpemUnLCAnJyksICdiYWNrZ3JvdW5kU2l6ZScpID09PSAnY292ZXInOwogICAgICAgIGVsLnN0eWxlLmJhY2tncm91bmRTaXplID0gYmFja2dyb3VuZFNpemU7CiAgICAgICAgcmV0dXJuIGNvdmVyczsKICAgIH0KCiAgICB2YXIgUGFyYWxsYXgkMSA9IHsKCiAgICAgICAgbWl4aW5zOiBbUGFyYWxsYXhdLAoKICAgICAgICBwcm9wczogewogICAgICAgICAgICB0YXJnZXQ6IFN0cmluZywKICAgICAgICAgICAgdmlld3BvcnQ6IE51bWJlciwKICAgICAgICAgICAgZWFzaW5nOiBOdW1iZXIKICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIHRhcmdldDogZmFsc2UsCiAgICAgICAgICAgIHZpZXdwb3J0OiAxLAogICAgICAgICAgICBlYXNpbmc6IDEKICAgICAgICB9LAoKICAgICAgICBjb21wdXRlZDogewoKICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkgewogICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7CgogICAgICAgICAgICAgICAgcmV0dXJuIGdldE9mZnNldEVsZW1lbnQodGFyZ2V0ICYmIHF1ZXJ5KHRhcmdldCwgJGVsKSB8fCAkZWwpOwogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIHVwZGF0ZTogewoKICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmLCB0eXBlKSB7CiAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZi5wZXJjZW50OwogICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHJlZi5hY3RpdmU7CgoKICAgICAgICAgICAgICAgIGlmICh0eXBlICE9PSAnc2Nyb2xsJykgewogICAgICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHBlcmNlbnQ7CiAgICAgICAgICAgICAgICBwZXJjZW50ID0gZWFzZSQxKHNjcm9sbGVkT3Zlcih0aGlzLnRhcmdldCkgLyAodGhpcy52aWV3cG9ydCB8fCAxKSwgdGhpcy5lYXNpbmcpOwoKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgcGVyY2VudDogcGVyY2VudCwKICAgICAgICAgICAgICAgICAgICBzdHlsZTogcHJldiAhPT0gcGVyY2VudCA/IHRoaXMuZ2V0Q3NzKHBlcmNlbnQpIDogZmFsc2UKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgc3R5bGUgPSByZWYuc3R5bGU7CiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTsKCgogICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHN0eWxlICYmIGNzcyh0aGlzLiRlbCwgc3R5bGUpOwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAncmVzaXplJ10KICAgICAgICB9CgogICAgfTsKCiAgICBmdW5jdGlvbiBlYXNlJDEocGVyY2VudCwgZWFzaW5nKSB7CiAgICAgICAgcmV0dXJuIGNsYW1wKHBlcmNlbnQgKiAoMSAtIChlYXNpbmcgLSBlYXNpbmcgKiBwZXJjZW50KSkpOwogICAgfQoKICAgIC8vIFNWRyBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBmcm9tIEhUTUxFbGVtZW50CiAgICBmdW5jdGlvbiBnZXRPZmZzZXRFbGVtZW50KGVsKSB7CiAgICAgICAgcmV0dXJuIGVsCiAgICAgICAgICAgID8gJ29mZnNldFRvcCcgaW4gZWwKICAgICAgICAgICAgICAgID8gZWwKICAgICAgICAgICAgICAgIDogZ2V0T2Zmc2V0RWxlbWVudChlbC5wYXJlbnROb2RlKQogICAgICAgICAgICA6IGRvY3VtZW50LmJvZHk7CiAgICB9CgogICAgdmFyIFNsaWRlclJlYWN0aXZlID0gewoKICAgICAgICB1cGRhdGU6IHsKCiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGFjay5sZW5ndGggfHwgdGhpcy5kcmFnZ2luZykgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmdldFZhbGlkSW5kZXgodGhpcy5pbmRleCk7CgogICAgICAgICAgICAgICAgaWYgKCF+dGhpcy5wcmV2SW5kZXggfHwgdGhpcy5pbmRleCAhPT0gaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coaW5kZXgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXQoKICAgICAgICB9CgogICAgfTsKCiAgICBmdW5jdGlvbiBUcmFuc2l0aW9uZXIkMSAocHJldiwgbmV4dCwgZGlyLCByZWYpIHsKICAgICAgICB2YXIgY2VudGVyID0gcmVmLmNlbnRlcjsKICAgICAgICB2YXIgZWFzaW5nID0gcmVmLmVhc2luZzsKICAgICAgICB2YXIgbGlzdCA9IHJlZi5saXN0OwoKCiAgICAgICAgdmFyIGRlZmVycmVkID0gbmV3IERlZmVycmVkKCk7CgogICAgICAgIHZhciBmcm9tID0gcHJldgogICAgICAgICAgICA/IGdldExlZnQocHJldiwgbGlzdCwgY2VudGVyKQogICAgICAgICAgICA6IGdldExlZnQobmV4dCwgbGlzdCwgY2VudGVyKSArIGJvdW5kcyhuZXh0KS53aWR0aCAqIGRpcjsKICAgICAgICB2YXIgdG8gPSBuZXh0CiAgICAgICAgICAgID8gZ2V0TGVmdChuZXh0LCBsaXN0LCBjZW50ZXIpCiAgICAgICAgICAgIDogZnJvbSArIGJvdW5kcyhwcmV2KS53aWR0aCAqIGRpciAqIChpc1J0bCA/IC0xIDogMSk7CgogICAgICAgIHJldHVybiB7CgogICAgICAgICAgICBkaXI6IGRpciwKCiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGR1cmF0aW9uLCBwZXJjZW50LCBsaW5lYXIpIHsKICAgICAgICAgICAgICAgIGlmICggcGVyY2VudCA9PT0gdm9pZCAwICkgcGVyY2VudCA9IDA7CgoKICAgICAgICAgICAgICAgIHZhciB0aW1pbmcgPSBsaW5lYXIgPyAnbGluZWFyJyA6IGVhc2luZzsKICAgICAgICAgICAgICAgIGR1cmF0aW9uIC09IE1hdGgucm91bmQoZHVyYXRpb24gKiBjbGFtcChwZXJjZW50LCAtMSwgMSkpOwoKICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlKHBlcmNlbnQpOwoKICAgICAgICAgICAgICAgIHByZXYgJiYgdGhpcy51cGRhdGVUcmFuc2xhdGVzKCk7CiAgICAgICAgICAgICAgICBwZXJjZW50ID0gcHJldiA/IHBlcmNlbnQgOiBjbGFtcChwZXJjZW50LCAwLCAxKTsKICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUkMSh0aGlzLmdldEl0ZW1JbigpLCAnaXRlbWluJywge3BlcmNlbnQ6IHBlcmNlbnQsIGR1cmF0aW9uOiBkdXJhdGlvbiwgdGltaW5nOiB0aW1pbmcsIGRpcjogZGlyfSk7CiAgICAgICAgICAgICAgICBwcmV2ICYmIHRyaWdnZXJVcGRhdGUkMSh0aGlzLmdldEl0ZW1Jbih0cnVlKSwgJ2l0ZW1vdXQnLCB7cGVyY2VudDogMSAtIHBlcmNlbnQsIGR1cmF0aW9uOiBkdXJhdGlvbiwgdGltaW5nOiB0aW1pbmcsIGRpcjogZGlyfSk7CgogICAgICAgICAgICAgICAgVHJhbnNpdGlvbgogICAgICAgICAgICAgICAgICAgIC5zdGFydChsaXN0LCB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLXRvICogKGlzUnRsID8gLTEgOiAxKSwgJ3B4Jyl9LCBkdXJhdGlvbiwgdGltaW5nKQogICAgICAgICAgICAgICAgICAgIC50aGVuKGRlZmVycmVkLnJlc29sdmUsIG5vb3ApOwoKICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlOwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIFRyYW5zaXRpb24uc3RvcChsaXN0KTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbChsaXN0KTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHJlc2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNzcyhsaXN0LCAndHJhbnNmb3JtJywgJycpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZm9yd2FyZDogZnVuY3Rpb24oZHVyYXRpb24sIHBlcmNlbnQpIHsKICAgICAgICAgICAgICAgIGlmICggcGVyY2VudCA9PT0gdm9pZCAwICkgcGVyY2VudCA9IHRoaXMucGVyY2VudCgpOwoKICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKGxpc3QpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyhkdXJhdGlvbiwgcGVyY2VudCwgdHJ1ZSk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHsKCiAgICAgICAgICAgICAgICB2YXIgZGlzdGFuY2UgPSB0aGlzLmdldERpc3RhbmNlKCkgKiBkaXIgKiAoaXNSdGwgPyAtMSA6IDEpOwoKICAgICAgICAgICAgICAgIGNzcyhsaXN0LCAndHJhbnNmb3JtJywgdHJhbnNsYXRlKGNsYW1wKAogICAgICAgICAgICAgICAgICAgIC10byArIChkaXN0YW5jZSAtIGRpc3RhbmNlICogcGVyY2VudCksCiAgICAgICAgICAgICAgICAgICAgLWdldFdpZHRoKGxpc3QpLAogICAgICAgICAgICAgICAgICAgIGJvdW5kcyhsaXN0KS53aWR0aAogICAgICAgICAgICAgICAgKSAqIChpc1J0bCA/IC0xIDogMSksICdweCcpKTsKCiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRyYW5zbGF0ZXMoKTsKCiAgICAgICAgICAgICAgICBpZiAocHJldikgewogICAgICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBjbGFtcChwZXJjZW50LCAtMSwgMSk7CiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSQxKHRoaXMuZ2V0SXRlbUluKCksICdpdGVtdHJhbnNsYXRlaW4nLCB7cGVyY2VudDogcGVyY2VudCwgZGlyOiBkaXJ9KTsKICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlJDEodGhpcy5nZXRJdGVtSW4odHJ1ZSksICdpdGVtdHJhbnNsYXRlb3V0Jywge3BlcmNlbnQ6IDEgLSBwZXJjZW50LCBkaXI6IGRpcn0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKChjc3MobGlzdCwgJ3RyYW5zZm9ybScpLnNwbGl0KCcsJylbNF0gKiAoaXNSdGwgPyAtMSA6IDEpICsgZnJvbSkgLyAodG8gLSBmcm9tKSk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBnZXREaXN0YW5jZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModG8gLSBmcm9tKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGdldEl0ZW1JbjogZnVuY3Rpb24ob3V0KSB7CiAgICAgICAgICAgICAgICBpZiAoIG91dCA9PT0gdm9pZCAwICkgb3V0ID0gZmFsc2U7CgoKICAgICAgICAgICAgICAgIHZhciBhY3RpdmVzID0gdGhpcy5nZXRBY3RpdmVzKCk7CiAgICAgICAgICAgICAgICB2YXIgYWxsID0gc29ydEJ5KHNsaWRlcyhsaXN0KSwgJ29mZnNldExlZnQnKTsKICAgICAgICAgICAgICAgIHZhciBpID0gaW5kZXgoYWxsLCBhY3RpdmVzW2RpciAqIChvdXQgPyAtMSA6IDEpID4gMCA/IGFjdGl2ZXMubGVuZ3RoIC0gMSA6IDBdKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gfmkgJiYgYWxsW2kgKyAocHJldiAmJiAhb3V0ID8gZGlyIDogMCldOwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGdldEFjdGl2ZXM6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIHZhciBsZWZ0ID0gZ2V0TGVmdChwcmV2IHx8IG5leHQsIGxpc3QsIGNlbnRlcik7CgogICAgICAgICAgICAgICAgcmV0dXJuIHNvcnRCeShzbGlkZXMobGlzdCkuZmlsdGVyKGZ1bmN0aW9uIChzbGlkZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZUxlZnQgPSBnZXRFbExlZnQoc2xpZGUsIGxpc3QpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzbGlkZUxlZnQgPj0gbGVmdCAmJiBzbGlkZUxlZnQgKyBib3VuZHMoc2xpZGUpLndpZHRoIDw9IGJvdW5kcyhsaXN0KS53aWR0aCArIGxlZnQ7CiAgICAgICAgICAgICAgICB9KSwgJ29mZnNldExlZnQnKTsKCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB1cGRhdGVUcmFuc2xhdGVzOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlcyA9IHRoaXMuZ2V0QWN0aXZlcygpOwoKICAgICAgICAgICAgICAgIHNsaWRlcyhsaXN0KS5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpc0FjdGl2ZSA9IGluY2x1ZGVzKGFjdGl2ZXMsIHNsaWRlKTsKCiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSQxKHNsaWRlLCAoIml0ZW10cmFuc2xhdGUiICsgKGlzQWN0aXZlID8gJ2luJyA6ICdvdXQnKSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudDogaXNBY3RpdmUgPyAxIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiBzbGlkZS5vZmZzZXRMZWZ0IDw9IG5leHQub2Zmc2V0TGVmdCA/IDEgOiAtMQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfTsKCiAgICB9CgogICAgZnVuY3Rpb24gZ2V0TGVmdChlbCwgbGlzdCwgY2VudGVyKSB7CgogICAgICAgIHZhciBsZWZ0ID0gZ2V0RWxMZWZ0KGVsLCBsaXN0KTsKCiAgICAgICAgcmV0dXJuIGNlbnRlcgogICAgICAgICAgICA/IGxlZnQgLSBjZW50ZXJFbChlbCwgbGlzdCkKICAgICAgICAgICAgOiBNYXRoLm1pbihsZWZ0LCBnZXRNYXgobGlzdCkpOwoKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRNYXgobGlzdCkgewogICAgICAgIHJldHVybiBNYXRoLm1heCgwLCBnZXRXaWR0aChsaXN0KSAtIGJvdW5kcyhsaXN0KS53aWR0aCk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0V2lkdGgobGlzdCkgewogICAgICAgIHJldHVybiBzbGlkZXMobGlzdCkucmVkdWNlKGZ1bmN0aW9uIChyaWdodCwgZWwpIHsgcmV0dXJuIGJvdW5kcyhlbCkud2lkdGggKyByaWdodDsgfSwgMCk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0TWF4V2lkdGgobGlzdCkgewogICAgICAgIHJldHVybiBzbGlkZXMobGlzdCkucmVkdWNlKGZ1bmN0aW9uIChyaWdodCwgZWwpIHsgcmV0dXJuIE1hdGgubWF4KHJpZ2h0LCBib3VuZHMoZWwpLndpZHRoKTsgfSwgMCk7CiAgICB9CgogICAgZnVuY3Rpb24gY2VudGVyRWwoZWwsIGxpc3QpIHsKICAgICAgICByZXR1cm4gYm91bmRzKGxpc3QpLndpZHRoIC8gMiAtIGJvdW5kcyhlbCkud2lkdGggLyAyOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldEVsTGVmdChlbCwgbGlzdCkgewogICAgICAgIHJldHVybiAocG9zaXRpb24oZWwpLmxlZnQgKyAoaXNSdGwgPyBib3VuZHMoZWwpLndpZHRoIC0gYm91bmRzKGxpc3QpLndpZHRoIDogMCkpICogKGlzUnRsID8gLTEgOiAxKTsKICAgIH0KCiAgICBmdW5jdGlvbiBib3VuZHMoZWwpIHsKICAgICAgICByZXR1cm4gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB9CgogICAgZnVuY3Rpb24gdHJpZ2dlclVwZGF0ZSQxKGVsLCB0eXBlLCBkYXRhKSB7CiAgICAgICAgdHJpZ2dlcihlbCwgY3JlYXRlRXZlbnQodHlwZSwgZmFsc2UsIGZhbHNlLCBkYXRhKSk7CiAgICB9CgogICAgZnVuY3Rpb24gc2xpZGVzKGxpc3QpIHsKICAgICAgICByZXR1cm4gdG9Ob2RlcyhsaXN0LmNoaWxkcmVuKTsKICAgIH0KCiAgICB2YXIgU2xpZGVyJDEgPSB7CgogICAgICAgIG1peGluczogW0NsYXNzLCBTbGlkZXIsIFNsaWRlclJlYWN0aXZlXSwKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgY2VudGVyOiBCb29sZWFuLAogICAgICAgICAgICBzZXRzOiBCb29sZWFuCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBjZW50ZXI6IGZhbHNlLAogICAgICAgICAgICBzZXRzOiBmYWxzZSwKICAgICAgICAgICAgYXR0ckl0ZW06ICd1ay1zbGlkZXItaXRlbScsCiAgICAgICAgICAgIHNlbExpc3Q6ICcudWstc2xpZGVyLWl0ZW1zJywKICAgICAgICAgICAgc2VsTmF2OiAnLnVrLXNsaWRlci1uYXYnLAogICAgICAgICAgICBjbHNDb250YWluZXI6ICd1ay1zbGlkZXItY29udGFpbmVyJywKICAgICAgICAgICAgVHJhbnNpdGlvbmVyOiBUcmFuc2l0aW9uZXIkMQogICAgICAgIH0sCgogICAgICAgIGNvbXB1dGVkOiB7CgogICAgICAgICAgICBhdmdXaWR0aDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0V2lkdGgodGhpcy5saXN0KSAvIHRoaXMubGVuZ3RoOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZmluaXRlOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgIHZhciBmaW5pdGUgPSByZWYuZmluaXRlOwoKICAgICAgICAgICAgICAgIHJldHVybiBmaW5pdGUgfHwgZ2V0V2lkdGgodGhpcy5saXN0KSA8IGJvdW5kcyh0aGlzLmxpc3QpLndpZHRoICsgZ2V0TWF4V2lkdGgodGhpcy5saXN0KSArIHRoaXMuY2VudGVyOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgbWF4SW5kZXg6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIGlmICghdGhpcy5maW5pdGUgfHwgdGhpcy5jZW50ZXIgJiYgIXRoaXMuc2V0cykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxlbmd0aCAtIDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHRoaXMuY2VudGVyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3QodGhpcy5zZXRzKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBjc3ModGhpcy5zbGlkZXMsICdvcmRlcicsICcnKTsKCiAgICAgICAgICAgICAgICB2YXIgbWF4ID0gZ2V0TWF4KHRoaXMubGlzdCk7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMubGVuZ3RoOwoKICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0RWxMZWZ0KHRoaXMubGlzdC5jaGlsZHJlbltpXSwgdGhpcy5saXN0KSA8IG1heCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oaSArIDEsIHRoaXMubGVuZ3RoIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgc2V0czogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKICAgICAgICAgICAgICAgIHZhciBzZXRzID0gcmVmLnNldHM7CgoKICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IGJvdW5kcyh0aGlzLmxpc3QpLndpZHRoIC8gKHRoaXMuY2VudGVyID8gMiA6IDEpOwoKICAgICAgICAgICAgICAgIHZhciBsZWZ0ID0gMDsKICAgICAgICAgICAgICAgIHZhciBsZWZ0Q2VudGVyID0gd2lkdGg7CiAgICAgICAgICAgICAgICB2YXIgc2xpZGVMZWZ0ID0gMDsKCiAgICAgICAgICAgICAgICBzZXRzID0gc2V0cyAmJiB0aGlzLnNsaWRlcy5yZWR1Y2UoZnVuY3Rpb24gKHNldHMsIHNsaWRlLCBpKSB7CgogICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBib3VuZHMoc2xpZGUpOwogICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZVdpZHRoID0gcmVmLndpZHRoOwogICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZVJpZ2h0ID0gc2xpZGVMZWZ0ICsgc2xpZGVXaWR0aDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHNsaWRlUmlnaHQgPiBsZWZ0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMkMS5jZW50ZXIgJiYgaSA+IHRoaXMkMS5tYXhJbmRleCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMkMS5tYXhJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyhzZXRzLCBpKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbXAgPSB0aGlzJDEuc2xpZGVzW2kgKyAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuY2VudGVyICYmIGNtcCAmJiBzbGlkZVdpZHRoIDwgbGVmdENlbnRlciAtIGJvdW5kcyhjbXApLndpZHRoIC8gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRDZW50ZXIgLT0gc2xpZGVXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdENlbnRlciA9IHdpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHMucHVzaChpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gc2xpZGVMZWZ0ICsgd2lkdGggKyAodGhpcyQxLmNlbnRlciA/IHNsaWRlV2lkdGggLyAyIDogMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBzbGlkZUxlZnQgKz0gc2xpZGVXaWR0aDsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldHM7CgogICAgICAgICAgICAgICAgfSwgW10pOwoKICAgICAgICAgICAgICAgIHJldHVybiAhaXNFbXB0eShzZXRzKSAmJiBzZXRzOwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHRyYW5zaXRpb25PcHRpb25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgY2VudGVyOiB0aGlzLmNlbnRlciwKICAgICAgICAgICAgICAgICAgICBsaXN0OiB0aGlzLmxpc3QKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzQ29udGFpbmVyLCAhJCgoIi4iICsgKHRoaXMuY2xzQ29udGFpbmVyKSksIHRoaXMuJGVsKSk7CiAgICAgICAgfSwKCiAgICAgICAgdXBkYXRlOiB7CgogICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICAgICAgJCQoKCJbIiArICh0aGlzLmF0dHJJdGVtKSArICJdLFtkYXRhLSIgKyAodGhpcy5hdHRySXRlbSkgKyAiXSIpLCB0aGlzLiRlbCkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBkYXRhKGVsLCB0aGlzJDEuYXR0ckl0ZW0pOwogICAgICAgICAgICAgICAgICAgIHRoaXMkMS5tYXhJbmRleCAmJiB0b2dnbGVDbGFzcyhlbCwgJ3VrLWhpZGRlbicsIGlzTnVtZXJpYyhpbmRleCkgJiYgKHRoaXMkMS5zZXRzICYmICFpbmNsdWRlcyh0aGlzJDEuc2V0cywgdG9GbG9hdChpbmRleCkpIHx8IGluZGV4ID4gdGhpcyQxLm1heEluZGV4KSk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJhZ2dpbmcgJiYgIXRoaXMuc3RhY2subGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ2V0VHJhbnNpdGlvbmVyKCkudHJhbnNsYXRlKDEpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXQoKICAgICAgICB9LAoKICAgICAgICBldmVudHM6IHsKCiAgICAgICAgICAgIGJlZm9yZWl0ZW1zaG93OiBmdW5jdGlvbihlKSB7CgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdnaW5nICYmIHRoaXMuc2V0cyAmJiB0aGlzLnN0YWNrLmxlbmd0aCA8IDIgJiYgIWluY2x1ZGVzKHRoaXMuc2V0cywgdGhpcy5pbmRleCkpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5nZXRWYWxpZEluZGV4KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicygKICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4CiAgICAgICAgICAgICAgICAgICAgLSB0aGlzLnByZXZJbmRleAogICAgICAgICAgICAgICAgICAgICsgKHRoaXMuZGlyID4gMCAmJiB0aGlzLmluZGV4IDwgdGhpcy5wcmV2SW5kZXggfHwgdGhpcy5kaXIgPCAwICYmIHRoaXMuaW5kZXggPiB0aGlzLnByZXZJbmRleCA/ICh0aGlzLm1heEluZGV4ICsgMSkgKiB0aGlzLmRpciA6IDApCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnZ2luZyAmJiBkaWZmID4gMSkgewoKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZmY7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnNwbGljZSgxLCAwLCB0aGlzLmRpciA+IDAgPyAnbmV4dCcgOiAncHJldmlvdXMnKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhpcy5kdXJhdGlvbiA9IHNwZWVkVXAodGhpcy5hdmdXaWR0aCAvIHRoaXMudmVsb2NpdHkpCiAgICAgICAgICAgICAgICAgICAgKiAoYm91bmRzKAogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpciA8IDAgfHwgIXRoaXMuc2xpZGVzW3RoaXMucHJldkluZGV4XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNsaWRlc1t0aGlzLmluZGV4XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnNsaWRlc1t0aGlzLnByZXZJbmRleF0KICAgICAgICAgICAgICAgICAgICApLndpZHRoIC8gdGhpcy5hdmdXaWR0aCk7CgogICAgICAgICAgICAgICAgdGhpcy5yZW9yZGVyKCk7CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgaXRlbXNob3c6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIWlzVW5kZWZpbmVkKHRoaXMucHJldkluZGV4KSAmJiBhZGRDbGFzcyh0aGlzLl9nZXRUcmFuc2l0aW9uZXIoKS5nZXRJdGVtSW4oKSwgdGhpcy5jbHNBY3RpdmUpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgaXRlbXNob3duOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKICAgICAgICAgICAgICAgIHZhciBhY3RpdmVzID0gdGhpcy5fZ2V0VHJhbnNpdGlvbmVyKHRoaXMuaW5kZXgpLmdldEFjdGl2ZXMoKTsKICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVzLmZvckVhY2goZnVuY3Rpb24gKHNsaWRlKSB7IHJldHVybiB0b2dnbGVDbGFzcyhzbGlkZSwgdGhpcyQxLmNsc0FjdGl2ZSwgaW5jbHVkZXMoYWN0aXZlcywgc2xpZGUpKTsgfSk7CiAgICAgICAgICAgICAgICAoIXRoaXMuc2V0cyB8fCBpbmNsdWRlcyh0aGlzLnNldHMsIHRvRmxvYXQodGhpcy5pbmRleCkpKSAmJiB0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSkgeyByZXR1cm4gdG9nZ2xlQ2xhc3Moc2xpZGUsIHRoaXMkMS5jbHNBY3RpdmF0ZWQsIGluY2x1ZGVzKGFjdGl2ZXMsIHNsaWRlKSk7IH0pOwogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIG1ldGhvZHM6IHsKCiAgICAgICAgICAgIHJlb3JkZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7CgoKICAgICAgICAgICAgICAgIGNzcyh0aGlzLnNsaWRlcywgJ29yZGVyJywgJycpOwoKICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbml0ZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmRpciA+IDAgJiYgdGhpcy5zbGlkZXNbdGhpcy5wcmV2SW5kZXhdID8gdGhpcy5wcmV2SW5kZXggOiB0aGlzLmluZGV4OwoKICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVzLmZvckVhY2goZnVuY3Rpb24gKHNsaWRlLCBpKSB7IHJldHVybiBjc3Moc2xpZGUsICdvcmRlcicsIHRoaXMkMS5kaXIgPiAwICYmIGkgPCBpbmRleAogICAgICAgICAgICAgICAgICAgICAgICA/IDEKICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzJDEuZGlyIDwgMCAmJiBpID49IHRoaXMkMS5pbmRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAtMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJwogICAgICAgICAgICAgICAgICAgICk7IH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNlbnRlcikgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHRoaXMuc2xpZGVzW2luZGV4XTsKICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IGJvdW5kcyh0aGlzLmxpc3QpLndpZHRoIC8gMiAtIGJvdW5kcyhuZXh0KS53aWR0aCAvIDI7CiAgICAgICAgICAgICAgICB2YXIgaiA9IDA7CgogICAgICAgICAgICAgICAgd2hpbGUgKHdpZHRoID4gMCkgewogICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZUluZGV4ID0gdGhpcy5nZXRJbmRleCgtLWogKyBpbmRleCwgaW5kZXgpOwogICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZSA9IHRoaXMuc2xpZGVzW3NsaWRlSW5kZXhdOwoKICAgICAgICAgICAgICAgICAgICBjc3Moc2xpZGUsICdvcmRlcicsIHNsaWRlSW5kZXggPiBpbmRleCA/IC0yIDogLTEpOwogICAgICAgICAgICAgICAgICAgIHdpZHRoIC09IGJvdW5kcyhzbGlkZSkud2lkdGg7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZ2V0VmFsaWRJbmRleDogZnVuY3Rpb24oaW5kZXgsIHByZXZJbmRleCkgewogICAgICAgICAgICAgICAgaWYgKCBpbmRleCA9PT0gdm9pZCAwICkgaW5kZXggPSB0aGlzLmluZGV4OwogICAgICAgICAgICAgICAgaWYgKCBwcmV2SW5kZXggPT09IHZvaWQgMCApIHByZXZJbmRleCA9IHRoaXMucHJldkluZGV4OwoKCiAgICAgICAgICAgICAgICBpbmRleCA9IHRoaXMuZ2V0SW5kZXgoaW5kZXgsIHByZXZJbmRleCk7CgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNldHMpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHByZXY7CgogICAgICAgICAgICAgICAgZG8gewoKICAgICAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZXModGhpcy5zZXRzLCBpbmRleCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHJldiA9IGluZGV4OwogICAgICAgICAgICAgICAgICAgIGluZGV4ID0gdGhpcy5nZXRJbmRleChpbmRleCArIHRoaXMuZGlyLCBwcmV2SW5kZXgpOwoKICAgICAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4ICE9PSBwcmV2KTsKCiAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH07CgogICAgdmFyIFNsaWRlc2hvd1BhcmFsbGF4ID0gewoKICAgICAgICBtaXhpbnM6IFtQYXJhbGxheF0sCgogICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgc2VsSXRlbTogJyFsaScKICAgICAgICB9LAoKICAgICAgICBjb21wdXRlZDogewoKICAgICAgICAgICAgaXRlbTogZnVuY3Rpb24ocmVmLCAkZWwpIHsKICAgICAgICAgICAgICAgIHZhciBzZWxJdGVtID0gcmVmLnNlbEl0ZW07CgogICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5KHNlbEl0ZW0sICRlbCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiBbCgogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1zaG93bicsCgogICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSwKCiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB0aGlzLmdldENzcyguNSkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtaW4gaXRlbW91dCcsCgogICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSwKCiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVmX2RldGFpbCA9IHJlZi5kZXRhaWw7CiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcmNlbnQgPSByZWZfZGV0YWlsLnBlcmNlbnQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIGR1cmF0aW9uID0gcmVmX2RldGFpbC5kdXJhdGlvbjsKICAgICAgICAgICAgICAgICAgICB2YXIgdGltaW5nID0gcmVmX2RldGFpbC50aW1pbmc7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IHJlZl9kZXRhaWwuZGlyOwoKCiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwodGhpcy4kZWwpOwogICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5nZXRDc3MoZ2V0Q3VycmVudCh0eXBlLCBkaXIsIHBlcmNlbnQpKSk7CgogICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQodGhpcy4kZWwsIHRoaXMuZ2V0Q3NzKGlzSW4odHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgPyAuNQogICAgICAgICAgICAgICAgICAgICAgICA6IGRpciA+IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwCiAgICAgICAgICAgICAgICAgICAgKSwgZHVyYXRpb24sIHRpbWluZykuY2F0Y2gobm9vcCk7CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmFtZTogJ3RyYW5zaXRpb25jYW5jZWxlZCB0cmFuc2l0aW9uZW5kJywKCiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLAoKICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbCh0aGlzLiRlbCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW10cmFuc2xhdGVpbiBpdGVtdHJhbnNsYXRlb3V0JywKCiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLAoKICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlOwogICAgICAgICAgICAgICAgICAgIHZhciByZWZfZGV0YWlsID0gcmVmLmRldGFpbDsKICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZl9kZXRhaWwucGVyY2VudDsKICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmX2RldGFpbC5kaXI7CgogICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKHRoaXMuJGVsKTsKICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHRoaXMuZ2V0Q3NzKGdldEN1cnJlbnQodHlwZSwgZGlyLCBwZXJjZW50KSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIF0KCiAgICB9OwoKICAgIGZ1bmN0aW9uIGlzSW4odHlwZSkgewogICAgICAgIHJldHVybiBlbmRzV2l0aCh0eXBlLCAnaW4nKTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRDdXJyZW50KHR5cGUsIGRpciwgcGVyY2VudCkgewoKICAgICAgICBwZXJjZW50IC89IDI7CgogICAgICAgIHJldHVybiAhaXNJbih0eXBlKQogICAgICAgICAgICA/IGRpciA8IDAKICAgICAgICAgICAgICAgID8gcGVyY2VudAogICAgICAgICAgICAgICAgOiAxIC0gcGVyY2VudAogICAgICAgICAgICA6IGRpciA8IDAKICAgICAgICAgICAgICAgID8gMSAtIHBlcmNlbnQKICAgICAgICAgICAgICAgIDogcGVyY2VudDsKICAgIH0KCiAgICB2YXIgQW5pbWF0aW9ucyQyID0gYXNzaWduKHt9LCBBbmltYXRpb25zLCB7CgogICAgICAgIGZhZGU6IHsKCiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMCwgekluZGV4OiAwfSwKICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gMSAtIGNzcyhjdXJyZW50LCAnb3BhY2l0eScpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAxIC0gcGVyY2VudCwgekluZGV4OiAwfSwKICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgc2NhbGU6IHsKCiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgKyAuNSksIHpJbmRleDogMH0sCiAgICAgICAgICAgICAgICAgICAge3pJbmRleDogLTF9CiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkgewogICAgICAgICAgICAgICAgcmV0dXJuIDEgLSBjc3MoY3VycmVudCwgJ29wYWNpdHknKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkgewogICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnQsIHRyYW5zZm9ybTogc2NhbGUzZCgxICsgLjUgKiBwZXJjZW50KSwgekluZGV4OiAwfSwKICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgcHVsbDogewoKICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oZGlyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMAogICAgICAgICAgICAgICAgICAgID8gWwogICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoMzApLCB6SW5kZXg6IC0xfSwKICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogMH0KICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTAwKSwgekluZGV4OiAwfSwKICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogLTF9CiAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKGN1cnJlbnQsIG5leHQsIGRpcikgewogICAgICAgICAgICAgICAgcmV0dXJuIGRpciA8IDAKICAgICAgICAgICAgICAgICAgICA/IDEgLSB0cmFuc2xhdGVkKG5leHQpCiAgICAgICAgICAgICAgICAgICAgOiB0cmFuc2xhdGVkKGN1cnJlbnQpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50LCBkaXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwCiAgICAgICAgICAgICAgICAgICAgPyBbCiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMCAqIHBlcmNlbnQpLCB6SW5kZXg6IC0xfSwKICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAwfQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICA6IFsKICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC1wZXJjZW50ICogMTAwKSwgekluZGV4OiAwfSwKICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKDMwICogKDEgLSBwZXJjZW50KSksIHpJbmRleDogLTF9CiAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfQoKICAgICAgICB9LAoKICAgICAgICBwdXNoOiB7CgogICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkaXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwCiAgICAgICAgICAgICAgICAgICAgPyBbCiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDApLCB6SW5kZXg6IDB9LAogICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoKSwgekluZGV4OiAtMX0KICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMzApLCB6SW5kZXg6IC0xfSwKICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogMH0KICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCwgbmV4dCwgZGlyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZGlyID4gMAogICAgICAgICAgICAgICAgICAgID8gMSAtIHRyYW5zbGF0ZWQobmV4dCkKICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZWQoY3VycmVudCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikgewogICAgICAgICAgICAgICAgcmV0dXJuIGRpciA8IDAKICAgICAgICAgICAgICAgICAgICA/IFsKICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKHBlcmNlbnQgKiAxMDApLCB6SW5kZXg6IDB9LAogICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwICogKDEgLSBwZXJjZW50KSksIHpJbmRleDogLTF9CiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIDogWwogICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwICogcGVyY2VudCksIHpJbmRleDogLTF9LAogICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAwICogKDEgLSBwZXJjZW50KSksIHpJbmRleDogMH0KICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9KTsKCiAgICB2YXIgU2xpZGVzaG93JDEgPSB7CgogICAgICAgIG1peGluczogW0NsYXNzLCBTbGlkZXNob3csIFNsaWRlclJlYWN0aXZlXSwKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgcmF0aW86IFN0cmluZywKICAgICAgICAgICAgbWluSGVpZ2h0OiBOdW1iZXIsCiAgICAgICAgICAgIG1heEhlaWdodDogTnVtYmVyCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICByYXRpbzogJzE2OjknLAogICAgICAgICAgICBtaW5IZWlnaHQ6IGZhbHNlLAogICAgICAgICAgICBtYXhIZWlnaHQ6IGZhbHNlLAogICAgICAgICAgICBzZWxMaXN0OiAnLnVrLXNsaWRlc2hvdy1pdGVtcycsCiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstc2xpZGVzaG93LWl0ZW0nLAogICAgICAgICAgICBzZWxOYXY6ICcudWstc2xpZGVzaG93LW5hdicsCiAgICAgICAgICAgIEFuaW1hdGlvbnM6IEFuaW1hdGlvbnMkMgogICAgICAgIH0sCgogICAgICAgIHVwZGF0ZTogewoKICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMucmF0aW8uc3BsaXQoJzonKS5tYXAoTnVtYmVyKTsKICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IHJlZlswXTsKICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSByZWZbMV07CgogICAgICAgICAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0ICogdGhpcy5saXN0Lm9mZnNldFdpZHRoIC8gd2lkdGggfHwgMDsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5taW5IZWlnaHQpIHsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBNYXRoLm1heCh0aGlzLm1pbkhlaWdodCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXhIZWlnaHQpIHsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBNYXRoLm1pbih0aGlzLm1heEhlaWdodCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4ge2hlaWdodDogaGVpZ2h0IC0gYm94TW9kZWxBZGp1c3QodGhpcy5saXN0LCAnY29udGVudC1ib3gnKX07CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7CiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gcmVmLmhlaWdodDsKCiAgICAgICAgICAgICAgICBoZWlnaHQgPiAwICYmIGNzcyh0aGlzLmxpc3QsICdtaW5IZWlnaHQnLCBoZWlnaHQpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZXZlbnRzOiBbJ3Jlc2l6ZSddCgogICAgICAgIH0KCiAgICB9OwoKICAgIHZhciBTb3J0YWJsZSA9IHsKCiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIEFuaW1hdGVdLAoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBncm91cDogU3RyaW5nLAogICAgICAgICAgICB0aHJlc2hvbGQ6IE51bWJlciwKICAgICAgICAgICAgY2xzSXRlbTogU3RyaW5nLAogICAgICAgICAgICBjbHNQbGFjZWhvbGRlcjogU3RyaW5nLAogICAgICAgICAgICBjbHNEcmFnOiBTdHJpbmcsCiAgICAgICAgICAgIGNsc0RyYWdTdGF0ZTogU3RyaW5nLAogICAgICAgICAgICBjbHNCYXNlOiBTdHJpbmcsCiAgICAgICAgICAgIGNsc05vRHJhZzogU3RyaW5nLAogICAgICAgICAgICBjbHNFbXB0eTogU3RyaW5nLAogICAgICAgICAgICBjbHNDdXN0b206IFN0cmluZywKICAgICAgICAgICAgaGFuZGxlOiBTdHJpbmcKICAgICAgICB9LAoKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGdyb3VwOiBmYWxzZSwKICAgICAgICAgICAgdGhyZXNob2xkOiA1LAogICAgICAgICAgICBjbHNJdGVtOiAndWstc29ydGFibGUtaXRlbScsCiAgICAgICAgICAgIGNsc1BsYWNlaG9sZGVyOiAndWstc29ydGFibGUtcGxhY2Vob2xkZXInLAogICAgICAgICAgICBjbHNEcmFnOiAndWstc29ydGFibGUtZHJhZycsCiAgICAgICAgICAgIGNsc0RyYWdTdGF0ZTogJ3VrLWRyYWcnLAogICAgICAgICAgICBjbHNCYXNlOiAndWstc29ydGFibGUnLAogICAgICAgICAgICBjbHNOb0RyYWc6ICd1ay1zb3J0YWJsZS1ub2RyYWcnLAogICAgICAgICAgICBjbHNFbXB0eTogJ3VrLXNvcnRhYmxlLWVtcHR5JywKICAgICAgICAgICAgY2xzQ3VzdG9tOiAnJywKICAgICAgICAgICAgaGFuZGxlOiBmYWxzZQogICAgICAgIH0sCgogICAgICAgIGNyZWF0ZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCiAgICAgICAgICAgIFsnaW5pdCcsICdzdGFydCcsICdtb3ZlJywgJ2VuZCddLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgICAgICAgICAgICAgdmFyIGZuID0gdGhpcyQxW2tleV07CiAgICAgICAgICAgICAgICB0aGlzJDFba2V5XSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IGdldEV2ZW50UG9zKGUsICdwYWdlJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHggPSByZWYueDsKICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHJlZi55OwogICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wb3MgPSB7eDogeCwgeTogeX07CgogICAgICAgICAgICAgICAgICAgIGZuKGUpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiB7CgogICAgICAgICAgICBuYW1lOiBwb2ludGVyRG93biwKICAgICAgICAgICAgcGFzc2l2ZTogZmFsc2UsCiAgICAgICAgICAgIGhhbmRsZXI6ICdpbml0JwoKICAgICAgICB9LAoKICAgICAgICB1cGRhdGU6IHsKCiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5jbHNFbXB0eSkgewogICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0VtcHR5LCBpc0VtcHR5KHRoaXMuJGVsLmNoaWxkcmVuKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgY3NzKHRoaXMuaGFuZGxlID8gJCQodGhpcy5oYW5kbGUsIHRoaXMuJGVsKSA6IHRoaXMuJGVsLmNoaWxkcmVuLCB7dG91Y2hBY3Rpb246ICdub25lJywgdXNlclNlbGVjdDogJ25vbmUnfSk7CgogICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZykgewoKICAgICAgICAgICAgICAgICAgICAvLyBjbGFtcCB0byB2aWV3cG9ydAogICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBvZmZzZXQod2luZG93KTsKICAgICAgICAgICAgICAgICAgICB2YXIgcmlnaHQgPSByZWYucmlnaHQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIGJvdHRvbSA9IHJlZi5ib3R0b207CiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KHRoaXMuZHJhZywgewogICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGNsYW1wKHRoaXMucG9zLnkgKyB0aGlzLm9yaWdpbi50b3AsIDAsIGJvdHRvbSAtIHRoaXMuZHJhZy5vZmZzZXRIZWlnaHQpLAogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBjbGFtcCh0aGlzLnBvcy54ICsgdGhpcy5vcmlnaW4ubGVmdCwgMCwgcmlnaHQgLSB0aGlzLmRyYWcub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgIHRyYWNrU2Nyb2xsKHRoaXMucG9zKTsKCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIG1ldGhvZHM6IHsKCiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKGUpIHsKCiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7CiAgICAgICAgICAgICAgICB2YXIgYnV0dG9uID0gZS5idXR0b247CiAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdFByZXZlbnRlZCA9IGUuZGVmYXVsdFByZXZlbnRlZDsKICAgICAgICAgICAgICAgIHZhciByZWYgPSB0b05vZGVzKHRoaXMuJGVsLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiB3aXRoaW4odGFyZ2V0LCBlbCk7IH0pOwogICAgICAgICAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0gcmVmWzBdOwoKICAgICAgICAgICAgICAgIGlmICghcGxhY2Vob2xkZXIKICAgICAgICAgICAgICAgICAgICB8fCBkZWZhdWx0UHJldmVudGVkCiAgICAgICAgICAgICAgICAgICAgfHwgYnV0dG9uID4gMAogICAgICAgICAgICAgICAgICAgIHx8IGlzSW5wdXQodGFyZ2V0KQogICAgICAgICAgICAgICAgICAgIHx8IHdpdGhpbih0YXJnZXQsICgiLiIgKyAodGhpcy5jbHNOb0RyYWcpKSkKICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmhhbmRsZSAmJiAhd2l0aGluKHRhcmdldCwgdGhpcy5oYW5kbGUpCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgIHRoaXMudG91Y2hlZCA9IFt0aGlzXTsKICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjsKICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luID0gYXNzaWduKHt0YXJnZXQ6IHRhcmdldCwgaW5kZXg6IGluZGV4KHBsYWNlaG9sZGVyKX0sIHRoaXMucG9zKTsKCiAgICAgICAgICAgICAgICBvbihkb2N1bWVudCwgcG9pbnRlck1vdmUsIHRoaXMubW92ZSk7CiAgICAgICAgICAgICAgICBvbihkb2N1bWVudCwgcG9pbnRlclVwLCB0aGlzLmVuZCk7CiAgICAgICAgICAgICAgICBvbih3aW5kb3csICdzY3JvbGwnLCB0aGlzLnNjcm9sbCk7CgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRocmVzaG9sZCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LAoKICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGUpIHsKCiAgICAgICAgICAgICAgICB0aGlzLmRyYWcgPSBhcHBlbmQodGhpcy4kY29udGFpbmVyLCB0aGlzLnBsYWNlaG9sZGVyLm91dGVySFRNTC5yZXBsYWNlKC9ePGxpL2ksICc8ZGl2JykucmVwbGFjZSgvbGk+JC9pLCAnZGl2PicpKTsKCiAgICAgICAgICAgICAgICBjc3ModGhpcy5kcmFnLCBhc3NpZ24oewogICAgICAgICAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLAogICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLnBsYWNlaG9sZGVyLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5wbGFjZWhvbGRlci5vZmZzZXRIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nCiAgICAgICAgICAgICAgICB9LCBjc3ModGhpcy5wbGFjZWhvbGRlciwgWydwYWRkaW5nTGVmdCcsICdwYWRkaW5nUmlnaHQnLCAncGFkZGluZ1RvcCcsICdwYWRkaW5nQm90dG9tJ10pKSk7CiAgICAgICAgICAgICAgICBhdHRyKHRoaXMuZHJhZywgJ3VrLW5vLWJvb3QnLCAnJyk7CiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLmRyYWcsIHRoaXMuY2xzRHJhZywgdGhpcy5jbHNDdXN0b20pOwoKICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLmRyYWcuZmlyc3RFbGVtZW50Q2hpbGQsIGhlaWdodCh0aGlzLnBsYWNlaG9sZGVyLmZpcnN0RWxlbWVudENoaWxkKSk7CgogICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0aGlzLnBsYWNlaG9sZGVyKTsKICAgICAgICAgICAgICAgIHZhciBsZWZ0ID0gcmVmLmxlZnQ7CiAgICAgICAgICAgICAgICB2YXIgdG9wID0gcmVmLnRvcDsKICAgICAgICAgICAgICAgIGFzc2lnbih0aGlzLm9yaWdpbiwge2xlZnQ6IGxlZnQgLSB0aGlzLnBvcy54LCB0b3A6IHRvcCAtIHRoaXMucG9zLnl9KTsKCiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLnBsYWNlaG9sZGVyLCB0aGlzLmNsc1BsYWNlaG9sZGVyKTsKICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLmNoaWxkcmVuLCB0aGlzLmNsc0l0ZW0pOwogICAgICAgICAgICAgICAgYWRkQ2xhc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB0aGlzLmNsc0RyYWdTdGF0ZSk7CgogICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3N0YXJ0JywgW3RoaXMsIHRoaXMucGxhY2Vob2xkZXJdKTsKCiAgICAgICAgICAgICAgICB0aGlzLm1vdmUoZSk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBtb3ZlOiBmdW5jdGlvbihlKSB7CgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWcpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMucG9zLnggLSB0aGlzLm9yaWdpbi54KSA+IHRoaXMudGhyZXNob2xkIHx8IE1hdGguYWJzKHRoaXMucG9zLnkgLSB0aGlzLm9yaWdpbi55KSA+IHRoaXMudGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoZSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpOwoKICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnR5cGUgPT09ICdtb3VzZW1vdmUnID8gZS50YXJnZXQgOiBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHRoaXMucG9zLnggLSB3aW5kb3cucGFnZVhPZmZzZXQsIHRoaXMucG9zLnkgLSB3aW5kb3cucGFnZVlPZmZzZXQpOwoKICAgICAgICAgICAgICAgIHZhciBzb3J0YWJsZSA9IHRoaXMuZ2V0U29ydGFibGUodGFyZ2V0KTsKICAgICAgICAgICAgICAgIHZhciBwcmV2aW91cyA9IHRoaXMuZ2V0U29ydGFibGUodGhpcy5wbGFjZWhvbGRlcik7CiAgICAgICAgICAgICAgICB2YXIgbW92ZSA9IHNvcnRhYmxlICE9PSBwcmV2aW91czsKCiAgICAgICAgICAgICAgICBpZiAoIXNvcnRhYmxlIHx8IHdpdGhpbih0YXJnZXQsIHRoaXMucGxhY2Vob2xkZXIpIHx8IG1vdmUgJiYgKCFzb3J0YWJsZS5ncm91cCB8fCBzb3J0YWJsZS5ncm91cCAhPT0gcHJldmlvdXMuZ3JvdXApKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRhcmdldCA9IHNvcnRhYmxlLiRlbCA9PT0gdGFyZ2V0LnBhcmVudE5vZGUgJiYgdGFyZ2V0IHx8IHRvTm9kZXMoc29ydGFibGUuJGVsLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsZW1lbnQpOyB9KVswXTsKCiAgICAgICAgICAgICAgICBpZiAobW92ZSkgewogICAgICAgICAgICAgICAgICAgIHByZXZpb3VzLnJlbW92ZSh0aGlzLnBsYWNlaG9sZGVyKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRhcmdldCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBzb3J0YWJsZS5pbnNlcnQodGhpcy5wbGFjZWhvbGRlciwgdGFyZ2V0KTsKCiAgICAgICAgICAgICAgICBpZiAoIWluY2x1ZGVzKHRoaXMudG91Y2hlZCwgc29ydGFibGUpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3VjaGVkLnB1c2goc29ydGFibGUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGVuZDogZnVuY3Rpb24oZSkgewoKICAgICAgICAgICAgICAgIG9mZihkb2N1bWVudCwgcG9pbnRlck1vdmUsIHRoaXMubW92ZSk7CiAgICAgICAgICAgICAgICBvZmYoZG9jdW1lbnQsIHBvaW50ZXJVcCwgdGhpcy5lbmQpOwogICAgICAgICAgICAgICAgb2ZmKHdpbmRvdywgJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsKTsKCiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJhZykgewogICAgICAgICAgICAgICAgICAgIGlmIChlLnR5cGUgPT09ICd0b3VjaGVuZCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuY2xpY2soKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB1bnRyYWNrU2Nyb2xsKCk7CgogICAgICAgICAgICAgICAgdmFyIHNvcnRhYmxlID0gdGhpcy5nZXRTb3J0YWJsZSh0aGlzLnBsYWNlaG9sZGVyKTsKCiAgICAgICAgICAgICAgICBpZiAodGhpcyA9PT0gc29ydGFibGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcmlnaW4uaW5kZXggIT09IGluZGV4KHRoaXMucGxhY2Vob2xkZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdtb3ZlZCcsIFt0aGlzLCB0aGlzLnBsYWNlaG9sZGVyXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHNvcnRhYmxlLiRlbCwgJ2FkZGVkJywgW3NvcnRhYmxlLCB0aGlzLnBsYWNlaG9sZGVyXSk7CiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3JlbW92ZWQnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdzdG9wJywgW3RoaXMsIHRoaXMucGxhY2Vob2xkZXJdKTsKCiAgICAgICAgICAgICAgICByZW1vdmUodGhpcy5kcmFnKTsKICAgICAgICAgICAgICAgIHRoaXMuZHJhZyA9IG51bGw7CgogICAgICAgICAgICAgICAgdmFyIGNsYXNzZXMgPSB0aGlzLnRvdWNoZWQubWFwKGZ1bmN0aW9uIChzb3J0YWJsZSkgeyByZXR1cm4gKChzb3J0YWJsZS5jbHNQbGFjZWhvbGRlcikgKyAiICIgKyAoc29ydGFibGUuY2xzSXRlbSkpOyB9KS5qb2luKCcgJyk7CiAgICAgICAgICAgICAgICB0aGlzLnRvdWNoZWQuZm9yRWFjaChmdW5jdGlvbiAoc29ydGFibGUpIHsgcmV0dXJuIHJlbW92ZUNsYXNzKHNvcnRhYmxlLiRlbC5jaGlsZHJlbiwgY2xhc3Nlcyk7IH0pOwoKICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNEcmFnU3RhdGUpOwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIHNjcm9sbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsID0gd2luZG93LnBhZ2VZT2Zmc2V0OwogICAgICAgICAgICAgICAgaWYgKHNjcm9sbCAhPT0gdGhpcy5zY3JvbGxZKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3MueSArPSBzY3JvbGwgLSB0aGlzLnNjcm9sbFk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxZID0gc2Nyb2xsOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGluc2VydDogZnVuY3Rpb24oZWxlbWVudCwgdGFyZ2V0KSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwuY2hpbGRyZW4sIHRoaXMuY2xzSXRlbSk7CgogICAgICAgICAgICAgICAgdmFyIGluc2VydCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF3aXRoaW4oZWxlbWVudCwgdGhpcyQxLiRlbCkgfHwgaXNQcmVkZWNlc3NvcihlbGVtZW50LCB0YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUodGFyZ2V0LCBlbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyKHRhcmdldCwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHRoaXMkMS4kZWwsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0ZShpbnNlcnQpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpbnNlcnQoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCiAgICAgICAgICAgICAgICBpZiAoIXdpdGhpbihlbGVtZW50LCB0aGlzLiRlbCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgY3NzKHRoaXMuaGFuZGxlID8gJCQodGhpcy5oYW5kbGUsIGVsZW1lbnQpIDogZWxlbWVudCwge3RvdWNoQWN0aW9uOiAnJywgdXNlclNlbGVjdDogJyd9KTsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5hbmltYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGUoZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlKGVsZW1lbnQpOyB9KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGdldFNvcnRhYmxlOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCAmJiAodGhpcy4kZ2V0Q29tcG9uZW50KGVsZW1lbnQsICdzb3J0YWJsZScpIHx8IHRoaXMuZ2V0U29ydGFibGUoZWxlbWVudC5wYXJlbnROb2RlKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH07CgogICAgZnVuY3Rpb24gaXNQcmVkZWNlc3NvcihlbGVtZW50LCB0YXJnZXQpIHsKICAgICAgICByZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlID09PSB0YXJnZXQucGFyZW50Tm9kZSAmJiBpbmRleChlbGVtZW50KSA+IGluZGV4KHRhcmdldCk7CiAgICB9CgogICAgdmFyIHRyYWNrVGltZXI7CiAgICBmdW5jdGlvbiB0cmFja1Njcm9sbChyZWYpIHsKICAgICAgICB2YXIgeCA9IHJlZi54OwogICAgICAgIHZhciB5ID0gcmVmLnk7CgoKICAgICAgICBjbGVhclRpbWVvdXQodHJhY2tUaW1lcik7CgogICAgICAgIHNjcm9sbFBhcmVudHMoZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4IC0gd2luZG93LnBhZ2VYT2Zmc2V0LCB5IC0gd2luZG93LnBhZ2VZT2Zmc2V0KSkuc29tZShmdW5jdGlvbiAoc2Nyb2xsRWwpIHsKCiAgICAgICAgICAgIHZhciBzY3JvbGwgPSBzY3JvbGxFbC5zY3JvbGxUb3A7CiAgICAgICAgICAgIHZhciBzY3JvbGxIZWlnaHQgPSBzY3JvbGxFbC5zY3JvbGxIZWlnaHQ7CgogICAgICAgICAgICBpZiAoZ2V0U2Nyb2xsaW5nRWxlbWVudCgpID09PSBzY3JvbGxFbCkgewogICAgICAgICAgICAgICAgc2Nyb2xsRWwgPSB3aW5kb3c7CiAgICAgICAgICAgICAgICBzY3JvbGxIZWlnaHQgLT0gd2luZG93LmlubmVySGVpZ2h0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0KHNjcm9sbEVsKTsKICAgICAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7CiAgICAgICAgICAgIHZhciBib3R0b20gPSByZWYuYm90dG9tOwoKICAgICAgICAgICAgaWYgKHRvcCA8IHkgJiYgdG9wICsgMzAgPiB5KSB7CiAgICAgICAgICAgICAgICBzY3JvbGwgLT0gNTsKICAgICAgICAgICAgfSBlbHNlIGlmIChib3R0b20gPiB5ICYmIGJvdHRvbSAtIDIwIDwgeSkgewogICAgICAgICAgICAgICAgc2Nyb2xsICs9IDU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChzY3JvbGwgPiAwICYmIHNjcm9sbCA8IHNjcm9sbEhlaWdodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRyYWNrVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3Aoc2Nyb2xsRWwsIHNjcm9sbCk7CiAgICAgICAgICAgICAgICAgICAgdHJhY2tTY3JvbGwoe3g6IHgsIHk6IHl9KTsKICAgICAgICAgICAgICAgIH0sIDEwKTsKICAgICAgICAgICAgfQoKICAgICAgICB9KTsKCiAgICB9CgogICAgZnVuY3Rpb24gdW50cmFja1Njcm9sbCgpIHsKICAgICAgICBjbGVhclRpbWVvdXQodHJhY2tUaW1lcik7CiAgICB9CgogICAgdmFyIG92ZXJmbG93UmUgPSAvYXV0b3xzY3JvbGwvOwoKICAgIGZ1bmN0aW9uIHNjcm9sbFBhcmVudHMoZWxlbWVudCkgewogICAgICAgIHZhciBzY3JvbGxFbCA9IGdldFNjcm9sbGluZ0VsZW1lbnQoKTsKICAgICAgICByZXR1cm4gcGFyZW50cyQxKGVsZW1lbnQsIGZ1bmN0aW9uIChwYXJlbnQpIHsgcmV0dXJuIHBhcmVudCA9PT0gc2Nyb2xsRWwgfHwgb3ZlcmZsb3dSZS50ZXN0KGNzcyhwYXJlbnQsICdvdmVyZmxvdycpKTsgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gcGFyZW50cyQxKGVsZW1lbnQsIGZuKSB7CiAgICAgICAgdmFyIHBhcmVudHMgPSBbXTsKICAgICAgICBkbyB7CiAgICAgICAgICAgIGlmIChmbihlbGVtZW50KSkgewogICAgICAgICAgICAgICAgcGFyZW50cy51bnNoaWZ0KGVsZW1lbnQpOwogICAgICAgICAgICB9CiAgICAgICAgfSB3aGlsZSAoZWxlbWVudCAmJiAoZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCkpOwogICAgICAgIHJldHVybiBwYXJlbnRzOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldFNjcm9sbGluZ0VsZW1lbnQoKSB7CiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgfQoKICAgIHZhciBvYmokMTsKCiAgICB2YXIgYWN0aXZlcyA9IFtdOwoKICAgIHZhciBUb29sdGlwID0gewoKICAgICAgICBtaXhpbnM6IFtDb250YWluZXIsIFRvZ2dsYWJsZSwgUG9zaXRpb25dLAoKICAgICAgICBhcmdzOiAndGl0bGUnLAoKICAgICAgICBwcm9wczogewogICAgICAgICAgICBkZWxheTogTnVtYmVyLAogICAgICAgICAgICB0aXRsZTogU3RyaW5nCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBwb3M6ICd0b3AnLAogICAgICAgICAgICB0aXRsZTogJycsCiAgICAgICAgICAgIGRlbGF5OiAwLAogICAgICAgICAgICBhbmltYXRpb246IFsndWstYW5pbWF0aW9uLXNjYWxlLXVwJ10sCiAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAsCiAgICAgICAgICAgIGNsczogJ3VrLWFjdGl2ZScsCiAgICAgICAgICAgIGNsc1BvczogJ3VrLXRvb2x0aXAnCiAgICAgICAgfSwKCiAgICAgICAgYmVmb3JlQ29ubmVjdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX2hhc1RpdGxlID0gaGFzQXR0cih0aGlzLiRlbCwgJ3RpdGxlJyk7CiAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsIHt0aXRsZTogJycsICdhcmlhLWV4cGFuZGVkJzogZmFsc2V9KTsKICAgICAgICB9LAoKICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLmhpZGUoKTsKICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwge3RpdGxlOiB0aGlzLl9oYXNUaXRsZSA/IHRoaXMudGl0bGUgOiBudWxsLCAnYXJpYS1leHBhbmRlZCc6IG51bGx9KTsKICAgICAgICB9LAoKICAgICAgICBtZXRob2RzOiB7CgogICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzOwoKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZSgpIHx8ICF0aGlzLnRpdGxlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGFjdGl2ZXMuZm9yRWFjaChmdW5jdGlvbiAoYWN0aXZlKSB7IHJldHVybiBhY3RpdmUuaGlkZSgpOyB9KTsKICAgICAgICAgICAgICAgIGFjdGl2ZXMucHVzaCh0aGlzKTsKCiAgICAgICAgICAgICAgICB0aGlzLl91bmJpbmQgPSBvbihkb2N1bWVudCwgcG9pbnRlclVwLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gIXdpdGhpbihlLnRhcmdldCwgdGhpcyQxLiRlbCkgJiYgdGhpcyQxLmhpZGUoKTsgfSk7CgogICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVyKTsKICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl9zaG93KCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmhpZGVUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNWaXNpYmxlKHRoaXMkMS4kZWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIH0sIDE1MCk7CiAgICAgICAgICAgICAgICB9LCB0aGlzLmRlbGF5KTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSgpIHx8IG1hdGNoZXModGhpcy4kZWwsICdpbnB1dDpmb2N1cycpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGFjdGl2ZXMuc3BsaWNlKGFjdGl2ZXMuaW5kZXhPZih0aGlzKSwgMSk7CgogICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVyKTsKICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5oaWRlVGltZXIpOwogICAgICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwgJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7CiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy50b29sdGlwLCBmYWxzZSk7CiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgJiYgcmVtb3ZlKHRoaXMudG9vbHRpcCk7CiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHRoaXMuX3VuYmluZCgpOwoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIF9zaG93OiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBhcHBlbmQodGhpcy5jb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgKCI8ZGl2IGNsYXNzPVwiIiArICh0aGlzLmNsc1BvcykgKyAiXCIgYXJpYS1leHBhbmRlZD1cInRydWVcIiBhcmlhLWhpZGRlbj4gPGRpdiBjbGFzcz1cIiIgKyAodGhpcy5jbHNQb3MpICsgIi1pbm5lclwiPiIgKyAodGhpcy50aXRsZSkgKyAiPC9kaXY+IDwvZGl2PiIpCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25BdCh0aGlzLnRvb2x0aXAsIHRoaXMuJGVsKTsKCiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbiA9IHRoaXMuZ2V0QXhpcygpID09PSAneScKICAgICAgICAgICAgICAgICAgICA/ICgoZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSkgKyAiLSIgKyAodGhpcy5hbGlnbikpCiAgICAgICAgICAgICAgICAgICAgOiAoKHRoaXMuYWxpZ24pICsgIi0iICsgKGZsaXBQb3NpdGlvbih0aGlzLmRpcikpKTsKCiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy50b29sdGlwLCB0cnVlKTsKCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBpc0FjdGl2ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaW5jbHVkZXMoYWN0aXZlcywgdGhpcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiAoIG9iaiQxID0gewoKICAgICAgICAgICAgZm9jdXM6ICdzaG93JywKICAgICAgICAgICAgYmx1cjogJ2hpZGUnCgogICAgICAgIH0sIG9iaiQxWyhwb2ludGVyRW50ZXIgKyAiICIgKyBwb2ludGVyTGVhdmUpXSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNUb3VjaChlKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUudHlwZSA9PT0gcG9pbnRlckVudGVyCiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNob3coKQogICAgICAgICAgICAgICAgICAgIDogdGhpcy5oaWRlKCk7CiAgICAgICAgICAgIH0sIG9iaiQxW3BvaW50ZXJEb3duXSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmlzQWN0aXZlKCkKICAgICAgICAgICAgICAgICAgICA/IHRoaXMuaGlkZSgpCiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnNob3coKTsKICAgICAgICAgICAgfSwgb2JqJDEgKQoKICAgIH07CgogICAgdmFyIFVwbG9hZCA9IHsKCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgYWxsb3c6IFN0cmluZywKICAgICAgICAgICAgY2xzRHJhZ292ZXI6IFN0cmluZywKICAgICAgICAgICAgY29uY3VycmVudDogTnVtYmVyLAogICAgICAgICAgICBtYXhTaXplOiBOdW1iZXIsCiAgICAgICAgICAgIG1ldGhvZDogU3RyaW5nLAogICAgICAgICAgICBtaW1lOiBTdHJpbmcsCiAgICAgICAgICAgIG1zZ0ludmFsaWRNaW1lOiBTdHJpbmcsCiAgICAgICAgICAgIG1zZ0ludmFsaWROYW1lOiBTdHJpbmcsCiAgICAgICAgICAgIG1zZ0ludmFsaWRTaXplOiBTdHJpbmcsCiAgICAgICAgICAgIG11bHRpcGxlOiBCb29sZWFuLAogICAgICAgICAgICBuYW1lOiBTdHJpbmcsCiAgICAgICAgICAgIHBhcmFtczogT2JqZWN0LAogICAgICAgICAgICB0eXBlOiBTdHJpbmcsCiAgICAgICAgICAgIHVybDogU3RyaW5nCiAgICAgICAgfSwKCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBhbGxvdzogZmFsc2UsCiAgICAgICAgICAgIGNsc0RyYWdvdmVyOiAndWstZHJhZ292ZXInLAogICAgICAgICAgICBjb25jdXJyZW50OiAxLAogICAgICAgICAgICBtYXhTaXplOiAwLAogICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICAgICAgbWltZTogZmFsc2UsCiAgICAgICAgICAgIG1zZ0ludmFsaWRNaW1lOiAnSW52YWxpZCBGaWxlIFR5cGU6ICVzJywKICAgICAgICAgICAgbXNnSW52YWxpZE5hbWU6ICdJbnZhbGlkIEZpbGUgTmFtZTogJXMnLAogICAgICAgICAgICBtc2dJbnZhbGlkU2l6ZTogJ0ludmFsaWQgRmlsZSBTaXplOiAlcyBLaWxvYnl0ZXMgTWF4JywKICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLAogICAgICAgICAgICBuYW1lOiAnZmlsZXNbXScsCiAgICAgICAgICAgIHBhcmFtczoge30sCiAgICAgICAgICAgIHR5cGU6ICcnLAogICAgICAgICAgICB1cmw6ICcnLAogICAgICAgICAgICBhYm9ydDogbm9vcCwKICAgICAgICAgICAgYmVmb3JlQWxsOiBub29wLAogICAgICAgICAgICBiZWZvcmVTZW5kOiBub29wLAogICAgICAgICAgICBjb21wbGV0ZTogbm9vcCwKICAgICAgICAgICAgY29tcGxldGVBbGw6IG5vb3AsCiAgICAgICAgICAgIGVycm9yOiBub29wLAogICAgICAgICAgICBmYWlsOiBub29wLAogICAgICAgICAgICBsb2FkOiBub29wLAogICAgICAgICAgICBsb2FkRW5kOiBub29wLAogICAgICAgICAgICBsb2FkU3RhcnQ6IG5vb3AsCiAgICAgICAgICAgIHByb2dyZXNzOiBub29wCiAgICAgICAgfSwKCiAgICAgICAgZXZlbnRzOiB7CgogICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKGUpIHsKCiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXMoZS50YXJnZXQsICdpbnB1dFt0eXBlPSJmaWxlIl0nKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmZpbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWQoZS50YXJnZXQuZmlsZXMpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gJyc7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBkcm9wOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBzdG9wKGUpOwoKICAgICAgICAgICAgICAgIHZhciB0cmFuc2ZlciA9IGUuZGF0YVRyYW5zZmVyOwoKICAgICAgICAgICAgICAgIGlmICghdHJhbnNmZXIgfHwgIXRyYW5zZmVyLmZpbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0RyYWdvdmVyKTsKCiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZCh0cmFuc2Zlci5maWxlcyk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBkcmFnZW50ZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHN0b3AoZSk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBkcmFnb3ZlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgc3RvcChlKTsKICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0RyYWdvdmVyKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGRyYWdsZWF2ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgc3RvcChlKTsKICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0RyYWdvdmVyKTsKICAgICAgICAgICAgfQoKICAgICAgICB9LAoKICAgICAgICBtZXRob2RzOiB7CgogICAgICAgICAgICB1cGxvYWQ6IGZ1bmN0aW9uKGZpbGVzKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpczsKCgogICAgICAgICAgICAgICAgaWYgKCFmaWxlcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3VwbG9hZCcsIFtmaWxlc10pOwoKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4U2l6ZSAmJiB0aGlzLm1heFNpemUgKiAxMDAwIDwgZmlsZXNbaV0uc2l6ZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZhaWwodGhpcy5tc2dJbnZhbGlkU2l6ZS5yZXBsYWNlKCclcycsIHRoaXMubWF4U2l6ZSkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hbGxvdyAmJiAhbWF0Y2gkMSh0aGlzLmFsbG93LCBmaWxlc1tpXS5uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZhaWwodGhpcy5tc2dJbnZhbGlkTmFtZS5yZXBsYWNlKCclcycsIHRoaXMuYWxsb3cpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWltZSAmJiAhbWF0Y2gkMSh0aGlzLm1pbWUsIGZpbGVzW2ldLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmFpbCh0aGlzLm1zZ0ludmFsaWRNaW1lLnJlcGxhY2UoJyVzJywgdGhpcy5taW1lKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkgewogICAgICAgICAgICAgICAgICAgIGZpbGVzID0gW2ZpbGVzWzBdXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZUFsbCh0aGlzLCBmaWxlcyk7CgogICAgICAgICAgICAgICAgdmFyIGNodW5rcyA9IGNodW5rKGZpbGVzLCB0aGlzLmNvbmN1cnJlbnQpOwogICAgICAgICAgICAgICAgdmFyIHVwbG9hZCA9IGZ1bmN0aW9uIChmaWxlcykgewoKICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IG5ldyBGb3JtRGF0YSgpOwoKICAgICAgICAgICAgICAgICAgICBmaWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChmaWxlKSB7IHJldHVybiBkYXRhLmFwcGVuZCh0aGlzJDEubmFtZSwgZmlsZSk7IH0pOwoKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcyQxLnBhcmFtcykgewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChrZXksIHRoaXMkMS5wYXJhbXNba2V5XSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBhamF4KHRoaXMkMS51cmwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiB0aGlzJDEubWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IHRoaXMkMS50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVTZW5kOiBmdW5jdGlvbiAoZW52KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHhociA9IGVudi54aHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHIudXBsb2FkICYmIG9uKHhoci51cGxvYWQsICdwcm9ncmVzcycsIHRoaXMkMS5wcm9ncmVzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2xvYWRTdGFydCcsICdsb2FkJywgJ2xvYWRFbmQnLCAnYWJvcnQnXS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiBvbih4aHIsIHR5cGUudG9Mb3dlckNhc2UoKSwgdGhpcyQxW3R5cGVdKTsgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuYmVmb3JlU2VuZChlbnYpOwoKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh4aHIpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuY29tcGxldGUoeGhyKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2h1bmtzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZChjaHVua3Muc2hpZnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5jb21wbGV0ZUFsbCh4aHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMkMS5lcnJvcihlKTsgfQogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB1cGxvYWQoY2h1bmtzLnNoaWZ0KCkpOwoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfTsKCiAgICBmdW5jdGlvbiBtYXRjaCQxKHBhdHRlcm4sIHBhdGgpIHsKICAgICAgICByZXR1cm4gcGF0aC5tYXRjaChuZXcgUmVnRXhwKCgiXiIgKyAocGF0dGVybi5yZXBsYWNlKC9cLy9nLCAnXFwvJykucmVwbGFjZSgvXCpcKi9nLCAnKFxcL1teXFwvXSspKicpLnJlcGxhY2UoL1wqL2csICdbXlxcL10rJykucmVwbGFjZSgvKCg/IVxcKSlcPy9nLCAnJDEuJykpICsgIiQiKSwgJ2knKSk7CiAgICB9CgogICAgZnVuY3Rpb24gY2h1bmsoZmlsZXMsIHNpemUpIHsKICAgICAgICB2YXIgY2h1bmtzID0gW107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkgKz0gc2l6ZSkgewogICAgICAgICAgICB2YXIgY2h1bmsgPSBbXTsKICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqKyspIHsKICAgICAgICAgICAgICAgIGNodW5rLnB1c2goZmlsZXNbaSArIGpdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjaHVua3MucHVzaChjaHVuayk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjaHVua3M7CiAgICB9CgogICAgZnVuY3Rpb24gc3RvcChlKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICB9CgogICAgVUlraXQuY29tcG9uZW50KCdjb3VudGRvd24nLCBDb3VudGRvd24pOwogICAgVUlraXQuY29tcG9uZW50KCdmaWx0ZXInLCBGaWx0ZXIpOwogICAgVUlraXQuY29tcG9uZW50KCdsaWdodGJveCcsIExpZ2h0Ym94KTsKICAgIFVJa2l0LmNvbXBvbmVudCgnbGlnaHRib3hQYW5lbCcsIGxpZ2h0Ym94UGFuZWwpOwogICAgVUlraXQuY29tcG9uZW50KCdub3RpZmljYXRpb24nLCBOb3RpZmljYXRpb24pOwogICAgVUlraXQuY29tcG9uZW50KCdwYXJhbGxheCcsIFBhcmFsbGF4JDEpOwogICAgVUlraXQuY29tcG9uZW50KCdzbGlkZXInLCBTbGlkZXIkMSk7CiAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlclBhcmFsbGF4JywgU2xpZGVzaG93UGFyYWxsYXgpOwogICAgVUlraXQuY29tcG9uZW50KCdzbGlkZXNob3cnLCBTbGlkZXNob3ckMSk7CiAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlc2hvd1BhcmFsbGF4JywgU2xpZGVzaG93UGFyYWxsYXgpOwogICAgVUlraXQuY29tcG9uZW50KCdzb3J0YWJsZScsIFNvcnRhYmxlKTsKICAgIFVJa2l0LmNvbXBvbmVudCgndG9vbHRpcCcsIFRvb2x0aXApOwogICAgVUlraXQuY29tcG9uZW50KCd1cGxvYWQnLCBVcGxvYWQpOwoKICAgIHsKICAgICAgICBib290KFVJa2l0KTsKICAgIH0KCiAgICByZXR1cm4gVUlraXQ7Cgp9KSk7Cg==", +{"status":false} +], + + +[ +"uikit-icons.js_3.2.0", +"LyohIFVJa2l0IDMuMi4wIHwgaHR0cDovL3d3dy5nZXR1aWtpdC5jb20gfCAoYykgMjAxNCAtIDIwMTkgWU9PdGhlbWUgfCBNSVQgTGljZW5zZSAqLwoKKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHsKICAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDoKICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZSgndWlraXRpY29ucycsIGZhY3RvcnkpIDoKICAgIChnbG9iYWwgPSBnbG9iYWwgfHwgc2VsZiwgZ2xvYmFsLlVJa2l0SWNvbnMgPSBmYWN0b3J5KCkpOwp9KHRoaXMsIGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnOwoKICAgIGZ1bmN0aW9uIHBsdWdpbihVSWtpdCkgewoKICAgICAgICBpZiAocGx1Z2luLmluc3RhbGxlZCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBVSWtpdC5pY29uLmFkZCh7CiAgICAgICAgIjUwMHB4IjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTkuNjI0LDExLjg2NmMtMC4xNDEsMC4xMzIsMC40NzksMC42NTgsMC42NjIsMC40MThjMC4wNTEtMC4wNDYsMC42MDctMC42MSwwLjY2Mi0wLjY2NGMwLDAsMC43MzgsMC43MTksMC44MTQsMC43MTkgYzAuMSwwLDAuMjA3LTAuMDU1LDAuMzIyLTAuMTdjMC4yNy0wLjI2OSwwLjEzNS0wLjQxNiwwLjA2Ni0wLjQ5NWwtMC42MzEtMC42MTZsMC42NTgtMC42NjhjMC4xNDYtMC4xNTYsMC4wMjEtMC4zMTQtMC4xLTAuNDQ5IGMtMC4xODItMC4xOC0wLjM1OS0wLjIyNi0wLjQ3MS0wLjEyNWwtMC42NTYsMC42NTRsLTAuNjU0LTAuNjU0Yy0wLjAzMy0wLjAzNC0wLjA4LTAuMDQ1LTAuMTI0LTAuMDQ1IGMtMC4wNzksMC0wLjE5MSwwLjA2OC0wLjMwNywwLjE4MWMtMC4yMDIsMC4yMDItMC4yNDcsMC4zNTEtMC4xMzMsMC40NjJsMC42NjUsMC42NjVMOS42MjQsMTEuODY2elwiLz48cGF0aCBkPVwiTTExLjA2NiwyLjg4NGMtMS4wNjEsMC0yLjE4NSwwLjI0OC0zLjAxMSwwLjYwNGMtMC4wODcsMC4wMzQtMC4xNDEsMC4xMDYtMC4xNSwwLjIwNUM3Ljg5MywzLjc4NCw3LjkxOSwzLjkwOSw3Ljk4Miw0LjA2NiBjMC4wNSwwLjEzNiwwLjE4NywwLjQ3NCwwLjQ1MiwwLjM3MmMwLjg0NC0wLjMyNiwxLjc3OS0wLjUwNywyLjYzMy0wLjUwN2MwLjk2MywwLDEuOSwwLjE5MSwyLjc4MSwwLjU2NCBjMC42OTUsMC4yOTIsMS4zNTcsMC43MTksMi4wNzgsMS4zNGMwLjA1MSwwLjA0NCwwLjEwNSwwLjA2OCwwLjE2NCwwLjA2OGMwLjE0MywwLDAuMjczLTAuMTM3LDAuMzg5LTAuMjcxIGMwLjE5MS0wLjIxNCwwLjMyNC0wLjM5NSwwLjEzNS0wLjU3NWMtMC42ODYtMC42NTQtMS40MzYtMS4xMzgtMi4zNjMtMS41MzNDMTMuMjQsMy4wOTcsMTIuMTY4LDIuODg0LDExLjA2NiwyLjg4NHpcIi8+PHBhdGggZD1cIk0xNi40MywxNS43NDdjLTAuMDkyLTAuMDI4LTAuMjQyLDAuMDUtMC4zMDksMC4xMTlsMCwwYy0wLjY1MiwwLjY1Mi0xLjQyLDEuMTY5LTIuMjY4LDEuNTIxIGMtMC44NzcsMC4zNzEtMS44MTQsMC41NTEtMi43NzksMC41NTFjLTAuOTYxLDAtMS44OTYtMC4xODktMi43NzUtMC41NjRjLTAuODQ4LTAuMzYtMS42MTItMC44NzktMi4yNjgtMS41MyBjLTAuNjgyLTAuNjg4LTEuMTk2LTEuNDU1LTEuNTI5LTIuMjY4Yy0wLjMyNS0wLjc5OS0wLjQ3MS0xLjY0My0wLjQ3MS0xLjY0M2MtMC4wNDUtMC4yNC0wLjI1OC0wLjI0OS0wLjU2Ny0wLjIwMyBjLTAuMTI4LDAuMDIxLTAuNTE5LDAuMDc5LTAuNDgzLDAuMzZ2MC4wMWMwLjEwNSwwLjY0NCwwLjI4OSwxLjI4NCwwLjU0NSwxLjg5NWMwLjQxNywwLjk2OSwxLjAwMiwxLjg0OSwxLjc1NiwyLjYwNCBjMC43NTcsMC43NTQsMS42MzYsMS4zNCwyLjYwNCwxLjc1N0M4LjkwMSwxOC43ODUsOS45NywxOSwxMS4wODgsMTljMS4xMDQsMCwyLjE4Ni0wLjIxNSwzLjE4OC0wLjY0NSBjMS44MzgtMC44OTYsMi42MDQtMS43NTcsMi42MDQtMS43NTdjMC4xODItMC4yMDQsMC4yMjctMC4zMTctMC4xLTAuNjQzQzE2Ljc3OSwxNS45NTYsMTYuNTI1LDE1Ljc3NCwxNi40MywxNS43NDd6XCIvPjxwYXRoIGQ9XCJNNS42MzMsMTMuMjg3YzAuMjkzLDAuNzEsMC43MjMsMS4zNDEsMS4yNjIsMS44ODJjMC41NCwwLjU0LDEuMTcyLDAuOTcxLDEuODgyLDEuMjY0YzAuNzMxLDAuMzAzLDEuNTA5LDAuNDYxLDIuMjk4LDAuNDYxIGMwLjgwMSwwLDEuNTc4LTAuMTU4LDIuMjk3LTAuNDYxYzAuNzExLTAuMjkzLDEuMzQ0LTAuNzI0LDEuODgzLTEuMjY0YzAuNTQzLTAuNTQxLDAuOTcxLTEuMTcyLDEuMjY0LTEuODgyIGMwLjMxNC0wLjcyMSwwLjQ2My0xLjUsMC40NjMtMi4yOThjMC0wLjc5LTAuMTQ4LTEuNTY5LTAuNDYzLTIuMjg5Yy0wLjI5My0wLjY5OS0wLjcyMS0xLjMyOS0xLjI2NC0xLjg4MSBjLTAuNTM5LTAuNTQxLTEuMTcyLTAuOTU5LTEuODY3LTEuMjYzYy0wLjcyMS0wLjMwMy0xLjUtMC40NjEtMi4yOTktMC40NjFjLTAuODAyLDAtMS42MTMsMC4xNTktMi4zMjIsMC40NjEgYy0wLjU3NywwLjI1LTEuNTQ0LDAuODY3LTIuMTE5LDEuNDU0djAuMDEyVjIuMTA4aDguMTZDMTUuMSwyLjEwNCwxNS4xLDEuNjksMTUuMSwxLjU1MkMxNS4xLDEuNDE3LDE1LjEsMSwxNC44MDksMUg1LjkxNSBDNS42NzYsMSw1LjUyNywxLjE5Miw1LjUyNywxLjM4NHY2Ljg0YzAsMC4yMTQsMC4yNzMsMC4zNzIsMC41MjksMC40MjhjMC41LDAuMTA1LDAuNjE0LTAuMDU2LDAuNzM3LTAuMjI0bDAsMCBjMC4xOC0wLjI3MywwLjc3Ni0wLjg4NCwwLjc4Ny0wLjg5NGMwLjkwMS0wLjkwNSwyLjExNy0xLjQwOCwzLjQxNi0xLjQwOGMxLjI4NSwwLDIuNSwwLjUwMSwzLjQxMiwxLjQwOCBjMC45MTQsMC45MTQsMS40MDgsMi4xMjIsMS40MDgsMy40MDVjMCwxLjI4OC0wLjUwOCwyLjQ5Ni0xLjQwOCwzLjQwNWMtMC45LDAuODk2LTIuMTUyLDEuNDA2LTMuNDM4LDEuNDA2IGMtMC44NzcsMC0xLjcxMS0wLjIyOS0yLjQzMy0wLjY3MXYtNC4xNThjMC0wLjU1MywwLjIzNy0xLjE1MSwwLjY0My0xLjYxNGMwLjQ2Mi0wLjUxOSwxLjA5NC0wLjc5OSwxLjc4Mi0wLjc5OSBjMC42NjQsMCwxLjI5MywwLjI1MywxLjc1OCwwLjcxNWMwLjQ1OSwwLjQ1OSwwLjcwOSwxLjA3MSwwLjcwOSwxLjcyM2MwLDEuMzg1LTEuMDk0LDIuNDY4LTIuNDg4LDIuNDY4IGMtMC4yNzMsMC0wLjc2OS0wLjEyMS0wLjc4MS0wLjEyNWMtMC4yODEtMC4wODctMC40MDUsMC4zMDYtMC40MzgsMC40MzZjLTAuMTU5LDAuNDk2LDAuMDc5LDAuNTg1LDAuMTIzLDAuNjA3IGMwLjQ1MiwwLjEzNywwLjc0MywwLjE1NywxLjEyOSwwLjE1N2MxLjk3MywwLDMuNTcyLTEuNiwzLjU3Mi0zLjU3YzAtMS45NjQtMS42LTMuNTUyLTMuNTcyLTMuNTUyYy0wLjk3LDAtMS44NzIsMC4zNi0yLjU0NiwxLjAzOCBjLTAuNjU2LDAuNjMxLTEuMDI3LDEuNDg3LTEuMDI3LDIuMzIydjMuNDM4di0wLjAxMWMtMC4zNzItMC40Mi0wLjczMi0xLjA0MS0wLjk4MS0xLjY4MmMtMC4xMDItMC4yNDgtMC4zMTUtMC4yMDItMC42MDctMC4xMTMgYy0wLjEzNSwwLjAzNS0wLjUxOSwwLjE1Ny0wLjQ0LDAuNDM5QzUuMzcyLDEyLjc5OSw1LjU3NywxMy4xNjQsNS42MzMsMTMuMjg3elwiLz48L3N2Zz4iLAogICAgICAgICJhbGJ1bSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgeD1cIjVcIiB5PVwiMlwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxXCIvPjxyZWN0IHg9XCIzXCIgeT1cIjRcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMVwiLz48cmVjdCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiB4PVwiMS41XCIgeT1cIjYuNVwiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxMVwiLz48L3N2Zz4iLAogICAgICAgICJhcnJvdy1kb3duIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWdvbiBwb2ludHM9XCIxMC41LDE2LjA4IDUuNjMsMTAuNjYgNi4zNywxMCAxMC41LDE0LjU4IDE0LjYzLDEwIDE1LjM3LDEwLjY2XCIvPjxsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHgxPVwiMTAuNVwiIHkxPVwiNFwiIHgyPVwiMTAuNVwiIHkyPVwiMTVcIi8+PC9zdmc+IiwKICAgICAgICAiYXJyb3ctbGVmdCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHBvaW50cz1cIjEwIDE0IDUgOS41IDEwIDVcIi8+PGxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeDE9XCIxNlwiIHkxPVwiOS41XCIgeDI9XCI1XCIgeTI9XCI5LjUyXCIvPjwvc3ZnPiIsCiAgICAgICAgImFycm93LXJpZ2h0IjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgcG9pbnRzPVwiMTAgNSAxNSA5LjUgMTAgMTRcIi8+PGxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeDE9XCI0XCIgeTE9XCI5LjVcIiB4Mj1cIjE1XCIgeTI9XCI5LjVcIi8+PC9zdmc+IiwKICAgICAgICAiYXJyb3ctdXAiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwb2x5Z29uIHBvaW50cz1cIjEwLjUsNCAxNS4zNyw5LjQgMTQuNjMsMTAuMDggMTAuNSw1LjQ5IDYuMzcsMTAuMDggNS42Myw5LjRcIi8+PGxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeDE9XCIxMC41XCIgeTE9XCIxNlwiIHgyPVwiMTAuNVwiIHkyPVwiNVwiLz48L3N2Zz4iLAogICAgICAgICJiYW4iOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgY3g9XCIxMFwiIGN5PVwiMTBcIiByPVwiOVwiLz48bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiB4MT1cIjRcIiB5MT1cIjMuNVwiIHgyPVwiMTZcIiB5Mj1cIjE2LjVcIi8+PC9zdmc+IiwKICAgICAgICAiYmVoYW5jZSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk05LjUsMTAuNmMtMC40LTAuNS0wLjktMC45LTEuNi0xLjFjMS43LTEsMi4yLTMuMiwwLjctNC43QzcuOCw0LDYuMyw0LDUuMiw0QzMuNSw0LDEuNyw0LDAsNHYxMmMxLjcsMCwzLjQsMCw1LjIsMCBjMSwwLDIuMSwwLDMuMS0wLjVDMTAuMiwxNC42LDEwLjUsMTIuMyw5LjUsMTAuNkw5LjUsMTAuNnogTTUuNiw2LjFjMS44LDAsMS44LDIuNy0wLjEsMi43Yy0xLDAtMiwwLTIuOSwwVjYuMUg1LjZ6IE0yLjYsMTMuOHYtMy4xIGMxLjEsMCwyLjEsMCwzLjIsMGMyLjEsMCwyLjEsMy4yLDAuMSwzLjJMMi42LDEzLjh6XCIvPjxwYXRoIGQ9XCJNMTkuOSwxMC45QzE5LjcsOS4yLDE4LjcsNy42LDE3LDdjLTQuMi0xLjMtNy4zLDMuNC01LjMsNy4xYzAuOSwxLjcsMi44LDIuMyw0LjcsMi4xYzEuNy0wLjIsMi45LTEuMywzLjQtMi45aC0yLjIgYy0wLjQsMS4zLTIuNCwxLjUtMy41LDAuNmMtMC40LTAuNC0wLjYtMS4xLTAuNi0xLjdIMjBDMjAsMTEuNywxOS45LDEwLjksMTkuOSwxMC45eiBNMTMuNSwxMC42YzAtMS42LDIuMy0yLjcsMy41LTEuNCBjMC40LDAuNCwwLjUsMC45LDAuNiwxLjRIMTMuNUwxMy41LDEwLjZ6XCIvPjxyZWN0IHg9XCIxM1wiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiMS40XCIvPjwvc3ZnPiIsCiAgICAgICAgImJlbGwiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGQ9XCJNMTcsMTUuNSBMMywxNS41IEMyLjk5LDE0LjYxIDMuNzksMTMuMzQgNC4xLDEyLjUxIEM0LjU4LDExLjMgNC43MiwxMC4zNSA1LjE5LDcuMDEgQzUuNTQsNC41MyA1Ljg5LDMuMiA3LjI4LDIuMTYgQzguMTMsMS41NiA5LjM3LDEuNSA5LjgxLDEuNSBMOS45NiwxLjUgQzkuOTYsMS41IDExLjYyLDEuNDEgMTIuNjcsMi4xNyBDMTQuMDgsMy4yIDE0LjQyLDQuNTQgMTQuNzcsNy4wMiBDMTUuMjYsMTAuMzUgMTUuNCwxMS4zMSAxNS44NywxMi41MiBDMTYuMiwxMy4zNCAxNy4wMSwxNC42MSAxNywxNS41IEwxNywxNS41IFpcIi8+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgZD1cIk0xMi4zOSwxNiBDMTIuMzksMTcuMzcgMTEuMzUsMTguNDMgOS45MSwxOC40MyBDOC40OCwxOC40MyA3LjQyLDE3LjM3IDcuNDIsMTZcIi8+PC9zdmc+IiwKICAgICAgICAiYm9sZCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk01LDE1LjMgQzUuNjYsMTUuMyA1LjksMTUgNS45LDE0LjUzIEw1LjksNS41IEM1LjksNC45MiA1LjU2LDQuNyA1LDQuNyBMNSw0IEw4Ljk1LDQgQzEyLjYsNCAxMy43LDUuMzcgMTMuNyw2LjkgQzEzLjcsNy44NyAxMy4xNCw5LjE3IDEwLjg2LDkuNTkgTDEwLjg2LDkuNyBDMTMuMjUsOS44NiAxNC4yOSwxMS4yOCAxNC4zLDEyLjU0IEMxNC4zLDE0LjQ3IDEyLjk0LDE2IDksMTYgTDUsMTYgTDUsMTUuMyBaIE05LDkuMyBDMTEuMTksOS4zIDExLjgsOC41IDExLjg1LDcgQzExLjg1LDUuNjUgMTEuMyw0LjggOSw0LjggTDcuNjcsNC44IEw3LjY3LDkuMyBMOSw5LjMgWiBNOS4xODUsMTUuMjIgQzExLjk3LDE1IDEyLjM5LDE0IDEyLjQsMTIuNTggQzEyLjQsMTEuMTUgMTEuMzksMTAgOSwxMCBMNy42NywxMCBMNy42NywxNSBMOS4xOCwxNSBaXCIvPjwvc3ZnPiIsCiAgICAgICAgImJvbHQiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNC43NCwyMCBMNy43MywxMiBMMywxMiBMMTUuNDMsMSBMMTIuMzIsOSBMMTcuMDIsOSBMNC43NCwyMCBMNC43NCwyMCBMNC43NCwyMCBaIE05LjE4LDExIEw3LjEsMTYuMzkgTDE0LjQ3LDEwIEwxMC44NiwxMCBMMTIuOTksNC42NyBMNS42MSwxMSBMOS4xOCwxMSBMOS4xOCwxMSBMOS4xOCwxMSBaXCIvPjwvc3ZnPiIsCiAgICAgICAgImJvb2ttYXJrIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWdvbiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBwb2ludHM9XCI1LjUgMS41IDE1LjUgMS41IDE1LjUgMTcuNSAxMC41IDEyLjUgNS41IDE3LjVcIi8+PC9zdmc+IiwKICAgICAgICAiY2FsZW5kYXIiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNIDIsMyAyLDE3IDE4LDE3IDE4LDMgMiwzIFogTSAxNywxNiAzLDE2IDMsOCAxNyw4IDE3LDE2IFogTSAxNyw3IDMsNyAzLDQgMTcsNCAxNyw3IFpcIi8+PHJlY3Qgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiM1wiIHg9XCI2XCIgeT1cIjJcIi8+PHJlY3Qgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiM1wiIHg9XCIxM1wiIHk9XCIyXCIvPjwvc3ZnPiIsCiAgICAgICAgImNhbWVyYSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBjeD1cIjEwXCIgY3k9XCIxMC44XCIgcj1cIjMuOFwiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBkPVwiTTEsNC41IEMwLjcsNC41IDAuNSw0LjcgMC41LDUgTDAuNSwxNyBDMC41LDE3LjMgMC43LDE3LjUgMSwxNy41IEwxOSwxNy41IEMxOS4zLDE3LjUgMTkuNSwxNy4zIDE5LjUsMTcgTDE5LjUsNSBDMTkuNSw0LjcgMTkuMyw0LjUgMTksNC41IEwxMy41LDQuNSBMMTMuNSwyLjkgQzEzLjUsMi42IDEzLjMsMi41IDEzLDIuNSBMNywyLjUgQzYuNywyLjUgNi41LDIuNiA2LjUsMi45IEw2LjUsNC41IEwxLDQuNSBMMSw0LjUgWlwiLz48L3N2Zz4iLAogICAgICAgICJjYXJ0IjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGN4PVwiNy4zXCIgY3k9XCIxNy4zXCIgcj1cIjEuNFwiLz48Y2lyY2xlIGN4PVwiMTMuM1wiIGN5PVwiMTcuM1wiIHI9XCIxLjRcIi8+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHBvaW50cz1cIjAgMiAzLjIgNCA1LjMgMTIuNSAxNiAxMi41IDE4IDYuNSA4IDYuNVwiLz48L3N2Zz4iLAogICAgICAgICJjaGVjayI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIHBvaW50cz1cIjQsMTAgOCwxNSAxNyw0XCIvPjwvc3ZnPiIsCiAgICAgICAgImNoZXZyb24tZG91YmxlLWxlZnQiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjAzXCIgcG9pbnRzPVwiMTAgMTQgNiAxMCAxMCA2XCIvPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjAzXCIgcG9pbnRzPVwiMTQgMTQgMTAgMTAgMTQgNlwiLz48L3N2Zz4iLAogICAgICAgICJjaGV2cm9uLWRvdWJsZS1yaWdodCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMDNcIiBwb2ludHM9XCIxMCA2IDE0IDEwIDEwIDE0XCIvPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjAzXCIgcG9pbnRzPVwiNiA2IDEwIDEwIDYgMTRcIi8+PC9zdmc+IiwKICAgICAgICAiY2hldnJvbi1kb3duIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4wM1wiIHBvaW50cz1cIjE2IDcgMTAgMTMgNCA3XCIvPjwvc3ZnPiIsCiAgICAgICAgImNoZXZyb24tbGVmdCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMDNcIiBwb2ludHM9XCIxMyAxNiA3IDEwIDEzIDRcIi8+PC9zdmc+IiwKICAgICAgICAiY2hldnJvbi1yaWdodCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMDNcIiBwb2ludHM9XCI3IDQgMTMgMTAgNyAxNlwiLz48L3N2Zz4iLAogICAgICAgICJjaGV2cm9uLXVwIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4wM1wiIHBvaW50cz1cIjQgMTMgMTAgNyAxNiAxM1wiLz48L3N2Zz4iLAogICAgICAgICJjbG9jayI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBjeD1cIjEwXCIgY3k9XCIxMFwiIHI9XCI5XCIvPjxyZWN0IHg9XCI5XCIgeT1cIjRcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCI3XCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGQ9XCJNMTMuMDE4LDE0LjE5NyBMOS40NDUsMTAuNjI1XCIvPjwvc3ZnPiIsCiAgICAgICAgImNsb3NlIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjA2XCIgZD1cIk0xNiwxNiBMNCw0XCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMDZcIiBkPVwiTTE2LDQgTDQsMTZcIi8+PC9zdmc+IiwKICAgICAgICAiY2xvdWQtZG93bmxvYWQiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGQ9XCJNNi41LDE0LjYxIEwzLjc1LDE0LjYxIEMxLjk2LDE0LjYxIDAuNSwxMy4xNyAwLjUsMTEuMzkgQzAuNSw5Ljc2IDEuNzIsOC40MSAzLjMsOC4yIEMzLjM4LDUuMzEgNS43NSwzIDguNjgsMyBDMTEuMTksMyAxMy4zMSw0LjcxIDEzLjg5LDcuMDIgQzE0LjM5LDYuOCAxNC45Myw2LjY4IDE1LjUsNi42OCBDMTcuNzEsNi42OCAxOS41LDguNDUgMTkuNSwxMC42NCBDMTkuNSwxMi44MyAxNy43MSwxNC42IDE1LjUsMTQuNiBMMTIuNSwxNC42XCIvPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBwb2ludHM9XCIxMS43NSAxNiA5LjUgMTguMjUgNy4yNSAxNlwiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBkPVwiTTkuNSwxOCBMOS41LDkuNVwiLz48L3N2Zz4iLAogICAgICAgICJjbG91ZC11cGxvYWQiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGQ9XCJNNi41LDE0LjYxIEwzLjc1LDE0LjYxIEMxLjk2LDE0LjYxIDAuNSwxMy4xNyAwLjUsMTEuMzkgQzAuNSw5Ljc2IDEuNzIsOC40MSAzLjMxLDguMiBDMy4zOCw1LjMxIDUuNzUsMyA4LjY4LDMgQzExLjE5LDMgMTMuMzEsNC43MSAxMy44OSw3LjAyIEMxNC4zOSw2LjggMTQuOTMsNi42OCAxNS41LDYuNjggQzE3LjcxLDYuNjggMTkuNSw4LjQ1IDE5LjUsMTAuNjQgQzE5LjUsMTIuODMgMTcuNzEsMTQuNiAxNS41LDE0LjYgTDEyLjUsMTQuNlwiLz48cG9seWxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgcG9pbnRzPVwiNy4yNSAxMS43NSA5LjUgOS41IDExLjc1IDExLjc1XCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIGQ9XCJNOS41LDE4IEw5LjUsOS41XCIvPjwvc3ZnPiIsCiAgICAgICAgImNvZGUiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjAxXCIgcG9pbnRzPVwiMTMsNCAxOSwxMCAxMywxNlwiLz48cG9seWxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4wMVwiIHBvaW50cz1cIjcsNCAxLDEwIDcsMTZcIi8+PC9zdmc+IiwKICAgICAgICAiY29nIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIGN4PVwiOS45OTdcIiBjeT1cIjEwXCIgcj1cIjMuMzFcIi8+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgZD1cIk0xOC40ODgsMTIuMjg1IEwxNi4yMDUsMTYuMjM3IEMxNS4zMjIsMTUuNDk2IDE0LjE4NSwxNS4yODEgMTMuMzAzLDE1Ljc5MSBDMTIuNDI4LDE2LjI4OSAxMi4wNDcsMTcuMzczIDEyLjI0NiwxOC41IEw3LjczNSwxOC41IEM3LjkzOCwxNy4zNzQgNy41NTMsMTYuMjk5IDYuNjg0LDE1Ljc5MSBDNS44MDEsMTUuMjcgNC42NTUsMTUuNDkyIDMuNzczLDE2LjIzNyBMMS41LDEyLjI4NSBDMi41NzMsMTEuODcxIDMuMzE3LDEwLjk5OSAzLjMxNyw5Ljk5MSBDMy4zMDUsOC45OCAyLjU3Myw4LjEyMSAxLjUsNy43MTYgTDMuNzY1LDMuNzg0IEM0LjY0NSw0LjUxNiA1Ljc5NCw0LjczOCA2LjY4Nyw0LjIzMiBDNy41NTUsMy43MjIgNy45MzksMi42MzcgNy43MzUsMS41IEwxMi4yNjMsMS41IEMxMi4wNzIsMi42MzcgMTIuNDQxLDMuNzEgMTMuMzE0LDQuMjIgQzE0LjIwNiw0LjczIDE1LjM0Myw0LjUxNiAxNi4yMjUsMy43OTQgTDE4LjQ4Nyw3LjcxNCBDMTcuNDA0LDguMTE3IDE2LjY2MSw4Ljk4OCAxNi42NywxMC4wMDkgQzE2LjY3MiwxMS4wMTggMTcuNDE1LDExLjg4IDE4LjQ4OCwxMi4yODUgTDE4LjQ4OCwxMi4yODUgWlwiLz48L3N2Zz4iLAogICAgICAgICJjb21tZW50IjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYsMTguNzEgTDYsMTQgTDEsMTQgTDEsMSBMMTksMSBMMTksMTQgTDEwLjcxLDE0IEw2LDE4LjcxIEw2LDE4LjcxIFogTTIsMTMgTDcsMTMgTDcsMTYuMjkgTDEwLjI5LDEzIEwxOCwxMyBMMTgsMiBMMiwyIEwyLDEzIEwyLDEzIFpcIi8+PC9zdmc+IiwKICAgICAgICAiY29tbWVudGluZyI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlnb24gZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgcG9pbnRzPVwiMS41LDEuNSAxOC41LDEuNSAxOC41LDEzLjUgMTAuNSwxMy41IDYuNSwxNy41IDYuNSwxMy41IDEuNSwxMy41XCIvPjxjaXJjbGUgY3g9XCIxMFwiIGN5PVwiOFwiIHI9XCIxXCIvPjxjaXJjbGUgY3g9XCI2XCIgY3k9XCI4XCIgcj1cIjFcIi8+PGNpcmNsZSBjeD1cIjE0XCIgY3k9XCI4XCIgcj1cIjFcIi8+PC9zdmc+IiwKICAgICAgICAiY29tbWVudHMiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBwb2ludHM9XCIyIDAuNSAxOS41IDAuNSAxOS41IDEzXCIvPjxwYXRoIGQ9XCJNNSwxOS43MSBMNSwxNSBMMCwxNSBMMCwyIEwxOCwyIEwxOCwxNSBMOS43MSwxNSBMNSwxOS43MSBMNSwxOS43MSBMNSwxOS43MSBaIE0xLDE0IEw2LDE0IEw2LDE3LjI5IEw5LjI5LDE0IEwxNywxNCBMMTcsMyBMMSwzIEwxLDE0IEwxLDE0IEwxLDE0IFpcIi8+PC9zdmc+IiwKICAgICAgICAiY29weSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeD1cIjMuNVwiIHk9XCIyLjVcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTZcIi8+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHBvaW50cz1cIjUgMC41IDE3LjUgMC41IDE3LjUgMTdcIi8+PC9zdmc+IiwKICAgICAgICAiY3JlZGl0LWNhcmQiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxyZWN0IGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHg9XCIxLjVcIiB5PVwiNC41XCIgd2lkdGg9XCIxN1wiIGhlaWdodD1cIjEyXCIvPjxyZWN0IHg9XCIxXCIgeT1cIjdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiM1wiLz48L3N2Zz4iLAogICAgICAgICJkYXRhYmFzZSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGVsbGlwc2UgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgY3g9XCIxMFwiIGN5PVwiNC42NFwiIHJ4PVwiNy41XCIgcnk9XCIzLjE0XCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIGQ9XCJNMTcuNSw4LjExIEMxNy41LDkuODUgMTQuMTQsMTEuMjUgMTAsMTEuMjUgQzUuODYsMTEuMjUgMi41LDkuODQgMi41LDguMTFcIi8+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgZD1cIk0xNy41LDExLjI1IEMxNy41LDEyLjk5IDE0LjE0LDE0LjM5IDEwLDE0LjM5IEM1Ljg2LDE0LjM5IDIuNSwxMi45OCAyLjUsMTEuMjVcIi8+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgZD1cIk0xNy40OSw0LjY0IEwxNy41LDE0LjM2IEMxNy41LDE2LjEgMTQuMTQsMTcuNSAxMCwxNy41IEM1Ljg2LDE3LjUgMi41LDE2LjA5IDIuNSwxNC4zNiBMMi41LDQuNjRcIi8+PC9zdmc+IiwKICAgICAgICAiZGVza3RvcCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgeD1cIjhcIiB5PVwiMTVcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIyXCIvPjxyZWN0IHg9XCIxMVwiIHk9XCIxNVwiIHdpZHRoPVwiMVwiIGhlaWdodD1cIjJcIi8+PHJlY3QgeD1cIjVcIiB5PVwiMTZcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMVwiLz48cmVjdCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiB4PVwiMS41XCIgeT1cIjMuNVwiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxMVwiLz48L3N2Zz4iLAogICAgICAgICJkb3dubG9hZCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHBvaW50cz1cIjE0LDEwIDkuNSwxNC41IDUsMTBcIi8+PHJlY3QgeD1cIjNcIiB5PVwiMTdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMVwiLz48bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiB4MT1cIjkuNVwiIHkxPVwiMTMuOTFcIiB4Mj1cIjkuNVwiIHkyPVwiM1wiLz48L3N2Zz4iLAogICAgICAgICJkcmliYmJsZSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgZD1cIk0xLjMsOC45YzAsMCw1LDAuMSw4LjYtMWMxLjQtMC40LDIuNi0wLjksNC0xLjkgYzEuNC0xLjEsMi41LTIuNSwyLjUtMi41XCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIGQ9XCJNMy45LDE2LjZjMCwwLDEuNy0yLjgsMy41LTQuMiBjMS44LTEuMyw0LTIsNS43LTIuMkMxNiwxMCwxOSwxMC42LDE5LDEwLjZcIi8+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgZD1cIk02LjksMS42YzAsMCwzLjMsNC42LDQuMiw2LjggYzAuNCwwLjksMS4zLDMuMSwxLjksNS4yYzAuNiwyLDAuOSw0LjQsMC45LDQuNFwiLz48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIGN4PVwiMTBcIiBjeT1cIjEwXCIgcj1cIjlcIi8+PC9zdmc+IiwKICAgICAgICAiZXRzeSI6ICI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCI+PHBhdGggZD1cIk04LDQuMjZDOCw0LjA3LDgsNCw4LjMxLDRoNC40NmMuNzksMCwxLjIyLjY3LDEuNTMsMS45MWwuMjUsMWguNzZjLjE0LTIuODIuMjYtNCwuMjYtNFMxMy42NSwzLDEyLjUyLDNINi44MUwzLjc1LDIuOTJ2Ljg0bDEsLjJjLjczLjExLjkuMjcsMSwxLDAsMCwuMDYsMiwuMDYsNS4xN3MtLjA2LDUuMTQtLjA2LDUuMTRjMCwuNTktLjIzLjgxLTEsLjk0bC0xLC4ydi44NGwzLjA2LS4xaDUuMTFjMS4xNSwwLDMuODIuMSwzLjgyLjEsMC0uNy40NS0zLjg4LjUxLTQuMjJoLS43M2wtLjc2LDEuNjlhMi4yNSwyLjI1LDAsMCwxLTIuNDUsMS40N0g5LjRjLTEsMC0xLjQ0LS40LTEuNDQtMS4yNFYxMC40NHMyLjE2LDAsMi44Ni4wNmMuNTUsMCwuODUuMTksMS4wNiwxbC4yMywxSDEzTDEyLjksOS45NCwxMyw3LjQxaC0uODVsLS4yOCwxLjEzYy0uMTYuNzQtLjI4Ljg0LTEsMS0xLC4xLTIuODkuMDktMi44OS4wOVpcIi8+PC9zdmc+IiwKICAgICAgICAiZXhwYW5kIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWdvbiBwb2ludHM9XCIxMyAyIDE4IDIgMTggNyAxNyA3IDE3IDMgMTMgM1wiLz48cG9seWdvbiBwb2ludHM9XCIyIDEzIDMgMTMgMyAxNyA3IDE3IDcgMTggMiAxOFwiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBkPVwiTTExLDkgTDE3LDNcIi8+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgZD1cIk0zLDE3IEw5LDExXCIvPjwvc3ZnPiIsCiAgICAgICAgImZhY2Vib29rIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTExLDEwaDIuNmwwLjQtM0gxMVY1LjNjMC0wLjksMC4yLTEuNSwxLjUtMS41SDE0VjEuMWMtMC4zLDAtMS0wLjEtMi4xLTAuMUM5LjYsMSw4LDIuNCw4LDV2Mkg1LjV2M0g4djhoM1YxMHpcIi8+PC9zdmc+IiwKICAgICAgICAiZmlsZS1lZGl0IjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBkPVwiTTE4LjY1LDEuNjggQzE4LjQxLDEuNDUgMTguMTA5LDEuMzMgMTcuODEsMS4zMyBDMTcuNDk5LDEuMzMgMTcuMjA5LDEuNDUgMTYuOTgsMS42OCBMOC45Miw5Ljc2IEw4LDEyLjMzIEwxMC41NSwxMS40MSBMMTguNjUxLDMuMzQgQzE5LjEyLDIuODcgMTkuMTIsMi4xNSAxOC42NSwxLjY4IEwxOC42NSwxLjY4IEwxOC42NSwxLjY4IFpcIi8+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHBvaW50cz1cIjE2LjUgOC40ODIgMTYuNSAxOC41IDMuNSAxOC41IDMuNSAxLjUgMTQuMjExIDEuNVwiLz48L3N2Zz4iLAogICAgICAgICJmaWxlLXBkZiI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjE3XCIgeD1cIjMuNVwiIHk9XCIxLjVcIi8+PHBhdGggZD1cIk0xNC42NSAxMS42N2MtLjQ4LjMtMS4zNy0uMTktMS43OS0uMzdhNC42NSA0LjY1IDAgMCAxIDEuNDkuMDZjLjM1LjEuMzYuMjguMy4zMXptLTYuMy4wNmwuNDMtLjc5YTE0LjcgMTQuNyAwIDAgMCAuNzUtMS42NCA1LjQ4IDUuNDggMCAwIDAgMS4yNSAxLjU1bC4yLjE1YTE2LjM2IDE2LjM2IDAgMCAwLTIuNjMuNzN6TTkuNSA1LjMyYy4yIDAgLjMyLjUuMzIuOTdhMS45OSAxLjk5IDAgMCAxLS4yMyAxLjA0IDUuMDUgNS4wNSAwIDAgMS0uMTctMS4zczAtLjcxLjA4LS43MXptLTMuOSA5YTQuMzUgNC4zNSAwIDAgMSAxLjIxLTEuNDZsLjI0LS4yMmE0LjM1IDQuMzUgMCAwIDEtMS40NiAxLjY4em05LjIzLTMuM2EyLjA1IDIuMDUgMCAwIDAtMS4zMi0uMyAxMS4wNyAxMS4wNyAwIDAgMC0xLjU4LjExIDQuMDkgNC4wOSAwIDAgMS0uNzQtLjUgNS4zOSA1LjM5IDAgMCAxLTEuMzItMi4wNiAxMC4zNyAxMC4zNyAwIDAgMCAuMjgtMi42MiAxLjgzIDEuODMgMCAwIDAtLjA3LS4yNS41Ny41NyAwIDAgMC0uNTItLjRIOS40YS41OS41OSAwIDAgMC0uNi4zOCA2Ljk1IDYuOTUgMCAwIDAgLjM3IDMuMTRjLS4yNi42My0xIDIuMTItMSAyLjEyLS4zLjU4LS41NyAxLjA4LS44MiAxLjVsLS44LjQ0QTMuMTEgMy4xMSAwIDAgMCA1IDE0LjE2YS4zOS4zOSAwIDAgMCAuMTUuNDJsLjI0LjEzYzEuMTUuNTYgMi4yOC0xLjc0IDIuNjYtMi40MmEyMy4xIDIzLjEgMCAwIDEgMy41OS0uODUgNC41NiA0LjU2IDAgMCAwIDIuOTEuOC41LjUgMCAwIDAgLjMtLjIxIDEuMSAxLjEgMCAwIDAgLjEyLS43NS44NC44NCAwIDAgMC0uMTQtLjI1elwiLz48L3N2Zz4iLAogICAgICAgICJmaWxlLXRleHQiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxyZWN0IGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxN1wiIHg9XCIzLjVcIiB5PVwiMS41XCIvPjxsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHgxPVwiNlwiIHgyPVwiMTJcIiB5MT1cIjEyLjVcIiB5Mj1cIjEyLjVcIi8+PGxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeDE9XCI2XCIgeDI9XCIxNFwiIHkxPVwiOC41XCIgeTI9XCI4LjVcIi8+PGxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeDE9XCI2XCIgeDI9XCIxNFwiIHkxPVwiNi41XCIgeTI9XCI2LjVcIi8+PGxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeDE9XCI2XCIgeDI9XCIxNFwiIHkxPVwiMTAuNVwiIHkyPVwiMTAuNVwiLz48L3N2Zz4iLAogICAgICAgICJmaWxlIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cmVjdCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiB4PVwiMy41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxN1wiLz48L3N2Zz4iLAogICAgICAgICJmbGlja3IiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgY3g9XCI1LjVcIiBjeT1cIjkuNVwiIHI9XCIzLjVcIi8+PGNpcmNsZSBjeD1cIjE0LjVcIiBjeT1cIjkuNVwiIHI9XCIzLjVcIi8+PC9zdmc+IiwKICAgICAgICAiZm9sZGVyIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWdvbiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBwb2ludHM9XCI5LjUgNS41IDguNSAzLjUgMS41IDMuNSAxLjUgMTYuNSAxOC41IDE2LjUgMTguNSA1LjVcIi8+PC9zdmc+IiwKICAgICAgICAiZm9yd2FyZCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0yLjQ3LDEzLjExIEM0LjAyLDEwLjAyIDYuMjcsNy44NSA5LjA0LDYuNjEgQzkuNDgsNi40MSAxMC4yNyw2LjEzIDExLDUuOTEgTDExLDIgTDE4Ljg5LDkgTDExLDE2IEwxMSwxMi4xMyBDOS4yNSwxMi40NyA3LjU4LDEzLjE5IDYuMDIsMTQuMjUgQzMuMDMsMTYuMjggMS42MywxOC41NCAxLjYzLDE4LjU0IEMxLjYzLDE4LjU0IDEuMzgsMTUuMjggMi40NywxMy4xMSBMMi40NywxMy4xMSBaIE01LjMsMTMuNTMgQzYuOTIsMTIuNCA5LjA0LDExLjQgMTIsMTAuOTIgTDEyLDEzLjYzIEwxNy4zNiw5IEwxMiw0LjI1IEwxMiw2LjggQzExLjcxLDYuODYgMTAuODYsNy4wMiA5LjY3LDcuNDkgQzYuNzksOC42NSA0LjU4LDEwLjk2IDMuNDksMTMuMDggQzMuMTgsMTMuNyAyLjY4LDE0Ljg3IDIuNDksMTYgQzMuMjgsMTUuMDUgNC40LDE0LjE1IDUuMywxMy41MyBMNS4zLDEzLjUzIFpcIi8+PC9zdmc+IiwKICAgICAgICAiZm91cnNxdWFyZSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xNS4yMywyIEMxNS45NiwyIDE2LjQsMi40MSAxNi41LDIuODYgQzE2LjU3LDMuMTUgMTYuNTYsMy40NCAxNi41MSwzLjczIEMxNi40Niw0LjA0IDE0Ljg2LDExLjcyIDE0Ljc1LDEyLjAzIEMxNC41NiwxMi41NiAxNC4xNiwxMi44MiAxMy42MSwxMi44MyBDMTMuMDMsMTIuODQgMTEuMDksMTIuNTEgMTAuNjksMTMgQzEwLjM4LDEzLjM4IDcuNzksMTYuMzkgNi44MSwxNy41MyBDNi42MSwxNy43NiA2LjQsMTcuOTYgNi4wOCwxNy45OSBDNS42OCwxOC4wNCA1LjI5LDE3Ljg3IDUuMTcsMTcuNDUgQzUuMTIsMTcuMjggNS4xLDE3LjA5IDUuMSwxNi45MSBDNS4xLDEyLjQgNC44Niw3LjgxIDUuMTEsMy4zMSBDNS4xNywyLjUgNS44MSwyLjEyIDYuNTMsMiBMMTUuMjMsMiBMMTUuMjMsMiBaIE05Ljc2LDExLjQyIEM5Ljk0LDExLjE5IDEwLjE3LDExLjEgMTAuNDUsMTEuMSBMMTIuODYsMTEuMSBDMTMuMTIsMTEuMSAxMy4zMSwxMC45NCAxMy4zNiwxMC42OSBDMTMuMzcsMTAuNjQgMTMuNjIsOS40MSAxMy43NCw4LjgzIEMxMy44MSw4LjUyIDEzLjUzLDguMjggMTMuMjcsOC4yOCBDMTIuMzUsOC4yOSAxMS40Miw4LjI4IDEwLjUsOC4yOCBDOS44NCw4LjI4IDkuODMsNy42OSA5LjgyLDcuMjEgQzkuOCw2Ljg1IDEwLjEzLDYuNTUgMTAuNSw2LjU1IEMxMS41OSw2LjU2IDEyLjY3LDYuNTUgMTMuNzYsNi41NSBDMTQuMDMsNi41NSAxNC4yMyw2LjQgMTQuMjgsNi4xNCBDMTQuMzQsNS44NyAxNC42Nyw0LjI5IDE0LjY3LDQuMjkgQzE0LjY3LDQuMjkgMTQuODIsMy43NCAxNC4xOSwzLjc0IEw3LjM0LDMuNzQgQzcsMy43NSA2Ljg0LDQuMDIgNi44NCw0LjMzIEM2Ljg0LDcuNTggNi44NSwxNC45NSA2Ljg1LDE0Ljk5IEM2Ljg3LDE1IDguODksMTIuNTEgOS43NiwxMS40MiBMOS43NiwxMS40MiBaXCIvPjwvc3ZnPiIsCiAgICAgICAgImZ1dHVyZSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlsaW5lIHBvaW50cz1cIjE5IDIgMTggMiAxOCA2IDE0IDYgMTQgNyAxOSA3IDE5IDJcIi8+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgZD1cIk0xOCw2LjU0OCBDMTYuNzA5LDMuMjkgMTMuMzU0LDEgOS42LDEgQzQuNiwxIDAuNiw1IDAuNiwxMCBDMC42LDE1IDQuNiwxOSA5LjYsMTkgQzE0LjYsMTkgMTguNiwxNSAxOC42LDEwXCIvPjxyZWN0IHg9XCI5XCIgeT1cIjRcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCI3XCIvPjxwYXRoIGQ9XCJNMTMuMDE4LDE0LjE5NyBMOS40NDUsMTAuNjI1XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIvPjwvc3ZnPiIsCiAgICAgICAgImdpdC1icmFuY2giOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCIgY3g9XCI3XCIgY3k9XCIzXCIgcj1cIjJcIi8+PGNpcmNsZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjJcIiBjeD1cIjE0XCIgY3k9XCI2XCIgcj1cIjJcIi8+PGNpcmNsZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjJcIiBjeD1cIjdcIiBjeT1cIjE3XCIgcj1cIjJcIi8+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNMTQsOCBDMTQsMTAuNDEgMTIuNDMsMTAuODcgMTAuNTYsMTEuMjUgQzkuMDksMTEuNTQgNywxMi4wNiA3LDE1IEw3LDVcIi8+PC9zdmc+IiwKICAgICAgICAiZ2l0LWZvcmsiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCIgY3g9XCI1Ljc5XCIgY3k9XCIyLjc5XCIgcj1cIjEuNzlcIi8+PGNpcmNsZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjJcIiBjeD1cIjE0LjE5XCIgY3k9XCIyLjc5XCIgcj1cIjEuNzlcIi8+PGVsbGlwc2UgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCIgY3g9XCIxMC4wM1wiIGN5PVwiMTYuNzlcIiByeD1cIjEuNzlcIiByeT1cIjEuNzlcIi8+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNNS43OSw0LjU3IEw1Ljc5LDYuNTYgQzUuNzksOS4xOSAxMC4wMywxMC4yMiAxMC4wMywxMy4zMSBDMTAuMDMsMTQuODYgMTAuMDQsMTQuNTUgMTAuMDQsMTQuNTUgQzEwLjA0LDE0LjM3IDEwLjA0LDE0Ljg2IDEwLjA0LDEzLjMxIEMxMC4wNCwxMC4yMiAxNC4yLDkuMTkgMTQuMiw2LjU2IEwxNC4yLDQuNTdcIi8+PC9zdmc+IiwKICAgICAgICAiZ2l0aHViLWFsdCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMCwwLjUgQzQuNzUsMC41IDAuNSw0Ljc2IDAuNSwxMC4wMSBDMC41LDE1LjI2IDQuNzUsMTkuNTEgMTAsMTkuNTEgQzE1LjI0LDE5LjUxIDE5LjUsMTUuMjYgMTkuNSwxMC4wMSBDMTkuNSw0Ljc2IDE1LjI1LDAuNSAxMCwwLjUgTDEwLDAuNSBaIE0xMi44MSwxNy42OSBDMTIuODEsMTcuNjkgMTIuODEsMTcuNyAxMi43OSwxNy42OSBDMTIuNDcsMTcuNzUgMTIuMzUsMTcuNTkgMTIuMzUsMTcuMzYgTDEyLjM1LDE2LjE3IEMxMi4zNSwxNS40NSAxMi4wOSwxNC45MiAxMS41OCwxNC41NiBDMTIuMiwxNC41MSAxMi43NywxNC4zOSAxMy4yNiwxNC4yMSBDMTMuODcsMTMuOTggMTQuMzYsMTMuNjkgMTQuNzQsMTMuMjkgQzE1LjQyLDEyLjU5IDE1Ljc2LDExLjU1IDE1Ljc2LDEwLjE3IEMxNS43Niw5LjI1IDE1LjQ1LDguNDYgMTQuODMsNy44IEMxNS4xLDcuMDggMTUuMDcsNi4yOSAxNC43NSw1LjQ0IEwxNC41MSw1LjQyIEMxNC4zNCw1LjQgMTQuMDYsNS40NiAxMy42Nyw1LjYxIEMxMy4yNSw1Ljc4IDEyLjc5LDYuMDMgMTIuMzEsNi4zNSBDMTEuNTUsNi4xNiAxMC44MSw2LjA1IDEwLjA5LDYuMDUgQzkuMzYsNi4wNSA4LjYxLDYuMTUgNy44OCw2LjM1IEM3LjI4LDUuOTYgNi43NSw1LjY4IDYuMjYsNS41NCBDNi4wNyw1LjQ3IDUuOSw1LjQ0IDUuNzgsNS40NCBMNS40Miw1LjQ0IEM1LjA2LDYuMjkgNS4wNCw3LjA4IDUuMzIsNy44IEM0LjcsOC40NiA0LjQsOS4yNSA0LjQsMTAuMTcgQzQuNCwxMS45NCA0Ljk2LDEzLjE2IDYuMDgsMTMuODQgQzYuNTMsMTQuMTMgNy4wNSwxNC4zMiA3LjY5LDE0LjQzIEM4LjAzLDE0LjUgOC4zMiwxNC41NCA4LjU1LDE0LjU1IEM4LjA3LDE0Ljg5IDcuODIsMTUuNDIgNy44MiwxNi4xNiBMNy44MiwxNy41MSBDNy44LDE3LjY5IDcuNywxNy44IDcuNTEsMTcuOCBDNC4yMSwxNi43NCAxLjgyLDEzLjY1IDEuODIsMTAuMDEgQzEuODIsNS41IDUuNDksMS44MyAxMCwxLjgzIEMxNC41LDEuODMgMTguMTcsNS41IDE4LjE3LDEwLjAxIEMxOC4xOCwxMy41MyAxNS45NCwxNi41NCAxMi44MSwxNy42OSBMMTIuODEsMTcuNjkgWlwiLz48L3N2Zz4iLAogICAgICAgICJnaXRodWIiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTAsMSBDNS4wMywxIDEsNS4wMyAxLDEwIEMxLDEzLjk4IDMuNTgsMTcuMzUgNy4xNiwxOC41NCBDNy42MSwxOC42MiA3Ljc3LDE4LjM0IDcuNzcsMTguMTEgQzcuNzcsMTcuOSA3Ljc2LDE3LjMzIDcuNzYsMTYuNTggQzUuMjYsMTcuMTIgNC43MywxNS4zNyA0LjczLDE1LjM3IEM0LjMyLDE0LjMzIDMuNzMsMTQuMDUgMy43MywxNC4wNSBDMi45MSwxMy41IDMuNzksMTMuNSAzLjc5LDEzLjUgQzQuNjksMTMuNTYgNS4xNywxNC40MyA1LjE3LDE0LjQzIEM1Ljk3LDE1LjggNy4yOCwxNS40MSA3Ljc5LDE1LjE4IEM3Ljg3LDE0LjYgOC4xLDE0LjIgOC4zNiwxMy45OCBDNi4zNiwxMy43NSA0LjI2LDEyLjk4IDQuMjYsOS41MyBDNC4yNiw4LjU1IDQuNjEsNy43NCA1LjE5LDcuMTEgQzUuMSw2Ljg4IDQuNzksNS45NyA1LjI4LDQuNzMgQzUuMjgsNC43MyA2LjA0LDQuNDkgNy43NSw1LjY1IEM4LjQ3LDUuNDUgOS4yNCw1LjM1IDEwLDUuMzUgQzEwLjc2LDUuMzUgMTEuNTMsNS40NSAxMi4yNSw1LjY1IEMxMy45Nyw0LjQ4IDE0LjcyLDQuNzMgMTQuNzIsNC43MyBDMTUuMjEsNS45NyAxNC45LDYuODggMTQuODEsNy4xMSBDMTUuMzksNy43NCAxNS43Myw4LjU0IDE1LjczLDkuNTMgQzE1LjczLDEyLjk5IDEzLjYzLDEzLjc1IDExLjYyLDEzLjk3IEMxMS45NCwxNC4yNSAxMi4yMywxNC44IDEyLjIzLDE1LjY0IEMxMi4yMywxNi44NCAxMi4yMiwxNy44MSAxMi4yMiwxOC4xMSBDMTIuMjIsMTguMzUgMTIuMzgsMTguNjMgMTIuODQsMTguNTQgQzE2LjQyLDE3LjM1IDE5LDEzLjk4IDE5LDEwIEMxOSw1LjAzIDE0Ljk3LDEgMTAsMSBMMTAsMSBaXCIvPjwvc3ZnPiIsCiAgICAgICAgImdpdHRlciI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgeD1cIjMuNVwiIHk9XCIxXCIgd2lkdGg9XCIxLjUzMVwiIGhlaWdodD1cIjExLjQ3MVwiLz48cmVjdCB4PVwiNy4zMjRcIiB5PVwiNC4wNTlcIiB3aWR0aD1cIjEuNTI5XCIgaGVpZ2h0PVwiMTUuMjk0XCIvPjxyZWN0IHg9XCIxMS4xNDhcIiB5PVwiNC4wNTlcIiB3aWR0aD1cIjEuNTI3XCIgaGVpZ2h0PVwiMTUuMjk0XCIvPjxyZWN0IHg9XCIxNC45NzFcIiB5PVwiNC4wNTlcIiB3aWR0aD1cIjEuNTI5XCIgaGVpZ2h0PVwiOC40MTJcIi8+PC9zdmc+IiwKICAgICAgICAiZ29vZ2xlLXBsdXMiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTIuOSw5YzAsMi43LTAuNiw1LTMuMiw2LjNjLTMuNywxLjgtOC4xLDAuMi05LjQtMy42Qy0xLjEsNy42LDEuOSwzLjMsNi4xLDNjMS43LTAuMSwzLjIsMC4zLDQuNiwxLjMgYzAuMSwwLjEsMC4zLDAuMiwwLjQsMC40Yy0wLjUsMC41LTEuMiwxLTEuNywxLjZjLTEtMC44LTIuMS0xLjEtMy41LTAuOUM1LDUuNiw0LjIsNiwzLjYsNi43Yy0xLjMsMS4zLTEuNSwzLjQtMC41LDUgYzEsMS43LDIuNiwyLjMsNC42LDEuOWMxLjQtMC4zLDIuNC0xLjIsMi42LTIuNkg2LjlWOUgxMi45elwiLz48cG9seWdvbiBwb2ludHM9XCIyMCw5IDIwLDExIDE4LDExIDE4LDEzIDE2LDEzIDE2LDExIDE0LDExIDE0LDkgMTYsOSAxNiw3IDE4LDcgMTgsOVwiLz48L3N2Zz4iLAogICAgICAgICJnb29nbGUiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTcuODYsOS4wOSBDMTguNDYsMTIuMTIgMTcuMTQsMTYuMDUgMTMuODEsMTcuNTYgQzkuNDUsMTkuNTMgNC4xMywxNy42OCAyLjQ3LDEyLjg3IEMwLjY4LDcuNjggNC4yMiwyLjQyIDkuNSwyLjAzIEMxMS41NywxLjg4IDEzLjQyLDIuMzcgMTUuMDUsMy42NSBDMTUuMjIsMy43OCAxNS4zNywzLjkzIDE1LjYxLDQuMTQgQzE0LjksNC44MSAxNC4yMyw1LjQ1IDEzLjUsNi4xNCBDMTIuMjcsNS4wOCAxMC44NCw0LjcyIDkuMjgsNC45OCBDOC4xMiw1LjE3IDcuMTYsNS43NiA2LjM3LDYuNjMgQzQuODgsOC4yNyA0LjYyLDEwLjg2IDUuNzYsMTIuODIgQzYuOTUsMTQuODcgOS4xNywxNS44IDExLjU3LDE1LjI1IEMxMy4yNywxNC44NyAxNC43NiwxMy4zMyAxNC44OSwxMS43NSBMMTAuNTEsMTEuNzUgTDEwLjUxLDkuMDkgTDE3Ljg2LDkuMDkgTDE3Ljg2LDkuMDkgWlwiLz48L3N2Zz4iLAogICAgICAgICJncmlkIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiM1wiLz48cmVjdCB4PVwiOFwiIHk9XCIyXCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiM1wiLz48cmVjdCB4PVwiMTRcIiB5PVwiMlwiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjNcIi8+PHJlY3QgeD1cIjJcIiB5PVwiOFwiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjNcIi8+PHJlY3QgeD1cIjhcIiB5PVwiOFwiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjNcIi8+PHJlY3QgeD1cIjE0XCIgeT1cIjhcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIzXCIvPjxyZWN0IHg9XCIyXCIgeT1cIjE0XCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiM1wiLz48cmVjdCB4PVwiOFwiIHk9XCIxNFwiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjNcIi8+PHJlY3QgeD1cIjE0XCIgeT1cIjE0XCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiM1wiLz48L3N2Zz4iLAogICAgICAgICJoYXBweSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBjeD1cIjEzXCIgY3k9XCI3XCIgcj1cIjFcIi8+PGNpcmNsZSBjeD1cIjdcIiBjeT1cIjdcIiByPVwiMVwiLz48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIGN4PVwiMTBcIiBjeT1cIjEwXCIgcj1cIjguNVwiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBkPVwiTTE0LjYsMTEuNCBDMTMuOSwxMy4zIDEyLjEsMTQuNSAxMCwxNC41IEM3LjksMTQuNSA2LjEsMTMuMyA1LjQsMTEuNFwiLz48L3N2Zz4iLAogICAgICAgICJoYXNodGFnIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTE1LjQzMSw4IEwxNS42NjEsNyBMMTIuOTExLDcgTDEzLjgzMSwzIEwxMi45MDEsMyBMMTEuOTgsNyBMOS4yOSw3IEwxMC4yMSwzIEw5LjI4MSwzIEw4LjM2MSw3IEw1LjIzLDcgTDUsOCBMOC4xMyw4IEw3LjIxLDEyIEw0LjIzLDEyIEw0LDEzIEw2Ljk4LDEzIEw2LjA2MSwxNyBMNi45OTEsMTcgTDcuOTExLDEzIEwxMC42MDEsMTMgTDkuNjgxLDE3IEwxMC42MTEsMTcgTDExLjUzMSwxMyBMMTQuNDMxLDEzIEwxNC42NjEsMTIgTDExLjc2LDEyIEwxMi42ODEsOCBMMTUuNDMxLDggWiBNMTAuODMxLDEyIEw4LjE0MSwxMiBMOS4wNjEsOCBMMTEuNzUsOCBMMTAuODMxLDEyIFpcIi8+PC9zdmc+IiwKICAgICAgICAiaGVhcnQiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMDNcIiBkPVwiTTEwLDQgQzEwLDQgOC4xLDIgNS43NCwyIEMzLjM4LDIgMSwzLjU1IDEsNi43MyBDMSw4Ljg0IDIuNjcsMTAuNDQgMi42NywxMC40NCBMMTAsMTggTDE3LjMzLDEwLjQ0IEMxNy4zMywxMC40NCAxOSw4Ljg0IDE5LDYuNzMgQzE5LDMuNTUgMTYuNjIsMiAxNC4yNiwyIEMxMS45LDIgMTAsNCAxMCw0IEwxMCw0IFpcIi8+PC9zdmc+IiwKICAgICAgICAiaGlzdG9yeSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlsaW5lIGZpbGw9XCIjMDAwXCIgcG9pbnRzPVwiMSAyIDIgMiAyIDYgNiA2IDYgNyAxIDcgMSAyXCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGQ9XCJNMi4xLDYuNTQ4IEMzLjM5MSwzLjI5IDYuNzQ2LDEgMTAuNSwxIEMxNS41LDEgMTkuNSw1IDE5LjUsMTAgQzE5LjUsMTUgMTUuNSwxOSAxMC41LDE5IEM1LjUsMTkgMS41LDE1IDEuNSwxMFwiLz48cmVjdCB4PVwiOVwiIHk9XCI0XCIgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiN1wiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBkPVwiTTEzLjAxOCwxNC4xOTcgTDkuNDQ1LDEwLjYyNVwiLz48L3N2Zz4iLAogICAgICAgICJob21lIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWdvbiBwb2ludHM9XCIxOC42NSAxMS4zNSAxMCAyLjcxIDEuMzUgMTEuMzUgMC42NSAxMC42NSAxMCAxLjI5IDE5LjM1IDEwLjY1XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1IDQgMTggNCAxOCA3IDE3IDcgMTcgNSAxNSA1XCIvPjxwb2x5Z29uIHBvaW50cz1cIjMgMTEgNCAxMSA0IDE4IDcgMTggNyAxMiAxMiAxMiAxMiAxOCAxNiAxOCAxNiAxMSAxNyAxMSAxNyAxOSAxMSAxOSAxMSAxMyA4IDEzIDggMTkgMyAxOVwiLz48L3N2Zz4iLAogICAgICAgICJpbWFnZSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBjeD1cIjE2LjFcIiBjeT1cIjYuMVwiIHI9XCIxLjFcIi8+PHJlY3QgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeD1cIi41XCIgeT1cIjIuNVwiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxNVwiLz48cG9seWxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4wMVwiIHBvaW50cz1cIjQsMTMgOCw5IDEzLDE0XCIvPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjAxXCIgcG9pbnRzPVwiMTEsMTIgMTIuNSwxMC41IDE2LDE0XCIvPjwvc3ZnPiIsCiAgICAgICAgImluZm8iOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTIuMTMsMTEuNTkgQzExLjk3LDEyLjg0IDEwLjM1LDE0LjEyIDkuMSwxNC4xNiBDNi4xNywxNC4yIDkuODksOS40NiA4Ljc0LDguMzcgQzkuMyw4LjE2IDEwLjYyLDcuODMgMTAuNjIsOC44MSBDMTAuNjIsOS42MyAxMC4xMiwxMC41NSA5Ljg4LDExLjMyIEM4LjY2LDE1LjE2IDEyLjEzLDExLjE1IDEyLjE0LDExLjE4IEMxMi4xNiwxMS4yMSAxMi4xNiwxMS4zNSAxMi4xMywxMS41OSBDMTIuMDgsMTEuOTUgMTIuMTYsMTEuMzUgMTIuMTMsMTEuNTkgTDEyLjEzLDExLjU5IFogTTExLjU2LDUuNjcgQzExLjU2LDYuNjcgOS4zNiw3LjE1IDkuMzYsNi4wMyBDOS4zNiw1IDExLjU2LDQuNTQgMTEuNTYsNS42NyBMMTEuNTYsNS42NyBaXCIvPjxjaXJjbGUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgY3g9XCIxMFwiIGN5PVwiMTBcIiByPVwiOVwiLz48L3N2Zz4iLAogICAgICAgICJpbnN0YWdyYW0iOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTMuNTUsMUg2LjQ2QzMuNDUsMSwxLDMuNDQsMSw2LjQ0djcuMTJjMCwzLDIuNDUsNS40NCw1LjQ2LDUuNDRoNy4wOGMzLjAyLDAsNS40Ni0yLjQ0LDUuNDYtNS40NFY2LjQ0IEMxOS4wMSwzLjQ0LDE2LjU2LDEsMTMuNTUsMXogTTE3LjUsMTRjMCwxLjkzLTEuNTcsMy41LTMuNSwzLjVINmMtMS45MywwLTMuNS0xLjU3LTMuNS0zLjVWNmMwLTEuOTMsMS41Ny0zLjUsMy41LTMuNWg4IGMxLjkzLDAsMy41LDEuNTcsMy41LDMuNVYxNHpcIi8+PGNpcmNsZSBjeD1cIjE0Ljg3XCIgY3k9XCI1LjI2XCIgcj1cIjEuMDlcIi8+PHBhdGggZD1cIk0xMC4wMyw1LjQ1Yy0yLjU1LDAtNC42MywyLjA2LTQuNjMsNC42YzAsMi41NSwyLjA3LDQuNjEsNC42Myw0LjYxYzIuNTYsMCw0LjYzLTIuMDYxLDQuNjMtNC42MSBDMTQuNjUsNy41MSwxMi41OCw1LjQ1LDEwLjAzLDUuNDVMMTAuMDMsNS40NUwxMC4wMyw1LjQ1eiBNMTAuMDgsMTNjLTEuNjYsMC0zLTEuMzQtMy0yLjk5YzAtMS42NSwxLjM0LTIuOTksMy0yLjk5czMsMS4zNCwzLDIuOTkgQzEzLjA4LDExLjY2LDExLjc0LDEzLDEwLjA4LDEzTDEwLjA4LDEzTDEwLjA4LDEzelwiLz48L3N2Zz4iLAogICAgICAgICJpdGFsaWMiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTIuNjMsNS40OCBMMTAuMTUsMTQuNTIgQzEwLDE1LjA4IDEwLjM3LDE1LjI1IDExLjkyLDE1LjMgTDExLjcyLDE2IEw2LDE2IEw2LjIsMTUuMzEgQzcuNzgsMTUuMjYgOC4xOSwxNS4wOSA4LjM0LDE0LjUzIEwxMC44Miw1LjQ5IEMxMC45Nyw0LjkyIDEwLjYzLDQuNzYgOS4wOSw0LjcxIEw5LjI4LDQgTDE1LDQgTDE0LjgxLDQuNjkgQzEzLjIzLDQuNzUgMTIuNzgsNC45MSAxMi42Myw1LjQ4IEwxMi42Myw1LjQ4IFpcIi8+PC9zdmc+IiwKICAgICAgICAiam9vbWxhIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTcuOCwxMy40bDEuNy0xLjdMNS45LDhjLTAuNi0wLjUtMC42LTEuNSwwLTJjMC42LTAuNiwxLjQtMC42LDIsMGwxLjctMS43Yy0xLTEtMi4zLTEuMy0zLjYtMUM1LjgsMi4yLDQuOCwxLjQsMy43LDEuNCBjLTEuMywwLTIuMywxLTIuMywyLjNjMCwxLjEsMC44LDIsMS44LDIuM2MtMC40LDEuMy0wLjEsMi44LDEsMy44TDcuOCwxMy40TDcuOCwxMy40elwiLz48cGF0aCBkPVwiTTEwLjIsNC4zYzEtMSwyLjUtMS40LDMuOC0xYzAuMi0xLjEsMS4xLTIsMi4zLTJjMS4zLDAsMi4zLDEsMi4zLDIuM2MwLDEuMi0wLjksMi4yLTIsMi4zYzAuNCwxLjMsMCwyLjgtMSwzLjhMMTMuOSw4IGMwLjYtMC41LDAuNi0xLjUsMC0yYy0wLjUtMC42LTEuNS0wLjYtMiwwTDguMiw5LjdMNi41LDhcIi8+PHBhdGggZD1cIk0xNC4xLDE2LjhjLTEuMywwLjQtMi44LDAuMS0zLjgtMWwxLjctMS43YzAuNiwwLjYsMS41LDAuNiwyLDBjMC41LTAuNiwwLjYtMS41LDAtMmwtMy43LTMuN0wxMiw2LjdsMy43LDMuNyBjMSwxLDEuMywyLjQsMSwzLjZjMS4xLDAuMiwyLDEuMSwyLDIuM2MwLDEuMy0xLDIuMy0yLjMsMi4zQzE1LjIsMTguNiwxNC4zLDE3LjgsMTQuMSwxNi44XCIvPjxwYXRoIGQ9XCJNMTMuMiwxMi4ybC0zLjcsMy43Yy0xLDEtMi40LDEuMy0zLjYsMWMtMC4yLDEtMS4yLDEuOC0yLjIsMS44Yy0xLjMsMC0yLjMtMS0yLjMtMi4zYzAtMS4xLDAuOC0yLDEuOC0yLjMgYy0wLjMtMS4zLDAtMi43LDEtMy43bDEuNywxLjdjLTAuNiwwLjYtMC42LDEuNSwwLDJjMC42LDAuNiwxLjQsMC42LDIsMGwzLjctMy43XCIvPjwvc3ZnPiIsCiAgICAgICAgImxhcHRvcCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgeT1cIjE2XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjFcIi8+PHJlY3QgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeD1cIjIuNVwiIHk9XCI0LjVcIiB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTBcIi8+PC9zdmc+IiwKICAgICAgICAibGlmZXNhdmVyIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwLDAuNSBDNC43NiwwLjUgMC41LDQuNzYgMC41LDEwIEMwLjUsMTUuMjQgNC43NiwxOS41IDEwLDE5LjUgQzE1LjI0LDE5LjUgMTkuNSwxNS4yNCAxOS41LDEwIEMxOS41LDQuNzYgMTUuMjQsMC41IDEwLDAuNSBMMTAsMC41IFogTTEwLDEuNSBDMTEuNDksMS41IDEyLjg5LDEuODggMTQuMTEsMi41NiBMMTEuODUsNC44MiBDMTEuMjcsNC42MSAxMC42NSw0LjUgMTAsNC41IEM5LjIxLDQuNSA4LjQ3LDQuNjcgNy43OSw0Ljk2IEw1LjU4LDIuNzUgQzYuODcsMS45NSA4LjM4LDEuNSAxMCwxLjUgTDEwLDEuNSBaIE00Ljk2LDcuOCBDNC42Nyw4LjQ4IDQuNSw5LjIxIDQuNSwxMCBDNC41LDEwLjY1IDQuNjEsMTEuMjcgNC44MywxMS44NSBMMi41NiwxNC4xMSBDMS44OCwxMi44OSAxLjUsMTEuNDkgMS41LDEwIEMxLjUsOC4zOCAxLjk1LDYuODcgMi43NSw1LjU4IEw0Ljk2LDcuNzkgTDQuOTYsNy44IEw0Ljk2LDcuOCBaIE0xMCwxOC41IEM4LjI1LDE4LjUgNi42MiwxNy45NyA1LjI3LDE3LjA2IEw3LjQ2LDE0Ljg3IEM4LjIyLDE1LjI3IDkuMDgsMTUuNSAxMCwxNS41IEMxMC43OSwxNS41IDExLjUzLDE1LjMzIDEyLjIxLDE1LjA0IEwxNC40MiwxNy4yNSBDMTMuMTMsMTguMDUgMTEuNjIsMTguNSAxMCwxOC41IEwxMCwxOC41IFogTTEwLDE0LjUgQzcuNTIsMTQuNSA1LjUsMTIuNDggNS41LDEwIEM1LjUsNy41MiA3LjUyLDUuNSAxMCw1LjUgQzEyLjQ4LDUuNSAxNC41LDcuNTIgMTQuNSwxMCBDMTQuNSwxMi40OCAxMi40OCwxNC41IDEwLDE0LjUgTDEwLDE0LjUgWiBNMTUuMDQsMTIuMjEgQzE1LjMzLDExLjUzIDE1LjUsMTAuNzkgMTUuNSwxMCBDMTUuNSw5LjA4IDE1LjI3LDguMjIgMTQuODcsNy40NiBMMTcuMDYsNS4yNyBDMTcuOTcsNi42MiAxOC41LDguMjUgMTguNSwxMCBDMTguNSwxMS42MiAxOC4wNSwxMy4xMyAxNy4yNSwxNC40MiBMMTUuMDQsMTIuMjEgTDE1LjA0LDEyLjIxIFpcIi8+PC9zdmc+IiwKICAgICAgICAibGluayI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgZD1cIk0xMC42MjUsMTIuMzc1IEw3LjUyNSwxNS40NzUgQzYuODI1LDE2LjE3NSA1LjkyNSwxNi4xNzUgNS4yMjUsMTUuNDc1IEw0LjUyNSwxNC43NzUgQzMuODI1LDE0LjA3NCAzLjgyNSwxMy4xNzUgNC41MjUsMTIuNDc1IEw3LjYyNSw5LjM3NVwiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBkPVwiTTkuMzI1LDcuMzc1IEwxMi40MjUsNC4yNzUgQzEzLjEyNSwzLjU3NSAxNC4wMjUsMy41NzUgMTQuNzI0LDQuMjc1IEwxNS40MjUsNC45NzUgQzE2LjEyNSw1LjY3NSAxNi4xMjUsNi41NzUgMTUuNDI1LDcuMjc1IEwxMi4zMjUsMTAuMzc1XCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGQ9XCJNNy45MjUsMTEuODc1IEwxMS45MjUsNy45NzVcIi8+PC9zdmc+IiwKICAgICAgICAibGlua2VkaW4iOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNS43NywxNy44OSBMNS43Nyw3LjE3IEwyLjIxLDcuMTcgTDIuMjEsMTcuODkgTDUuNzcsMTcuODkgTDUuNzcsMTcuODkgWiBNMy45OSw1LjcxIEM1LjIzLDUuNzEgNi4wMSw0Ljg5IDYuMDEsMy44NiBDNS45OSwyLjggNS4yNCwyIDQuMDIsMiBDMi44LDIgMiwyLjggMiwzLjg1IEMyLDQuODggMi43Nyw1LjcgMy45Nyw1LjcgTDMuOTksNS43IEwzLjk5LDUuNzEgTDMuOTksNS43MSBaXCIvPjxwYXRoIGQ9XCJNNy43NSwxNy44OSBMMTEuMzEsMTcuODkgTDExLjMxLDExLjkgQzExLjMxLDExLjU4IDExLjMzLDExLjI2IDExLjQzLDExLjAzIEMxMS42OSwxMC4zOSAxMi4yNyw5LjczIDEzLjI2LDkuNzMgQzE0LjU1LDkuNzMgMTUuMDYsMTAuNzEgMTUuMDYsMTIuMTUgTDE1LjA2LDE3Ljg5IEwxOC42MiwxNy44OSBMMTguNjIsMTEuNzQgQzE4LjYyLDguNDUgMTYuODYsNi45MiAxNC41Miw2LjkyIEMxMi42LDYuOTIgMTEuNzUsNy45OSAxMS4yOCw4LjczIEwxMS4zLDguNzMgTDExLjMsNy4xNyBMNy43NSw3LjE3IEM3Ljc5LDguMTcgNy43NSwxNy44OSA3Ljc1LDE3Ljg5IEw3Ljc1LDE3Ljg5IEw3Ljc1LDE3Ljg5IFpcIi8+PC9zdmc+IiwKICAgICAgICAibGlzdCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgeD1cIjZcIiB5PVwiNFwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxXCIvPjxyZWN0IHg9XCI2XCIgeT1cIjlcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMVwiLz48cmVjdCB4PVwiNlwiIHk9XCIxNFwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxXCIvPjxyZWN0IHg9XCIyXCIgeT1cIjRcIiB3aWR0aD1cIjJcIiBoZWlnaHQ9XCIxXCIvPjxyZWN0IHg9XCIyXCIgeT1cIjlcIiB3aWR0aD1cIjJcIiBoZWlnaHQ9XCIxXCIvPjxyZWN0IHg9XCIyXCIgeT1cIjE0XCIgd2lkdGg9XCIyXCIgaGVpZ2h0PVwiMVwiLz48L3N2Zz4iLAogICAgICAgICJsb2NhdGlvbiI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4wMVwiIGQ9XCJNMTAsMC41IEM2LjQxLDAuNSAzLjUsMy4zOSAzLjUsNi45OCBDMy41LDExLjgzIDEwLDE5IDEwLDE5IEMxMCwxOSAxNi41LDExLjgzIDE2LjUsNi45OCBDMTYuNSwzLjM5IDEzLjU5LDAuNSAxMCwwLjUgTDEwLDAuNSBaXCIvPjxjaXJjbGUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgY3g9XCIxMFwiIGN5PVwiNi44XCIgcj1cIjIuM1wiLz48L3N2Zz4iLAogICAgICAgICJsb2NrIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cmVjdCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBoZWlnaHQ9XCIxMFwiIHdpZHRoPVwiMTNcIiB5PVwiOC41XCIgeD1cIjMuNVwiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBkPVwiTTYuNSw4IEw2LjUsNC44OCBDNi41LDMuMDEgOC4wNywxLjUgMTAsMS41IEMxMS45MywxLjUgMTMuNSwzLjAxIDEzLjUsNC44OCBMMTMuNSw4XCIvPjwvc3ZnPiIsCiAgICAgICAgIm1haWwiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBwb2ludHM9XCIxLjQsNi41IDEwLDExIDE4LjYsNi41XCIvPjxwYXRoIGQ9XCJNIDEsNCAxLDE2IDE5LDE2IDE5LDQgMSw0IFogTSAxOCwxNSAyLDE1IDIsNSAxOCw1IDE4LDE1IFpcIi8+PC9zdmc+IiwKICAgICAgICAibWVudSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgeD1cIjJcIiB5PVwiNFwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxXCIvPjxyZWN0IHg9XCIyXCIgeT1cIjlcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMVwiLz48cmVjdCB4PVwiMlwiIHk9XCIxNFwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxXCIvPjwvc3ZnPiIsCiAgICAgICAgIm1pY3JvcGhvbmUiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHgxPVwiMTBcIiB4Mj1cIjEwXCIgeTE9XCIxNi40NFwiIHkyPVwiMTguNVwiLz48bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiB4MT1cIjdcIiB4Mj1cIjEzXCIgeTE9XCIxOC41XCIgeTI9XCIxOC41XCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGQ9XCJNMTMuNSA0Ljg5djUuODdhMy41IDMuNSAwIDAgMS03IDBWNC44OWEzLjUgMy41IDAgMCAxIDcgMHpcIi8+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgZD1cIk0xNS41IDEwLjM2VjExYTUuNSA1LjUgMCAwIDEtMTEgMHYtLjZcIi8+PC9zdmc+IiwKICAgICAgICAibWludXMtY2lyY2xlIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGN4PVwiOS41XCIgY3k9XCI5LjVcIiByPVwiOVwiLz48bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiB4MT1cIjVcIiB5MT1cIjkuNVwiIHgyPVwiMTRcIiB5Mj1cIjkuNVwiLz48L3N2Zz4iLAogICAgICAgICJtaW51cyI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgaGVpZ2h0PVwiMVwiIHdpZHRoPVwiMThcIiB5PVwiOVwiIHg9XCIxXCIvPjwvc3ZnPiIsCiAgICAgICAgIm1vcmUtdmVydGljYWwiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgY3g9XCIxMFwiIGN5PVwiM1wiIHI9XCIyXCIvPjxjaXJjbGUgY3g9XCIxMFwiIGN5PVwiMTBcIiByPVwiMlwiLz48Y2lyY2xlIGN4PVwiMTBcIiBjeT1cIjE3XCIgcj1cIjJcIi8+PC9zdmc+IiwKICAgICAgICAibW9yZSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBjeD1cIjNcIiBjeT1cIjEwXCIgcj1cIjJcIi8+PGNpcmNsZSBjeD1cIjEwXCIgY3k9XCIxMFwiIHI9XCIyXCIvPjxjaXJjbGUgY3g9XCIxN1wiIGN5PVwiMTBcIiByPVwiMlwiLz48L3N2Zz4iLAogICAgICAgICJtb3ZlIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWdvbiBwb2ludHM9XCI0LDUgMSw1IDEsOSAyLDkgMiw2IDQsNlwiLz48cG9seWdvbiBwb2ludHM9XCIxLDE2IDIsMTYgMiwxOCA0LDE4IDQsMTkgMSwxOVwiLz48cG9seWdvbiBwb2ludHM9XCIxNCwxNiAxNCwxOSAxMSwxOSAxMSwxOCAxMywxOCAxMywxNlwiLz48cmVjdCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiB4PVwiNS41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxM1wiLz48cmVjdCB4PVwiMVwiIHk9XCIxMVwiIHdpZHRoPVwiMVwiIGhlaWdodD1cIjNcIi8+PHJlY3QgeD1cIjZcIiB5PVwiMThcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIvPjwvc3ZnPiIsCiAgICAgICAgIm51dCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlnb24gZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgcG9pbnRzPVwiMi41LDUuNyAxMCwxLjMgMTcuNSw1LjcgMTcuNSwxNC4zIDEwLDE4LjcgMi41LDE0LjNcIi8+PGNpcmNsZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBjeD1cIjEwXCIgY3k9XCIxMFwiIHI9XCIzLjVcIi8+PC9zdmc+IiwKICAgICAgICAicGFnZWtpdCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlnb24gcG9pbnRzPVwiMywxIDE3LDEgMTcsMTYgMTAsMTYgMTAsMTMgMTQsMTMgMTQsNCA2LDQgNiwxNiAxMCwxNiAxMCwxOSAzLDE5XCIvPjwvc3ZnPiIsCiAgICAgICAgInBhaW50LWJ1Y2tldCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMC4yMSwxIEwwLDExLjIxIEw4LjEsMTkuMzEgTDE4LjMxLDkuMSBMMTAuMjEsMSBMMTAuMjEsMSBaIE0xNi44OSw5LjEgTDE1LDExIEwxLjcsMTEgTDEwLjIxLDIuNDIgTDE2Ljg5LDkuMSBaXCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGQ9XCJNNi40MiwyLjMzIEwxMS43LDcuNjFcIi8+PHBhdGggZD1cIk0xOC40OSwxMiBDMTguNDksMTIgMjAsMTQuMDYgMjAsMTUuMzYgQzIwLDE2LjI4IDE5LjI0LDE3IDE4LjQ5LDE3IEwxOC40OSwxNyBDMTcuNzQsMTcgMTcsMTYuMjggMTcsMTUuMzYgQzE3LDE0LjA2IDE4LjQ5LDEyIDE4LjQ5LDEyIEwxOC40OSwxMiBaXCIvPjwvc3ZnPiIsCiAgICAgICAgInBlbmNpbCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgZD1cIk0xNy4yNSw2LjAxIEw3LjEyLDE2LjEgTDMuODIsMTcuMiBMNS4wMiwxMy45IEwxNS4xMiwzLjg4IEMxNS43MSwzLjI5IDE2LjY2LDMuMjkgMTcuMjUsMy44OCBDMTcuODMsNC40NyAxNy44Myw1LjQyIDE3LjI1LDYuMDEgTDE3LjI1LDYuMDEgWlwiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBkPVwiTTE1Ljk4LDcuMjY4IEwxMy44NTEsNS4xNDhcIi8+PC9zdmc+IiwKICAgICAgICAicGhvbmUtbGFuZHNjYXBlIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBkPVwiTTE3LDUuNSBDMTcuOCw1LjUgMTguNSw2LjIgMTguNSw3IEwxOC41LDE0IEMxOC41LDE0LjggMTcuOCwxNS41IDE3LDE1LjUgTDMsMTUuNSBDMi4yLDE1LjUgMS41LDE0LjggMS41LDE0IEwxLjUsNyBDMS41LDYuMiAyLjIsNS41IDMsNS41IEwxNyw1LjUgTDE3LDUuNSBMMTcsNS41IFpcIi8+PGNpcmNsZSBjeD1cIjMuOFwiIGN5PVwiMTAuNVwiIHI9XCIuOFwiLz48L3N2Zz4iLAogICAgICAgICJwaG9uZSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgZD1cIk0xNS41LDE3IEMxNS41LDE3LjggMTQuOCwxOC41IDE0LDE4LjUgTDcsMTguNSBDNi4yLDE4LjUgNS41LDE3LjggNS41LDE3IEw1LjUsMyBDNS41LDIuMiA2LjIsMS41IDcsMS41IEwxNCwxLjUgQzE0LjgsMS41IDE1LjUsMi4yIDE1LjUsMyBMMTUuNSwxNyBMMTUuNSwxNyBMMTUuNSwxNyBaXCIvPjxjaXJjbGUgY3g9XCIxMC41XCIgY3k9XCIxNi41XCIgcj1cIi44XCIvPjwvc3ZnPiIsCiAgICAgICAgInBpbnRlcmVzdCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMC4yMSwxIEM1LjUsMSAzLDQuMTYgMyw3LjYxIEMzLDkuMjEgMy44NSwxMS4yIDUuMjIsMTEuODQgQzUuNDMsMTEuOTQgNS41NCwxMS44OSA1LjU4LDExLjY5IEM1LjYyLDExLjU0IDUuOCwxMC44IDUuODgsMTAuNDUgQzUuOTEsMTAuMzQgNS44OSwxMC4yNCA1LjgsMTAuMTQgQzUuMzYsOS41OSA1LDguNTggNSw3LjY1IEM1LDUuMjQgNi44MiwyLjkxIDkuOTMsMi45MSBDMTIuNjEsMi45MSAxNC40OSw0Ljc0IDE0LjQ5LDcuMzUgQzE0LjQ5LDEwLjMgMTMsMTIuMzUgMTEuMDYsMTIuMzUgQzkuOTksMTIuMzUgOS4xOSwxMS40NyA5LjQ0LDEwLjM4IEM5Ljc1LDkuMDggMTAuMzUsNy42OCAxMC4zNSw2Ljc1IEMxMC4zNSw1LjkxIDkuOSw1LjIxIDguOTcsNS4yMSBDNy44Nyw1LjIxIDYuOTksNi4zNCA2Ljk5LDcuODYgQzYuOTksOC44MyA3LjMyLDkuNDggNy4zMiw5LjQ4IEM3LjMyLDkuNDggNi4yNCwxNC4wNiA2LjA0LDE0LjkxIEM1LjcsMTYuMzUgNi4wOCwxOC43IDYuMTIsMTguOSBDNi4xNCwxOS4wMSA2LjI2LDE5LjA1IDYuMzMsMTguOTUgQzYuNDQsMTguODEgNy43NCwxNi44NSA4LjExLDE1LjQ0IEM4LjI0LDE0LjkzIDguNzksMTIuODQgOC43OSwxMi44NCBDOS4xNSwxMy41MiAxMC4xOSwxNC4wOSAxMS4yOSwxNC4wOSBDMTQuNTgsMTQuMDkgMTYuOTYsMTEuMDYgMTYuOTYsNy4zIEMxNi45NCwzLjcgMTQsMSAxMC4yMSwxXCIvPjwvc3ZnPiIsCiAgICAgICAgInBsYXktY2lyY2xlIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWdvbiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBwb2ludHM9XCI4LjUgNyAxMy41IDEwIDguNSAxM1wiLz48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGN4PVwiMTBcIiBjeT1cIjEwXCIgcj1cIjlcIi8+PC9zdmc+IiwKICAgICAgICAicGxheSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlnb24gZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgcG9pbnRzPVwiNi41LDUgMTQuNSwxMCA2LjUsMTVcIi8+PC9zdmc+IiwKICAgICAgICAicGx1cy1jaXJjbGUiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgY3g9XCI5LjVcIiBjeT1cIjkuNVwiIHI9XCI5XCIvPjxsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHgxPVwiOS41XCIgeTE9XCI1XCIgeDI9XCI5LjVcIiB5Mj1cIjE0XCIvPjxsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHgxPVwiNVwiIHkxPVwiOS41XCIgeDI9XCIxNFwiIHkyPVwiOS41XCIvPjwvc3ZnPiIsCiAgICAgICAgInBsdXMiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxyZWN0IHg9XCI5XCIgeT1cIjFcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxN1wiLz48cmVjdCB4PVwiMVwiIHk9XCI5XCIgd2lkdGg9XCIxN1wiIGhlaWdodD1cIjFcIi8+PC9zdmc+IiwKICAgICAgICAicHJpbnQiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBwb2ludHM9XCI0LjUgMTMuNSAxLjUgMTMuNSAxLjUgNi41IDE4LjUgNi41IDE4LjUgMTMuNSAxNS41IDEzLjVcIi8+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHBvaW50cz1cIjE1LjUgNi41IDE1LjUgMi41IDQuNSAyLjUgNC41IDYuNVwiLz48cmVjdCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiB3aWR0aD1cIjExXCIgaGVpZ2h0PVwiNlwiIHg9XCI0LjVcIiB5PVwiMTEuNVwiLz48cmVjdCB3aWR0aD1cIjhcIiBoZWlnaHQ9XCIxXCIgeD1cIjZcIiB5PVwiMTNcIi8+PHJlY3Qgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiMVwiIHg9XCI2XCIgeT1cIjE1XCIvPjwvc3ZnPiIsCiAgICAgICAgInB1bGwiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwb2x5Z29uIHBvaW50cz1cIjYuODUsOCA5LjUsMTAuNiAxMi4xNSw4IDEyLjg1LDguNyA5LjUsMTIgNi4xNSw4LjdcIi8+PGxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeDE9XCI5LjVcIiB5MT1cIjExXCIgeDI9XCI5LjVcIiB5Mj1cIjJcIi8+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHBvaW50cz1cIjYsNS41IDMuNSw1LjUgMy41LDE4LjUgMTUuNSwxOC41IDE1LjUsNS41IDEzLDUuNVwiLz48L3N2Zz4iLAogICAgICAgICJwdXNoIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWdvbiBwb2ludHM9XCIxMi4xNSw0IDkuNSwxLjQgNi44NSw0IDYuMTUsMy4zIDkuNSwwIDEyLjg1LDMuM1wiLz48bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiB4MT1cIjkuNVwiIHkxPVwiMTBcIiB4Mj1cIjkuNVwiIHkyPVwiMVwiLz48cG9seWxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgcG9pbnRzPVwiNiA1LjUgMy41IDUuNSAzLjUgMTguNSAxNS41IDE4LjUgMTUuNSA1LjUgMTMgNS41XCIvPjwvc3ZnPiIsCiAgICAgICAgInF1ZXN0aW9uIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGN4PVwiMTBcIiBjeT1cIjEwXCIgcj1cIjlcIi8+PGNpcmNsZSBjeD1cIjEwLjQ0XCIgY3k9XCIxNC40MlwiIHI9XCIxLjA1XCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMlwiIGQ9XCJNOC4xNyw3Ljc5IEM4LjE3LDQuNzUgMTIuNzIsNC43MyAxMi43Miw3LjcyIEMxMi43Miw4LjY3IDExLjgxLDkuMTUgMTEuMjMsOS43NSBDMTAuNzUsMTAuMjQgMTAuNTEsMTAuNzMgMTAuNDUsMTEuNCBDMTAuNDQsMTEuNTMgMTAuNDMsMTEuNjQgMTAuNDMsMTEuNzVcIi8+PC9zdmc+IiwKICAgICAgICAicXVvdGUtcmlnaHQiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTcuMjcsNy43OSBDMTcuMjcsOS40NSAxNi45NywxMC40MyAxNS45OSwxMi4wMiBDMTQuOTgsMTMuNjQgMTMsMTUuMjMgMTEuNTYsMTUuOTcgTDExLjEsMTUuMDggQzEyLjM0LDE0LjIgMTMuMTQsMTMuNTEgMTQuMDIsMTEuODIgQzE0LjI3LDExLjM0IDE0LjQxLDEwLjkyIDE0LjQ5LDEwLjU0IEMxNC4zLDEwLjU4IDE0LjA5LDEwLjYgMTMuODgsMTAuNiBDMTIuMDYsMTAuNiAxMC41OSw5LjEyIDEwLjU5LDcuMyBDMTAuNTksNS40OCAxMi4wNiw0IDEzLjg4LDQgQzE1LjM5LDQgMTYuNjcsNS4wMiAxNy4wNSw2LjQyIEMxNy4xOSw2LjgyIDE3LjI3LDcuMjcgMTcuMjcsNy43OSBMMTcuMjcsNy43OSBaXCIvPjxwYXRoIGQ9XCJNOC42OCw3Ljc5IEM4LjY4LDkuNDUgOC4zOCwxMC40MyA3LjQsMTIuMDIgQzYuMzksMTMuNjQgNC40MSwxNS4yMyAyLjk3LDE1Ljk3IEwyLjUxLDE1LjA4IEMzLjc1LDE0LjIgNC41NSwxMy41MSA1LjQzLDExLjgyIEM1LjY4LDExLjM0IDUuODIsMTAuOTIgNS45LDEwLjU0IEM1LjcxLDEwLjU4IDUuNSwxMC42IDUuMjksMTAuNiBDMy40NywxMC42IDIsOS4xMiAyLDcuMyBDMiw1LjQ4IDMuNDcsNCA1LjI5LDQgQzYuOCw0IDguMDgsNS4wMiA4LjQ2LDYuNDIgQzguNiw2LjgyIDguNjgsNy4yNyA4LjY4LDcuNzkgTDguNjgsNy43OSBaXCIvPjwvc3ZnPiIsCiAgICAgICAgInJlY2VpdmVyIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjAxXCIgZD1cIk02LjE4OSwxMy42MTFDOC4xMzQsMTUuNTI1IDExLjA5NywxOC4yMzkgMTMuODY3LDE4LjI1N0MxNi40NywxOC4yNzUgMTguMiwxNi4yNDEgMTguMiwxNi4yNDFMMTQuNTA5LDEyLjU1MUwxMS41MzksMTMuNjM5TDYuMTg5LDguMjlMNy4zMTMsNS4zNTVMMy43NiwxLjhDMy43NiwxLjggMS43MzIsMy41MzcgMS43LDYuMDkyQzEuNjY3LDguODA5IDQuMzQ3LDExLjczOCA2LjE4OSwxMy42MTFcIi8+PC9zdmc+IiwKICAgICAgICAicmVkZGl0IjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTE5IDkuMDVhMi41NiAyLjU2IDAgMCAwLTIuNTYtMi41NiAyLjU5IDIuNTkgMCAwIDAtMS44OC44MiAxMC42MyAxMC42MyAwIDAgMC00LjE0LTF2LS4wOGMuNTgtMS42MiAxLjU4LTMuODkgMi43LTQuMS4zOC0uMDguNzcuMTIgMS4xOS41N2ExLjE1IDEuMTUgMCAwIDAtLjA2LjM3IDEuNDggMS40OCAwIDEgMCAxLjUxLTEuNDUgMS40MyAxLjQzIDAgMCAwLS43Ni4xOUEyLjI5IDIuMjkgMCAwIDAgMTIuOTEgMWMtMi4xMS40My0zLjM5IDQuMzgtMy42MyA1LjE5IDAgMCAwIC4xMS0uMDYuMTFhMTAuNjUgMTAuNjUgMCAwIDAtMy43NSAxQTIuNTYgMi41NiAwIDAgMCAxIDkuMDVhMi40MiAyLjQyIDAgMCAwIC43MiAxLjc2QTUuMTggNS4xOCAwIDAgMCAxLjI0IDEzYzAgMy42NiAzLjkyIDYuNjQgOC43MyA2LjY0czguNzQtMyA4Ljc0LTYuNjRhNS4yMyA1LjIzIDAgMCAwLS40Ni0yLjEzQTIuNTggMi41OCAwIDAgMCAxOSA5LjA1em0tMTYuODggMGExLjQ0IDEuNDQgMCAwIDEgMi4yNy0xLjE5IDcuNjggNy42OCAwIDAgMC0yLjA3IDEuOTEgMS4zMyAxLjMzIDAgMCAxLS4yLS43MnpNMTAgMTguNGMtNC4xNyAwLTcuNTUtMi40LTcuNTUtNS40UzUuODMgNy41MyAxMCA3LjUzIDE3LjUgMTAgMTcuNSAxM3MtMy4zOCA1LjQtNy41IDUuNHptNy42OS04LjYxYTcuNjIgNy42MiAwIDAgMC0yLjA5LTEuOTEgMS40MSAxLjQxIDAgMCAxIC44NC0uMjggMS40NyAxLjQ3IDAgMCAxIDEuNDQgMS40NSAxLjM0IDEuMzQgMCAwIDEtLjIxLjcyelwiLz48cGF0aCBkPVwiTTYuNjkgMTIuNThhMS4zOSAxLjM5IDAgMSAxIDEuMzktMS4zOSAxLjM4IDEuMzggMCAwIDEtMS4zOCAxLjM5elwiLz48cGF0aCBkPVwiTTE0LjI2IDExLjJhMS4zOSAxLjM5IDAgMSAxLTEuMzktMS4zOSAxLjM5IDEuMzkgMCAwIDEgMS4zOSAxLjM5elwiLz48cGF0aCBkPVwiTTEzLjA5IDE0Ljg4YS41NC41NCAwIDAgMS0uMDkuNzcgNS4zIDUuMyAwIDAgMS0zLjI2IDEuMTkgNS42MSA1LjYxIDAgMCAxLTMuNC0xLjIyLjU1LjU1IDAgMSAxIC43My0uODMgNC4wOSA0LjA5IDAgMCAwIDUuMjUgMCAuNTYuNTYgMCAwIDEgLjc3LjA5elwiLz48L3N2Zz4iLAogICAgICAgICJyZWZyZXNoIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBkPVwiTTE3LjA4LDExLjE1IEMxNy4wOSwxMS4zMSAxNy4xLDExLjQ3IDE3LjEsMTEuNjQgQzE3LjEsMTUuNTMgMTMuOTQsMTguNjkgMTAuMDUsMTguNjkgQzYuMTYsMTguNjggMywxNS41MyAzLDExLjYzIEMzLDcuNzQgNi4xNiw0LjU4IDEwLjA1LDQuNTggQzEwLjksNC41OCAxMS43MSw0LjczIDEyLjQ2LDVcIi8+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHBvaW50cz1cIjkuOSAyIDEyLjc5IDQuODkgOS43OSA3LjlcIi8+PC9zdmc+IiwKICAgICAgICAicmVwbHkiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTcuNywxMy4xMSBDMTYuMTIsMTAuMDIgMTMuODQsNy44NSAxMS4wMiw2LjYxIEMxMC41Nyw2LjQxIDkuNzUsNi4xMyA5LDUuOTEgTDksMiBMMSw5IEw5LDE2IEw5LDEyLjEzIEMxMC43OCwxMi40NyAxMi41LDEzLjE5IDE0LjA5LDE0LjI1IEMxNy4xMywxNi4yOCAxOC41NiwxOC41NCAxOC41NiwxOC41NCBDMTguNTYsMTguNTQgMTguODEsMTUuMjggMTcuNywxMy4xMSBMMTcuNywxMy4xMSBaIE0xNC44MiwxMy41MyBDMTMuMTcsMTIuNCAxMS4wMSwxMS40IDgsMTAuOTIgTDgsMTMuNjMgTDIuNTUsOSBMOCw0LjI1IEw4LDYuOCBDOC4zLDYuODYgOS4xNiw3LjAyIDEwLjM3LDcuNDkgQzEzLjMsOC42NSAxNS41NCwxMC45NiAxNi42NSwxMy4wOCBDMTYuOTcsMTMuNyAxNy40OCwxNC44NiAxNy42OCwxNiBDMTYuODcsMTUuMDUgMTUuNzMsMTQuMTUgMTQuODIsMTMuNTMgTDE0LjgyLDEzLjUzIFpcIi8+PC9zdmc+IiwKICAgICAgICAicnNzIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGN4PVwiMy4xMlwiIGN5PVwiMTYuOFwiIHI9XCIxLjg1XCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGQ9XCJNMS41LDguMiBDMS43OCw4LjE4IDIuMDYsOC4xNiAyLjM1LDguMTYgQzcuNTcsOC4xNiAxMS44MSwxMi4zNyAxMS44MSwxNy41NyBDMTEuODEsMTcuODkgMTEuNzksMTguMTkgMTEuNzYsMTguNVwiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBkPVwiTTEuNSwyLjUyIEMxLjc4LDIuNTEgMi4wNiwyLjUgMi4zNSwyLjUgQzEwLjcyLDIuNSAxNy41LDkuMjQgMTcuNSwxNy41NyBDMTcuNSwxNy44OSAxNy40OSwxOC4xOSAxNy40NywxOC41XCIvPjwvc3ZnPiIsCiAgICAgICAgInNlYXJjaCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBjeD1cIjlcIiBjeT1cIjlcIiByPVwiN1wiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBkPVwiTTE0LDE0IEwxOCwxOCBMMTQsMTQgWlwiLz48L3N2Zz4iLAogICAgICAgICJzZXJ2ZXIiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIyXCIvPjxyZWN0IHg9XCI1XCIgeT1cIjNcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIyXCIvPjxyZWN0IHg9XCI3XCIgeT1cIjNcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIyXCIvPjxyZWN0IHg9XCIxNlwiIHk9XCIzXCIgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMVwiLz48cmVjdCB4PVwiMTZcIiB5PVwiMTBcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxXCIvPjxjaXJjbGUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgY3g9XCI5LjlcIiBjeT1cIjE3LjRcIiByPVwiMS40XCIvPjxyZWN0IHg9XCIzXCIgeT1cIjEwXCIgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMlwiLz48cmVjdCB4PVwiNVwiIHk9XCIxMFwiIHdpZHRoPVwiMVwiIGhlaWdodD1cIjJcIi8+PHJlY3QgeD1cIjkuNVwiIHk9XCIxNFwiIHdpZHRoPVwiMVwiIGhlaWdodD1cIjJcIi8+PHJlY3QgeD1cIjNcIiB5PVwiMTdcIiB3aWR0aD1cIjZcIiBoZWlnaHQ9XCIxXCIvPjxyZWN0IHg9XCIxMVwiIHk9XCIxN1wiIHdpZHRoPVwiNlwiIGhlaWdodD1cIjFcIi8+PHJlY3QgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeD1cIjEuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiNVwiLz48cmVjdCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiB4PVwiMS41XCIgeT1cIjguNVwiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCI1XCIvPjwvc3ZnPiIsCiAgICAgICAgInNldHRpbmdzIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48ZWxsaXBzZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBjeD1cIjYuMTFcIiBjeT1cIjMuNTVcIiByeD1cIjIuMTFcIiByeT1cIjIuMTVcIi8+PGVsbGlwc2UgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgY3g9XCI2LjExXCIgY3k9XCIxNS41NVwiIHJ4PVwiMi4xMVwiIHJ5PVwiMi4xNVwiLz48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIGN4PVwiMTMuMTVcIiBjeT1cIjkuNTVcIiByPVwiMi4xNVwiLz48cmVjdCB4PVwiMVwiIHk9XCIzXCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMVwiLz48cmVjdCB4PVwiMTBcIiB5PVwiM1wiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjFcIi8+PHJlY3QgeD1cIjFcIiB5PVwiOVwiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjFcIi8+PHJlY3QgeD1cIjE1XCIgeT1cIjlcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIvPjxyZWN0IHg9XCIxXCIgeT1cIjE1XCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMVwiLz48cmVjdCB4PVwiMTBcIiB5PVwiMTVcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCIxXCIvPjwvc3ZnPiIsCiAgICAgICAgInNocmluayI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlnb24gcG9pbnRzPVwiMTEgNCAxMiA0IDEyIDggMTYgOCAxNiA5IDExIDlcIi8+PHBvbHlnb24gcG9pbnRzPVwiNCAxMSA5IDExIDkgMTYgOCAxNiA4IDEyIDQgMTJcIi8+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgZD1cIk0xMiw4IEwxOCwyXCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGQ9XCJNMiwxOCBMOCwxMlwiLz48L3N2Zz4iLAogICAgICAgICJzaWduLWluIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWdvbiBwb2ludHM9XCI3IDIgMTcgMiAxNyAxNyA3IDE3IDcgMTYgMTYgMTYgMTYgMyA3IDNcIi8+PHBvbHlnb24gcG9pbnRzPVwiOS4xIDEzLjQgOC41IDEyLjggMTEuMjggMTAgNCAxMCA0IDkgMTEuMjggOSA4LjUgNi4yIDkuMSA1LjYyIDEzIDkuNVwiLz48L3N2Zz4iLAogICAgICAgICJzaWduLW91dCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlnb24gcG9pbnRzPVwiMTMuMSAxMy40IDEyLjUgMTIuOCAxNS4yOCAxMCA4IDEwIDggOSAxNS4yOCA5IDEyLjUgNi4yIDEzLjEgNS42MiAxNyA5LjVcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTMgMiAzIDIgMyAxNyAxMyAxNyAxMyAxNiA0IDE2IDQgMyAxMyAzXCIvPjwvc3ZnPiIsCiAgICAgICAgInNvY2lhbCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgeDE9XCIxMy40XCIgeTE9XCIxNFwiIHgyPVwiNi4zXCIgeTI9XCIxMC43XCIvPjxsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIHgxPVwiMTMuNVwiIHkxPVwiNS41XCIgeDI9XCI2LjVcIiB5Mj1cIjguOFwiLz48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGN4PVwiMTUuNVwiIGN5PVwiNC42XCIgcj1cIjIuM1wiLz48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGN4PVwiMTUuNVwiIGN5PVwiMTQuOFwiIHI9XCIyLjNcIi8+PGNpcmNsZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBjeD1cIjQuNVwiIGN5PVwiOS44XCIgcj1cIjIuM1wiLz48L3N2Zz4iLAogICAgICAgICJzb3VuZGNsb3VkIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTE3LjIsOS40Yy0wLjQsMC0wLjgsMC4xLTEuMTAxLDAuMmMtMC4xOTktMi41LTIuMzk5LTQuNS01LTQuNWMtMC42LDAtMS4yLDAuMS0xLjcsMC4zQzkuMiw1LjUsOS4xLDUuNiw5LjEsNS42VjE1aDggYzEuNjAxLDAsMi44MDEtMS4yLDIuODAxLTIuOEMyMCwxMC43LDE4LjcsOS40LDE3LjIsOS40TDE3LjIsOS40elwiLz48cmVjdCB4PVwiNlwiIHk9XCI2LjVcIiB3aWR0aD1cIjEuNVwiIGhlaWdodD1cIjguNVwiLz48cmVjdCB4PVwiM1wiIHk9XCI4XCIgd2lkdGg9XCIxLjVcIiBoZWlnaHQ9XCI3XCIvPjxyZWN0IHk9XCIxMFwiIHdpZHRoPVwiMS41XCIgaGVpZ2h0PVwiNVwiLz48L3N2Zz4iLAogICAgICAgICJzdGFyIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWdvbiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjAxXCIgcG9pbnRzPVwiMTAgMiAxMi42MyA3LjI3IDE4LjUgOC4xMiAxNC4yNSAxMi4yMiAxNS4yNSAxOCAxMCAxNS4yNyA0Ljc1IDE4IDUuNzUgMTIuMjIgMS41IDguMTIgNy4zNyA3LjI3XCIvPjwvc3ZnPiIsCiAgICAgICAgInN0cmlrZXRocm91Z2giOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiwxMy4wMiBMNi42NSwxMy4wMiBDNy42NCwxNS4xNiA4Ljg2LDE2LjEyIDEwLjQxLDE2LjEyIEMxMi4yMiwxNi4xMiAxMi45MiwxNC45MyAxMi45MiwxMy44OSBDMTIuOTIsMTIuNTUgMTEuOTksMTIuMDMgOS43NCwxMS4yMyBDOC4wNSwxMC42NCA2LjIzLDEwLjExIDYuMjMsNy44MyBDNi4yMyw1LjUgOC4wOSw0LjA5IDEwLjQsNC4wOSBDMTEuNDQsNC4wOSAxMi4xMyw0LjMxIDEyLjcyLDQuNTQgTDEzLjMzLDQgTDEzLjgxLDQgTDEzLjgxLDcuNTkgTDEzLjE2LDcuNTkgQzEyLjU1LDUuODggMTEuNTIsNC44OSAxMC4wNyw0Ljg5IEM4Ljg0LDQuODkgNy44OSw1LjY5IDcuODksNy4wMyBDNy44OSw4LjI5IDguODksOC43OCAxMC44OCw5LjQ1IEMxMi41NywxMC4wMyAxNC4zOCwxMC42IDE0LjM4LDEyLjkxIEMxNC4zOCwxNC43NSAxMy4yNywxNi45MyAxMC4xOCwxNi45MyBDOS4xOCwxNi45MyA4LjE3LDE2LjY5IDcuNDYsMTYuMzkgTDYuNTIsMTcgTDYsMTcgTDYsMTMuMDIgTDYsMTMuMDIgWlwiLz48cmVjdCB4PVwiM1wiIHk9XCIxMFwiIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxXCIvPjwvc3ZnPiIsCiAgICAgICAgInRhYmxlIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cmVjdCB4PVwiMVwiIHk9XCIzXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjFcIi8+PHJlY3QgeD1cIjFcIiB5PVwiN1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxXCIvPjxyZWN0IHg9XCIxXCIgeT1cIjExXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjFcIi8+PHJlY3QgeD1cIjFcIiB5PVwiMTVcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMVwiLz48L3N2Zz4iLAogICAgICAgICJ0YWJsZXQtbGFuZHNjYXBlIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBkPVwiTTEuNSw1IEMxLjUsNC4yIDIuMiwzLjUgMywzLjUgTDE3LDMuNSBDMTcuOCwzLjUgMTguNSw0LjIgMTguNSw1IEwxOC41LDE2IEMxOC41LDE2LjggMTcuOCwxNy41IDE3LDE3LjUgTDMsMTcuNSBDMi4yLDE3LjUgMS41LDE2LjggMS41LDE2IEwxLjUsNSBMMS41LDUgTDEuNSw1IFpcIi8+PGNpcmNsZSBjeD1cIjMuN1wiIGN5PVwiMTAuNVwiIHI9XCIuOFwiLz48L3N2Zz4iLAogICAgICAgICJ0YWJsZXQiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIGQ9XCJNNSwxOC41IEM0LjIsMTguNSAzLjUsMTcuOCAzLjUsMTcgTDMuNSwzIEMzLjUsMi4yIDQuMiwxLjUgNSwxLjUgTDE2LDEuNSBDMTYuOCwxLjUgMTcuNSwyLjIgMTcuNSwzIEwxNy41LDE3IEMxNy41LDE3LjggMTYuOCwxOC41IDE2LDE4LjUgTDUsMTguNSBMNSwxOC41IEw1LDE4LjUgWlwiLz48Y2lyY2xlIGN4PVwiMTAuNVwiIGN5PVwiMTYuM1wiIHI9XCIuOFwiLz48L3N2Zz4iLAogICAgICAgICJ0YWciOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIGQ9XCJNMTcuNSwzLjcxIEwxNy41LDcuNzIgQzE3LjUsNy45NiAxNy40LDguMiAxNy4yMSw4LjM5IEw4LjM5LDE3LjIgQzcuOTksMTcuNiA3LjMzLDE3LjYgNi45MywxNy4yIEwyLjgsMTMuMDcgQzIuNCwxMi42NyAyLjQsMTIuMDEgMi44LDExLjYxIEwxMS42MSwyLjggQzExLjgxLDIuNiAxMi4wOCwyLjUgMTIuMzQsMi41IEwxNi4xOSwyLjUgQzE2LjUyLDIuNSAxNi44NiwyLjYzIDE3LjExLDIuODggQzE3LjM1LDMuMTEgMTcuNDgsMy40IDE3LjUsMy43MSBMMTcuNSwzLjcxIFpcIi8+PGNpcmNsZSBjeD1cIjE0XCIgY3k9XCI2XCIgcj1cIjFcIi8+PC9zdmc+IiwKICAgICAgICAidGh1bWJuYWlscyI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeD1cIjMuNVwiIHk9XCIzLjVcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIvPjxyZWN0IGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHg9XCIxMS41XCIgeT1cIjMuNVwiIHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIi8+PHJlY3QgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeD1cIjExLjVcIiB5PVwiMTEuNVwiIHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIi8+PHJlY3QgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeD1cIjMuNVwiIHk9XCIxMS41XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiLz48L3N2Zz4iLAogICAgICAgICJ0cmFzaCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHBvaW50cz1cIjYuNSAzIDYuNSAxLjUgMTMuNSAxLjUgMTMuNSAzXCIvPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBwb2ludHM9XCI0LjUgNCA0LjUgMTguNSAxNS41IDE4LjUgMTUuNSA0XCIvPjxyZWN0IHg9XCI4XCIgeT1cIjdcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCI5XCIvPjxyZWN0IHg9XCIxMVwiIHk9XCI3XCIgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiOVwiLz48cmVjdCB4PVwiMlwiIHk9XCIzXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjFcIi8+PC9zdmc+IiwKICAgICAgICAidHJpYW5nbGUtZG93biI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlnb24gcG9pbnRzPVwiNSA3IDE1IDcgMTAgMTJcIi8+PC9zdmc+IiwKICAgICAgICAidHJpYW5nbGUtbGVmdCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlnb24gcG9pbnRzPVwiMTIgNSA3IDEwIDEyIDE1XCIvPjwvc3ZnPiIsCiAgICAgICAgInRyaWFuZ2xlLXJpZ2h0IjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cG9seWdvbiBwb2ludHM9XCI4IDUgMTMgMTAgOCAxNVwiLz48L3N2Zz4iLAogICAgICAgICJ0cmlhbmdsZS11cCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlnb24gcG9pbnRzPVwiNSAxMyAxMCA4IDE1IDEzXCIvPjwvc3ZnPiIsCiAgICAgICAgInRyaXBhZHZpc29yIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTE5LjAyMSw3Ljg2NkMxOS4yNTYsNi44NjIsMjAsNS44NTQsMjAsNS44NTRoLTMuMzQ2QzE0Ljc4MSw0LjY0MSwxMi41MDQsNCw5Ljk4LDRDNy4zNjMsNCw0Ljk5OSw0LjY1MSwzLjEzNSw1Ljg3NkgwXHRjMCwwLDAuNzM4LDAuOTg3LDAuOTc2LDEuOTg4Yy0wLjYxMSwwLjgzNy0wLjk3MywxLjg1Mi0wLjk3MywyLjk2NGMwLDIuNzYzLDIuMjQ5LDUuMDA5LDUuMDExLDUuMDA5XHRjMS41NzYsMCwyLjk3Ni0wLjczNywzLjkwMS0xLjg3OWwxLjA2MywxLjU5OWwxLjA3NS0xLjYxNWMwLjQ3NSwwLjYxMSwxLjEsMS4xMTEsMS44MzgsMS40NTFjMS4yMTMsMC41NDcsMi41NzQsMC42MTIsMy44MjUsMC4xNVx0YzIuNTg5LTAuOTYzLDMuOTEzLTMuODUyLDIuOTY0LTYuNDM5Yy0wLjE3NS0wLjQ2My0wLjQtMC44NzYtMC42NzUtMS4yMzhIMTkuMDIxeiBNMTYuMzgsMTQuNTk0XHRjLTEuMDAyLDAuMzcxLTIuMDg4LDAuMzI4LTMuMDYtMC4xMTljLTAuNjg4LTAuMzE3LTEuMjUyLTAuODE3LTEuNjU3LTEuNDM4Yy0wLjE2NC0wLjI1LTAuMzEzLTAuNTItMC40MTctMC44MTFcdGMtMC4xMjQtMC4zMjgtMC4xODYtMC42NjgtMC4yMTctMS4wMTRjLTAuMDYzLTAuNjg5LDAuMDM3LTEuMzk2LDAuMzM5LTIuMDQzYzAuNDQ4LTAuOTcxLDEuMjUxLTEuNzEsMi4yNS0yLjA3OVx0YzIuMDc1LTAuNzY1LDQuMzc1LDAuMyw1LjE0LDIuMzY2YzAuNzYyLDIuMDY2LTAuMzAxLDQuMzctMi4zNjMsNS4xMzRMMTYuMzgsMTQuNTk0TDE2LjM4LDE0LjU5NHogTTguMzIyLDEzLjA2Nlx0Yy0wLjcyLDEuMDU5LTEuOTM1LDEuNzYtMy4zMDksMS43NmMtMi4yMDcsMC00LjAwMS0xLjc5Ny00LjAwMS0zLjk5NmMwLTIuMjAzLDEuNzk1LTQuMDAyLDQuMDAxLTQuMDAyXHRjMi4yMDQsMCwzLjk5OSwxLjgsMy45OTksNC4wMDJjMCwwLjEzNy0wLjAyNCwwLjI2MS0wLjA0LDAuMzk2Yy0wLjA2NywwLjY3OC0wLjI4NCwxLjMxMy0wLjY0OCwxLjg1M3YtMC4wMTNIOC4zMjJ6IE0yLjQ3MiwxMC43NzVcdGMwLDEuMzY3LDEuMTEyLDIuNDc5LDIuNDc2LDIuNDc5YzEuMzYzLDAsMi40NzItMS4xMSwyLjQ3Mi0yLjQ3OWMwLTEuMzU5LTEuMTEtMi40NjgtMi40NzItMi40NjhcdEMzLjU4NCw4LjMwNiwyLjQ3Myw5LjQxNiwyLjQ3MiwxMC43NzVMMi40NzIsMTAuNzc1eiBNMTIuNTE0LDEwLjc3NWMwLDEuMzY3LDEuMTA0LDIuNDc5LDIuNDcxLDIuNDc5XHRjMS4zNjMsMCwyLjQ3NC0xLjEwOCwyLjQ3NC0yLjQ3OWMwLTEuMzU5LTEuMTEtMi40NjgtMi40NzQtMi40NjhjLTEuMzY0LDAtMi40NzcsMS4xMDktMi40NzcsMi40NjhIMTIuNTE0eiBNMy4zMjQsMTAuNzc1XHRjMC0wLjg5MywwLjcyNi0xLjYxOCwxLjYxNC0xLjYxOGMwLjg4OSwwLDEuNjI1LDAuNzI3LDEuNjI1LDEuNjE4YzAsMC44OTgtMC43MjUsMS42MjctMS42MjUsMS42MjdcdGMtMC45MDEsMC0xLjYyNS0wLjcyOS0xLjYyNS0xLjYyN0gzLjMyNHogTTEzLjM1NCwxMC43NzVjMC0wLjg5MywwLjcyNi0xLjYxOCwxLjYyNy0xLjYxOGMwLjg4NiwwLDEuNjEsMC43MjcsMS42MSwxLjYxOFx0YzAsMC44OTgtMC43MjYsMS42MjctMS42MjYsMS42MjdzLTEuNjI1LTAuNzI5LTEuNjI1LTEuNjI3SDEzLjM1NHogTTkuOTc3LDQuODc1YzEuNzk4LDAsMy40MjUsMC4zMjQsNC44NDksMC45NjhcdGMtMC41MzUsMC4wMTUtMS4wNjEsMC4xMDgtMS41ODYsMC4zYy0xLjI2NCwwLjQ2My0yLjI2NCwxLjM4OC0yLjgxNSwyLjYwNGMtMC4yNjIsMC41NTEtMC4zOTgsMS4xMzMtMC40NDgsMS43Mlx0QzkuNzksNy45MDUsNy42NzcsNS44NzMsNS4wNzYsNS44MkM2LjUwMSw1LjIwOCw4LjE1Myw0Ljg3NSw5Ljk0LDQuODc1SDkuOTc3elwiLz48L3N2Zz4iLAogICAgICAgICJ0dW1ibHIiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNi44ODUsOC41OThjMCwwLDAsMy4zOTMsMCw0Ljk5NmMwLDAuMjgyLDAsMC42NiwwLjA5NCwwLjk0MmMwLjM3NywxLjUwOSwxLjEzMSwyLjU0NSwyLjU0NSwzLjExIGMxLjMxOSwwLjQ3MiwyLjM1NiwwLjQ3MiwzLjY3NiwwYzAuNTY1LTAuMTg4LDEuMTMyLTAuNjU5LDEuMTMyLTAuNjU5bC0wLjg0OS0yLjI2M2MwLDAtMS4wMzYsMC4zNzgtMS42MDMsMC4yODMgYy0wLjU2NS0wLjA5NC0xLjIyNi0wLjY2LTEuMjI2LTEuNTA4YzAtMS42MDMsMC00LjkwMiwwLTQuOTAyaDIuODI4VjUuNzcxaC0yLjgyOFYySDguMjA1YzAsMC0wLjA5NCwwLjY2LTAuMTg4LDAuOTQyIEM3LjgyOCwzLjc5MSw3LjI2Miw0LjczMyw2LjYwMyw1LjM5NEM1Ljg0OCw2LjE0Nyw1LDYuNDMsNSw2LjQzdjIuMTY4SDYuODg1elwiLz48L3N2Zz4iLAogICAgICAgICJ0diI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgeD1cIjdcIiB5PVwiMTZcIiB3aWR0aD1cIjZcIiBoZWlnaHQ9XCIxXCIvPjxyZWN0IGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHg9XCIuNVwiIHk9XCIzLjVcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMTFcIi8+PC9zdmc+IiwKICAgICAgICAidHdpdHRlciI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xOSw0Ljc0IEMxOC4zMzksNS4wMjkgMTcuNjI2LDUuMjI5IDE2Ljg4MSw1LjMyIEMxNy42NDQsNC44NiAxOC4yMjcsNC4xMzkgMTguNTAzLDMuMjggQzE3Ljc5LDMuNyAxNy4wMDEsNC4wMDkgMTYuMTU5LDQuMTcgQzE1LjQ4NSwzLjQ1IDE0LjUyNiwzIDEzLjQ2NCwzIEMxMS40MjMsMyA5Ljc3MSw0LjY2IDkuNzcxLDYuNyBDOS43NzEsNi45OSA5LjgwNCw3LjI2OSA5Ljg2OCw3LjUzOSBDNi43OTUsNy4zOCA0LjA3Niw1LjkxOSAyLjI1NCwzLjY3OSBDMS45MzYsNC4yMTkgMS43NTQsNC44NiAxLjc1NCw1LjUzOSBDMS43NTQsNi44MiAyLjQwNSw3Ljk1IDMuMzk3LDguNjEgQzIuNzksOC41ODkgMi4yMiw4LjQyOSAxLjcyMyw4LjE0OSBMMS43MjMsOC4xODkgQzEuNzIzLDkuOTc4IDIuOTk3LDExLjQ3OCA0LjY4NiwxMS44MiBDNC4zNzYsMTEuODk5IDQuMDQ5LDExLjkzOSAzLjcxMywxMS45MzkgQzMuNDc1LDExLjkzOSAzLjI0NSwxMS45MTkgMy4wMTgsMTEuODggQzMuNDksMTMuMzQ5IDQuODUyLDE0LjQxOSA2LjQ2OSwxNC40NDkgQzUuMjA1LDE1LjQyOSAzLjYxMiwxNi4wMTkgMS44ODIsMTYuMDE5IEMxLjU4MywxNi4wMTkgMS4yOSwxNi4wMDkgMSwxNS45NjkgQzIuNjM1LDE3LjAxOSA0LjU3NiwxNy42MjkgNi42NjIsMTcuNjI5IEMxMy40NTQsMTcuNjI5IDE3LjE3LDEyIDE3LjE3LDcuMTI5IEMxNy4xNyw2Ljk2OSAxNy4xNjYsNi44MDkgMTcuMTU3LDYuNjQ5IEMxNy44NzksNi4xMjkgMTguNTA0LDUuNDc4IDE5LDQuNzRcIi8+PC9zdmc+IiwKICAgICAgICAidWlraXQiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwb2x5Z29uIHBvaW50cz1cIjE0LjQsMy4xIDExLjMsNS4xIDE1LDcuMyAxNSwxMi45IDEwLDE1LjcgNSwxMi45IDUsOC41IDIsNi44IDIsMTQuOCA5LjksMTkuNSAxOCwxNC44IDE4LDUuM1wiLz48cG9seWdvbiBwb2ludHM9XCI5LjgsNC4yIDYuNywyLjQgOS44LDAuNCAxMi45LDIuM1wiLz48L3N2Zz4iLAogICAgICAgICJ1bmxvY2siOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxyZWN0IGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIHg9XCIzLjVcIiB5PVwiOC41XCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEwXCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIGQ9XCJNNi41LDguNSBMNi41LDQuOSBDNi41LDMgOC4xLDEuNSAxMCwxLjUgQzExLjksMS41IDEzLjUsMyAxMy41LDQuOVwiLz48L3N2Zz4iLAogICAgICAgICJ1cGxvYWQiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBwb2ludHM9XCI1IDggOS41IDMuNSAxNCA4XCIvPjxyZWN0IHg9XCIzXCIgeT1cIjE3XCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjFcIi8+PGxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgeDE9XCI5LjVcIiB5MT1cIjE1XCIgeDI9XCI5LjVcIiB5Mj1cIjRcIi8+PC9zdmc+IiwKICAgICAgICAidXNlciI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBjeD1cIjkuOVwiIGN5PVwiNi40XCIgcj1cIjQuNFwiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBkPVwiTTEuNSwxOSBDMi4zLDE0LjUgNS44LDExLjIgMTAsMTEuMiBDMTQuMiwxMS4yIDE3LjcsMTQuNiAxOC41LDE5LjJcIi8+PC9zdmc+IiwKICAgICAgICAidXNlcnMiOiAiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgY3g9XCI3LjdcIiBjeT1cIjguNlwiIHI9XCIzLjVcIi8+PHBhdGggZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgZD1cIk0xLDE4LjEgQzEuNywxNC42IDQuNCwxMi4xIDcuNiwxMi4xIEMxMC45LDEyLjEgMTMuNywxNC44IDE0LjMsMTguM1wiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBkPVwiTTExLjQsNCBDMTIuOCwyLjQgMTUuNCwyLjggMTYuMyw0LjcgQzE3LjIsNi42IDE1LjcsOC45IDEzLjYsOC45IEMxNi41LDguOSAxOC44LDExLjMgMTkuMiwxNC4xXCIvPjwvc3ZnPiIsCiAgICAgICAgInZpZGVvLWNhbWVyYSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBvbHlnb24gZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDAwXCIgcG9pbnRzPVwiMTcuNSA2LjkgMTcuNSAxMy4xIDEzLjUgMTAuNCAxMy41IDE0LjUgMi41IDE0LjUgMi41IDUuNSAxMy41IDUuNSAxMy41IDkuNiAxNy41IDYuOVwiLz48L3N2Zz4iLAogICAgICAgICJ2aW1lbyI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0yLjA2NSw3LjU5QzEuODQsNy4zNjcsMS42NTQsNy4wODIsMS40NjgsNi44MzhjLTAuMzMyLTAuNDItMC4xMzctMC40MTEsMC4yNzQtMC43NzJjMS4wMjYtMC45MSwyLjAwNC0xLjg5NiwzLjEyNy0yLjY4OCBjMS4wMTctMC43MTMsMi4zNjUtMS4xNzMsMy4yODYtMC4wMzljMC44NDksMS4wNDUsMC44NjksMi42MjksMS4wODQsMy44OTFjMC4yMTUsMS4zMDksMC40MjEsMi42NDgsMC44OCwzLjkwMSBjMC4xMjcsMC4zNTIsMC4zNywxLjAxOCwwLjgxLDEuMDc0YzAuNTY3LDAuMDc4LDEuMTQ1LTAuOTE3LDEuNDA4LTEuMjg5YzAuNjg0LTAuOTg3LDEuNjExLTIuMzE3LDEuNDk0LTMuNTg3IGMtMC4xMTUtMS4zNDktMS41NzItMS4wOTUtMi40ODItMC43NzNjMC4xNDYtMS41MTQsMS41NTUtMy4yMTYsMi45MTItMy43OTJjMS40MzktMC41OTcsMy41NzktMC41ODcsNC4zMDIsMS4wMzYgYzAuNzcyLDEuNzU5LDAuMDc4LDMuODAyLTAuNzYzLDUuMzk2Yy0wLjkxOCwxLjczMS0yLjEsMy4zMzMtMy4zNjMsNC44MjljLTEuMTE0LDEuMzI5LTIuNDMyLDIuNzg3LTQuMDkzLDMuNDIyIGMtMS44OTcsMC43MjMtMy4wMjEtMC42ODYtMy42NjctMi4zMThjLTAuNzA1LTEuNzc3LTEuMDU2LTMuNzcxLTEuNTY1LTUuNjIxQzQuODk4LDguNzI2LDQuNjQ0LDcuODM2LDQuMTM2LDcuMTkxIEMzLjQ3Myw2LjM1OCwyLjcyLDcuMTQxLDIuMDY1LDcuNTlDMS45NzcsNy41MDIsMi4xMTUsNy41NTEsMi4wNjUsNy41OUwyLjA2NSw3LjU5elwiLz48L3N2Zz4iLAogICAgICAgICJ3YXJuaW5nIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGN4PVwiMTBcIiBjeT1cIjE0XCIgcj1cIjFcIi8+PGNpcmNsZSBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBjeD1cIjEwXCIgY3k9XCIxMFwiIHI9XCI5XCIvPjxwYXRoIGQ9XCJNMTAuOTcsNy43MiBDMTAuODUsOS41NCAxMC41NiwxMS4yOSAxMC41NiwxMS4yOSBDMTAuNTEsMTEuODcgMTAuMjcsMTIgOS45OSwxMiBDOS42OSwxMiA5LjQ5LDExLjg3IDkuNDMsMTEuMjkgQzkuNDMsMTEuMjkgOS4xNiw5LjU0IDkuMDMsNy43MiBDOC45Niw2LjU0IDkuMDMsNiA5LjAzLDYgQzkuMDMsNS40NSA5LjQ2LDUuMDIgOS45OSw1IEMxMC41Myw1LjAxIDEwLjk3LDUuNDQgMTAuOTcsNiBDMTAuOTcsNiAxMS4wNCw2LjU0IDEwLjk3LDcuNzIgTDEwLjk3LDcuNzIgWlwiLz48L3N2Zz4iLAogICAgICAgICJ3aGF0c2FwcCI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xNi43LDMuM2MtMS44LTEuOC00LjEtMi44LTYuNy0yLjhjLTUuMiwwLTkuNCw0LjItOS40LDkuNGMwLDEuNywwLjQsMy4zLDEuMyw0LjdsLTEuMyw0LjlsNS0xLjNjMS40LDAuOCwyLjksMS4yLDQuNSwxLjIgbDAsMGwwLDBjNS4yLDAsOS40LTQuMiw5LjQtOS40QzE5LjUsNy40LDE4LjUsNSwxNi43LDMuMyBNMTAuMSwxNy43TDEwLjEsMTcuN2MtMS40LDAtMi44LTAuNC00LTEuMWwtMC4zLTAuMmwtMywwLjhsMC44LTIuOSBsLTAuMi0wLjNjLTAuOC0xLjItMS4yLTIuNy0xLjItNC4yYzAtNC4zLDMuNS03LjgsNy44LTcuOGMyLjEsMCw0LjEsMC44LDUuNSwyLjNjMS41LDEuNSwyLjMsMy40LDIuMyw1LjUgQzE3LjksMTQuMiwxNC40LDE3LjcsMTAuMSwxNy43IE0xNC40LDExLjljLTAuMi0wLjEtMS40LTAuNy0xLjYtMC44Yy0wLjItMC4xLTAuNC0wLjEtMC41LDAuMWMtMC4yLDAuMi0wLjYsMC44LTAuOCwwLjkgYy0wLjEsMC4yLTAuMywwLjItMC41LDAuMWMtMC4yLTAuMS0xLTAuNC0xLjktMS4yYy0wLjctMC42LTEuMi0xLjQtMS4zLTEuNmMtMC4xLTAuMiwwLTAuNCwwLjEtMC41QzgsOC44LDguMSw4LjcsOC4yLDguNSBjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC4xLTAuMiwwLTAuMywwLTAuNEM4LjQsNy42LDcuOSw2LjUsNy43LDZDNy41LDUuNSw3LjMsNS42LDcuMiw1LjZjLTAuMSwwLTAuMywwLTAuNCwwIGMtMC4yLDAtMC40LDAuMS0wLjYsMC4zYy0wLjIsMC4yLTAuOCwwLjgtMC44LDJjMCwxLjIsMC44LDIuMywxLDIuNGMwLjEsMC4yLDEuNywyLjUsNCwzLjVjMC42LDAuMiwxLDAuNCwxLjMsMC41IGMwLjYsMC4yLDEuMSwwLjIsMS41LDAuMWMwLjUtMC4xLDEuNC0wLjYsMS42LTEuMWMwLjItMC41LDAuMi0xLDAuMS0xLjFDMTQuOCwxMi4xLDE0LjYsMTIsMTQuNCwxMS45XCIvPjwvc3ZnPiIsCiAgICAgICAgIndvcmRwcmVzcyI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMCwwLjVjLTUuMiwwLTkuNSw0LjMtOS41LDkuNXM0LjMsOS41LDkuNSw5LjVjNS4yLDAsOS41LTQuMyw5LjUtOS41UzE1LjIsMC41LDEwLDAuNUwxMCwwLjVMMTAsMC41eiBNMTUuNiwzLjloLTAuMSBjLTAuOCwwLTEuNCwwLjctMS40LDEuNWMwLDAuNywwLjQsMS4zLDAuOCwxLjljMC4zLDAuNiwwLjcsMS4zLDAuNywyLjNjMCwwLjctMC4zLDEuNS0wLjYsMi43TDE0LjEsMTVsLTMtOC45IGMwLjUsMCwwLjktMC4xLDAuOS0wLjFDMTIuNSw2LDEyLjUsNS4zLDEyLDUuNGMwLDAtMS4zLDAuMS0yLjIsMC4xQzksNS41LDcuNyw1LjQsNy43LDUuNEM3LjIsNS4zLDcuMiw2LDcuNiw2YzAsMCwwLjQsMC4xLDAuOSwwLjEgbDEuMywzLjVMOCwxNUw1LDYuMUM1LjUsNi4xLDUuOSw2LDUuOSw2QzYuNCw2LDYuMyw1LjMsNS45LDUuNGMwLDAtMS4zLDAuMS0yLjIsMC4xYy0wLjIsMC0wLjMsMC0wLjUsMGMxLjUtMi4yLDQtMy43LDYuOS0zLjcgQzEyLjIsMS43LDE0LjEsMi42LDE1LjYsMy45TDE1LjYsMy45TDE1LjYsMy45eiBNMi41LDYuNmwzLjksMTAuOGMtMi43LTEuMy00LjYtNC4yLTQuNi03LjRDMS44LDguOCwyLDcuNiwyLjUsNi42TDIuNSw2LjZMMi41LDYuNiB6IE0xMC4yLDEwLjdsMi41LDYuOWMwLDAsMCwwLjEsMC4xLDAuMUMxMS45LDE4LDExLDE4LjIsMTAsMTguMmMtMC44LDAtMS42LTAuMS0yLjMtMC4zTDEwLjIsMTAuN0wxMC4yLDEwLjdMMTAuMiwxMC43eiBNMTQuMiwxNy4xIGwyLjUtNy4zYzAuNS0xLjIsMC42LTIuMSwwLjYtMi45YzAtMC4zLDAtMC42LTAuMS0wLjhjMC42LDEuMiwxLDIuNSwxLDRDMTguMywxMywxNi42LDE1LjcsMTQuMiwxNy4xTDE0LjIsMTcuMUwxNC4yLDE3LjF6XCIvPjwvc3ZnPiIsCiAgICAgICAgIndvcmxkIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBkPVwiTTEsMTAuNSBMMTksMTAuNVwiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBkPVwiTTIuMzUsMTUuNSBMMTcuNjUsMTUuNVwiLz48cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDBcIiBkPVwiTTIuMzUsNS41IEwxNy41MjMsNS41XCIvPjxwYXRoIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIGQ9XCJNMTAsMTkuNDYgTDkuOTgsMTkuNDYgQzcuMzEsMTcuMzMgNS42MSwxNC4xNDEgNS42MSwxMC41OCBDNS42MSw3LjAyIDcuMzMsMy44MyAxMCwxLjcgQzEwLjAxLDEuNyA5Ljk5LDEuNyAxMCwxLjcgTDEwLDEuNyBDMTIuNjcsMy44MyAxNC40LDcuMDIgMTQuNCwxMC41OCBDMTQuNCwxNC4xNDEgMTIuNjcsMTcuMzMgMTAsMTkuNDYgTDEwLDE5LjQ2IEwxMCwxOS40NiBMMTAsMTkuNDYgWlwiLz48Y2lyY2xlIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAwMFwiIGN4PVwiMTBcIiBjeT1cIjEwLjVcIiByPVwiOVwiLz48L3N2Zz4iLAogICAgICAgICJ4aW5nIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTQuNCw0LjU2IEM0LjI0LDQuNTYgNC4xMSw0LjYxIDQuMDUsNC43MiBDMy45OCw0LjgzIDMuOTksNC45NyA0LjA3LDUuMTIgTDUuODIsOC4xNiBMNS44Miw4LjE3IEwzLjA2LDEzLjA0IEMyLjk5LDEzLjE4IDIuOTksMTMuMzMgMy4wNiwxMy40NCBDMy4xMiwxMy41NSAzLjI0LDEzLjYyIDMuNCwxMy42MiBMNiwxMy42MiBDNi4zOSwxMy42MiA2LjU3LDEzLjM2IDYuNzEsMTMuMTIgQzYuNzEsMTMuMTIgOS40MSw4LjM1IDkuNTEsOC4xNiBDOS40OSw4LjE0IDcuNzIsNS4wNCA3LjcyLDUuMDQgQzcuNTgsNC44MSA3LjM5LDQuNTYgNi45OSw0LjU2IEw0LjQsNC41NiBMNC40LDQuNTYgWlwiLz48cGF0aCBkPVwiTTE1LjMsMSBDMTQuOTEsMSAxNC43NCwxLjI1IDE0LjYsMS41IEMxNC42LDEuNSA5LjAxLDExLjQyIDguODIsMTEuNzQgQzguODMsMTEuNzYgMTIuNTEsMTguNTEgMTIuNTEsMTguNTEgQzEyLjY0LDE4Ljc0IDEyLjg0LDE5IDEzLjIzLDE5IEwxNS44MiwxOSBDMTUuOTgsMTkgMTYuMSwxOC45NCAxNi4xNiwxOC44MyBDMTYuMjMsMTguNzIgMTYuMjMsMTguNTcgMTYuMTYsMTguNDMgTDEyLjUsMTEuNzQgTDEyLjUsMTEuNzIgTDE4LjI1LDEuNTYgQzE4LjMyLDEuNDIgMTguMzIsMS4yNyAxOC4yNSwxLjE2IEMxOC4yMSwxLjA2IDE4LjA4LDEgMTcuOTMsMSBMMTUuMywxIEwxNS4zLDEgWlwiLz48L3N2Zz4iLAogICAgICAgICJ5ZWxwIjogIjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTE3LjE3NSwxNC45NzFjLTAuMTEyLDAuNzctMS42ODYsMi43NjctMi40MDYsMy4wNTRjLTAuMjQ2LDAuMS0wLjQ4NywwLjA3Ni0wLjY3NS0wLjA2OVx0Yy0wLjEyMi0wLjA5Ni0yLjQ0Ni0zLjg1OS0yLjQ0Ni0zLjg1OWMtMC4xOTQtMC4yOTMtMC4xNTctMC42ODIsMC4wODMtMC45NzhjMC4yMzQtMC4yODQsMC41ODEtMC4zOTMsMC44ODEtMC4yNzZcdGMwLjAxNiwwLjAxLDQuMjEsMS4zOTQsNC4zMzIsMS40ODJjMC4xNzgsMC4xNDgsMC4yNjMsMC4zNzksMC4yMjUsMC42NDZMMTcuMTc1LDE0Ljk3MUwxNy4xNzUsMTQuOTcxeiBNMTEuNDY0LDEwLjc4OVx0Yy0wLjIwMy0wLjMwNy0wLjE5OS0wLjY2NiwwLjAwOS0wLjkxNmMwLDAsMi42MjUtMy41NzQsMi43NDUtMy42NTdjMC4yMDMtMC4xMzUsMC40NTItMC4xNDEsMC42OS0wLjAyNVx0YzAuNjkxLDAuMzM1LDIuMDg1LDIuNDA1LDIuMTY3LDMuMTk5djAuMDI3YzAuMDI0LDAuMjcxLTAuMDgyLDAuNDkxLTAuMjczLDAuNjIzYy0wLjEzMiwwLjA4My00LjQzLDEuMTU1LTQuNDMsMS4xNTVcdGMtMC4zMjIsMC4wOTYtMC42OC0wLjA2LTAuODgyLTAuMzgxTDExLjQ2NCwxMC43ODl6IE05LjQ3NSw5LjU2M0M5LjMyLDkuNjA5LDguODQ4LDkuNzU3LDguMjY5LDguODE3YzAsMC0zLjkxNi02LjE2LTQuMDA3LTYuMzUxXHRjLTAuMDU3LTAuMjEyLDAuMDExLTAuNDU1LDAuMjAyLTAuNjVDNS4wNDcsMS4yMTEsOC4yMSwwLjMyNyw5LjAzNywwLjUyOWMwLjI3LDAuMDY5LDAuNDU3LDAuMjM4LDAuNTIyLDAuNDc5XHRjMC4wNDcsMC4yNjYsMC40MzMsNS45ODIsMC40ODgsNy4yNjRDMTAuMDk4LDkuMzY4LDkuNjI5LDkuNTE3LDkuNDc1LDkuNTYzeiBNOS45MjcsMTkuMDY2Yy0wLjA4MywwLjIyNS0wLjI3MywwLjM3My0wLjU0LDAuNDIxXHRjLTAuNzYyLDAuMTMtMy4xNS0wLjc1MS0zLjY0Ny0xLjM0MmMtMC4wOTYtMC4xMzEtMC4xNTUtMC4yNjItMC4xNjctMC4zOTRjLTAuMDExLTAuMDk1LDAtMC4xODksMC4wMzYtMC4yNzJcdGMwLjA2MS0wLjE1NSwyLjkxNy0zLjUzOCwyLjkxNy0zLjUzOGMwLjIxNC0wLjI3MiwwLjU5NS0wLjM1NSwwLjk1Mi0wLjIxM2MwLjM0NSwwLjEzLDAuNTYsMC40MjgsMC41MzYsMC43NDlcdEMxMC4wMTQsMTQuNDc5LDkuOTc3LDE4LjkyMyw5LjkyNywxOS4wNjZ6IE0zLjQ5NSwxMy45MTJjLTAuMjM1LTAuMDA5LTAuNDQ0LTAuMTQ4LTAuNTY4LTAuMzgyYy0wLjA4OS0wLjE3LTAuMTUxLTAuNDUzLTAuMTktMC43OTRcdEMyLjYzLDExLjcwMSwyLjc2MSwxMC4xNDQsMy4wNyw5LjY0OGMwLjE0NS0wLjIyNiwwLjM1Ny0wLjM0NSwwLjU5Mi0wLjMzNmMwLjE1NCwwLDQuMjU1LDEuNjY3LDQuMjU1LDEuNjY3XHRjMC4zMjEsMC4xMTgsMC41MjEsMC40NTMsMC41LDAuODMzYy0wLjAyMywwLjM3LTAuMjM2LDAuNjU1LTAuNTUxLDAuNzM4TDMuNDk1LDEzLjkxMnpcIi8+PC9zdmc+IiwKICAgICAgICAieW91dHViZSI6ICI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xNSw0LjFjMSwwLjEsMi4zLDAsMywwLjhjMC44LDAuOCwwLjksMi4xLDAuOSwzLjFDMTksOS4yLDE5LDEwLjksMTksMTJjLTAuMSwxLjEsMCwyLjQtMC41LDMuNGMtMC41LDEuMS0xLjQsMS41LTIuNSwxLjYgYy0xLjIsMC4xLTguNiwwLjEtMTEsMGMtMS4xLTAuMS0yLjQtMC4xLTMuMi0xYy0wLjctMC44LTAuNy0yLTAuOC0zQzEsMTEuOCwxLDEwLjEsMSw4LjljMC0xLjEsMC0yLjQsMC41LTMuNEMyLDQuNSwzLDQuMyw0LjEsNC4yIEM1LjMsNC4xLDEyLjYsNCwxNSw0LjF6IE04LDcuNXY2bDUuNS0zTDgsNy41elwiLz48L3N2Zz4iCiAgICB9KTsKCiAgICB9CgogICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5VSWtpdCkgewogICAgICAgIHdpbmRvdy5VSWtpdC51c2UocGx1Z2luKTsKICAgIH0KCiAgICByZXR1cm4gcGx1Z2luOwoKfSkpOwo=", +{"status":false} +], + + +[ +"проверить-uikit", +"LyoKICoKICog0JLRgdC/0L7QvNC+0LPQsNGC0LXQu9GM0L3Ri9C1INGE0YPQvdC60YbQuNC4CiAqCiAqLwogCmZ1bmN0aW9uINC80L7QtNGD0LvRjCjQuNC80Y8pCnsKICAgIGZvciAodmFyINC90L7QvNC10YAgaW4g0LzRg9GA0L7QvC7QvNC+0LTRg9C70LgpCiAgICB7CiAgICAgICAgdmFyINC8ID0g0LzRg9GA0L7QvC7QvNC+0LTRg9C70Lhb0L3QvtC80LXRgF07CiAgICAgICAgaWYgKNC8WzBdID09INC40LzRjykKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiDQvDsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBudWxsOwp9CgrQvNGD0YDQvtC8LtC+0LHRi9GH0L3Ri9C50J/Rg9GB0LogPSBuZXcg0KPQstC10LTQvtC80LjRgtC10LvRjCgpOwpmdW5jdGlvbiDRg9Cy0LXQtNC+0LzQuNGC0YzQntCx0J7QsdGL0YfQvdC+0LzQn9GD0YHQutC1KCkKewogICAg0LzRg9GA0L7QvC7Qv9GD0YHQui7Qv9C+0LTQv9C40YHQsNGC0YwoZnVuY3Rpb24oKXsKICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCAhPSAiPzAiKQogICAgICAgIHsKICAgICAgICAgICAg0LzRg9GA0L7QvC7QvtCx0YvRh9C90YvQudCf0YPRgdC6LtGD0LLQtdC00L7QvNC40YLRjCgpOwogICAgICAgIH0KICAgIH0pOwp9CgovKgogKgogKiDQntGB0L3QvtCy0L3Ri9C1INGE0YPQvdC60YbQuNC4CiAqCiAqLwoKZnVuY3Rpb24g0YPRgdGC0LDQvdC+0LLQuNGC0YxVSUtpdCgpCnsKICAgIGNvbnNvbGUuZGVidWcoItCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdC8IFVJS2l0Iik7CgogICAgdmFyIHVpa2l0Q1NTID0g0LzQvtC00YPQu9GMKCJ1aWtpdC5taW4uY3NzXzMuMi4wIilbMV07CiAgICB2YXIgdWlraXRKUyA9INC80L7QtNGD0LvRjCgidWlraXQuanNfMy4yLjAiKVsxXTsKICAgIHZhciB1aWtpdEljb25zSlMgPSDQvNC+0LTRg9C70YwoInVpa2l0LWljb25zLmpzXzMuMi4wIilbMV07CgogICAgdmFyINCy0LjQtCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKNCy0LjQtCk7CiAgICDQstC40LQuaW5uZXJIVE1MID0g0LzRg9GA0L7QvC5hdG9iKHVpa2l0Q1NTKTsKICAgICAgICAKICAgIC8vZXZhbCjQvNGD0YDQvtC8LmF0b2IodWlraXRKUykpOwogICAgLy9ldmFsKNC80YPRgNC+0LwuYXRvYih1aWtpdEljb25zSlMpKTsKCiAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCJzcmMiLCAiZGF0YTp0ZXh0L2phdmFzY3JpcHQ7YmFzZTY0LCIgKyB1aWtpdEpTKTsKICAgIC8vc2NyaXB0LnNldEF0dHJpYnV0ZSgic3JjIiwgImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3Vpa2l0LzMuMi4wL2pzL3Vpa2l0LmpzIik7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgICAKICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICAgIC8vc2NyaXB0LnNldEF0dHJpYnV0ZSgic3JjIiwgImRhdGE6dGV4dC9qYXZhc2NyaXB0O2Jhc2U2NCwiICsgdWlraXRJY29uc0pTKTsKICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoInNyYyIsICJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy91aWtpdC8zLjIuMC9qcy91aWtpdC1pY29ucy5qcyIpOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwoKICAgIGNvbnNvbGUuZGVidWcoItCj0YHRgtCw0L3QvtCy0LjQu9C4IFVJS2l0Iik7Cn0KCmZ1bmN0aW9uINC/0YDQvtCy0LXRgNC40YLRjFVJS2l0KCkKewogICAgdmFyINC+0LHQuyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCjQvtCx0LspOwogICAg0L7QsdC7LmlubmVySFRNTCA9CmAKPGRpdiBjbGFzcz0idWstcGFkZGluZy1zbWFsbCI+CiAgICA8cCB1ay1tYXJnaW4+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1kZWZhdWx0Ij5CdXR0b248L2J1dHRvbj4KICAgIDwvcD4KICAgIDxhIGhyZWY9IiIgY2xhc3M9InVrLWljb24tYnV0dG9uIHVrLW1hcmdpbi1zbWFsbC1yaWdodCIgdWstaWNvbj0idHdpdHRlciI+PC9hPgogICAgPGEgaHJlZj0iIiBjbGFzcz0idWstaWNvbi1idXR0b24gIHVrLW1hcmdpbi1zbWFsbC1yaWdodCIgdWstaWNvbj0iZmFjZWJvb2siPjwvYT4KICAgIDxhIGhyZWY9IiIgY2xhc3M9InVrLWljb24tYnV0dG9uIiB1ay1pY29uPSJnb29nbGUtcGx1cyI+PC9hPgo8L2Rpdj4KYDsKfQoK0LzRg9GA0L7QvC7QvtCx0YvRh9C90YvQudCf0YPRgdC6LtC/0L7QtNC/0LjRgdCw0YLRjNCc0L3QvtCz0L4oWwogICAgZnVuY3Rpb24oKXsKICAgICAgICBzZXRUaW1lb3V0KNGD0YHRgtCw0L3QvtCy0LjRgtGMVUlLaXQsIDEwMDApOwogICAgICAgIHNldFRpbWVvdXQo0L/RgNC+0LLQtdGA0LjRgtGMVUlLaXQsIDIwMDApOyAgCiAgICB9LApdKTsKCtGD0LLQtdC00L7QvNC40YLRjNCe0LHQntCx0YvRh9C90L7QvNCf0YPRgdC60LUoKTs=", +{} +], + ]; Object.defineProperty(murom, "modules", {