Interactive TutorialsRoshan Gehlot2026-01-05T05:34:32+00:00
PGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0iVVRGLTgiIC8+CiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIG1heGltdW0tc2NhbGU9MS4wLCB1c2VyLXNjYWxhYmxlPW5vIiAvPgoKPHRpdGxlPkludGVyYWN0aXZlIFR1dG9yaWFscyBQbGF0Zm9ybSAtIExlYXJuICYgQ3JlYXRlIFRvZ2V0aGVyPC90aXRsZT4KPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkNyZWF0ZSBhbmQgc2hhcmUgaW50ZXJhY3RpdmUgdHV0b3JpYWxzIHdpdGggc3R1ZGVudHMgYW5kIHRlYW1zLiBMZWFybiB0b2dldGhlciBpbiByZWFsLXRpbWUgd2l0aCBxdWl6emVzLCBwcm9ibGVtLXNvbHZpbmcsIGFuZCBjb2xsYWJvcmF0aXZlIGxlc3NvbnMuIiAvPgo8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iaW50ZXJhY3RpdmUgdHV0b3JpYWxzLCBvbmxpbmUgbGVhcm5pbmcsIGNvbGxhYm9yYXRpdmUgbGVzc29ucywgdHV0b3JpYWwgYnVpbGRlciwgZWR1Y2F0aW9uIHBsYXRmb3JtLCBsaXZlIGxlYXJuaW5nLCBjcmVhdGUgdHV0b3JpYWxzIiAvPgo8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IkxhdW5jaEtpdCIgLz4KICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9ImluZGV4LCBmb2xsb3csIG1heC1zbmlwcGV0Oi0xLCBtYXgtaW1hZ2UtcHJldmlldzpsYXJnZSwgbWF4LXZpZGVvLXByZXZpZXc6LTEiIC8+CiAgPG1ldGEgbmFtZT0ibGFuZ3VhZ2UiIGNvbnRlbnQ9IkVuZ2xpc2giIC8+CiAgPG1ldGEgbmFtZT0iZGlzdHJpYnV0aW9uIiBjb250ZW50PSJnbG9iYWwiIC8+CiAgCiAgPG1ldGEgbmFtZT0icmF0aW5nIiBjb250ZW50PSJHZW5lcmFsIiAvPgogIDxtZXRhIG5hbWU9InJldmlzaXQtYWZ0ZXIiIGNvbnRlbnQ9IjcgZGF5cyIgLz4KPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiNmZmZmZmYiIC8+CjxtZXRhIG5hbWU9ImFwcGxpY2F0aW9uLW5hbWUiIGNvbnRlbnQ9IkludGVyYWN0aXZlIFR1dG9yaWFscyBQbGF0Zm9ybSIgLz4KCjwhLS0gQ2Fub25pY2FsIC0tPgo8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9leGFtcGxlLmNvbS9pbnRlcmFjdGl2ZS1nYW1lcy8iIC8+CgogIDwhLS0gRmF2aWNvbnMgLS0+CiAgPGxpbmsgcmVsPSJpY29uIiBocmVmPSIvZmF2aWNvbi5pY28iIC8+CiAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTgweDE4MCIgaHJlZj0iL2FwcGxlLXRvdWNoLWljb24ucG5nIiAvPgogIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iMzJ4MzIiIGhyZWY9Ii9mYXZpY29uLTMyeDMyLnBuZyIgLz4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgc2l6ZXM9IjE2eDE2IiBocmVmPSIvZmF2aWNvbi0xNngxNi5wbmciIC8+Cgo8IS0tIE9wZW4gR3JhcGggLyBGYWNlYm9vayAtLT4KPG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9IndlYnNpdGUiIC8+CjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZXhhbXBsZS5jb20vaW50ZXJhY3RpdmUtZ2FtZXMvIiAvPgo8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkludGVyYWN0aXZlIFR1dG9yaWFscyBQbGF0Zm9ybSDigJQgTGVhcm4gJiBDcmVhdGUgVG9nZXRoZXIiIC8+CjxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iSW50ZXJhY3RpdmUgdHV0b3JpYWxzIGZvciBldmVyeW9uZS4gQ3JlYXRlLCB0ZWFjaCwgYW5kIHNoYXJlIGVuZ2FnaW5nIGxlYXJuaW5nIGV4cGVyaWVuY2VzIHdpdGggc3R1ZGVudHMgZnJvbSBhbnl3aGVyZS4iIC8+CjxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDMvbGF1bmNoLXN0dWRpby5wbmciIC8+CjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkdhbWVab25lIFBybyIgLz4KPG1ldGEgcHJvcGVydHk9Im9nOmxvY2FsZSIgY29udGVudD0iZW5fVVMiIC8+Cgo8IS0tIFR3aXR0ZXIgQ2FyZHMgLS0+CjxtZXRhIG5hbWU9InR3aXR0ZXI6Y2FyZCIgY29udGVudD0ic3VtbWFyeV9sYXJnZV9pbWFnZSIgLz4KPG1ldGEgbmFtZT0idHdpdHRlcjp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZXhhbXBsZS5jb20vaW50ZXJhY3RpdmUtZ2FtZXMvIiAvPgo8bWV0YSBuYW1lPSJ0d2l0dGVyOnRpdGxlIiBjb250ZW50PSJJbnRlcmFjdGl2ZSBUdXRvcmlhbHMgUGxhdGZvcm0g4oCUIExlYXJuICYgQ3JlYXRlIFRvZ2V0aGVyIiAvPgo8bWV0YSBuYW1lPSJ0d2l0dGVyOmRlc2NyaXB0aW9uIiBjb250ZW50PSJJbnRlcmFjdGl2ZSB0dXRvcmlhbHMgZm9yIGNyZWF0aW5nLCB0ZWFjaGluZywgYW5kIHNoYXJpbmcgZWR1Y2F0aW9uYWwgZXhwZXJpZW5jZXMuIiAvPgo8bWV0YSBuYW1lPSJ0d2l0dGVyOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMy9sYXVuY2gtc3R1ZGlvLnBuZyIgLz4KPG1ldGEgbmFtZT0idHdpdHRlcjpjcmVhdG9yIiBjb250ZW50PSJAdGVjaHN1bW1pdCIgLz4KCjwhLS0gSW5zdGFncmFtIC0tPgo8bWV0YSBwcm9wZXJ0eT0ib2c6c2VlX2Fsc28iIGNvbnRlbnQ9Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vd3JpdGVjcmVhbWFpLyIgLz4KPG1ldGEgbmFtZT0iaW5zdGFncmFtOnNpdGUiIGNvbnRlbnQ9IkB3cml0ZWNyZWFtYWkiIC8+CjxtZXRhIG5hbWU9Imluc3RhZ3JhbTppbWFnZSIgY29udGVudD0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDMvY29kZS1hc3Npc3RhbnQucG5nIiAvPgoKICA8IS0tIEFkZGl0aW9uYWwgU0VPIE1ldGEgVGFncyAtLT4KICA8bWV0YSBuYW1lPSJnZW8ucmVnaW9uIiBjb250ZW50PSJVUyIgLz4KICA8bWV0YSBuYW1lPSJnZW8ucGxhY2VuYW1lIiBjb250ZW50PSJOZXcgWW9yaywgVVNBIiAvPgogIDxtZXRhIG5hbWU9Imdlby5wb3NpdGlvbiIgY29udGVudD0iNDAuNzEyODstNzQuMDA2MCIgLz4KICA8bWV0YSBuYW1lPSJJQ0JNIiBjb250ZW50PSI0MC43MTI4LCAtNzQuMDA2MCIgLz4KICA8bWV0YSBuYW1lPSJtb2JpbGUtd2ViLWFwcC1jYXBhYmxlIiBjb250ZW50PSJ5ZXMiIC8+CiAgPG1ldGEgbmFtZT0iSGFuZGhlbGRGcmllbmRseSIgY29udGVudD0idHJ1ZSIgLz4KICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiIC8+Cgo8IS0tIFNjaGVtYSBNYXJrdXAgKEpTT04tTEQpIC0tPgo8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2xkK2pzb24iPgp7CiAgIkBjb250ZXh0IjogImh0dHBzOi8vc2NoZW1hLm9yZyIsCiAgIkB0eXBlIjogIlNvZnR3YXJlQXBwbGljYXRpb24iLAogICJuYW1lIjogIkdhbWVab25lIFBybyAtIEludGVyYWN0aXZlIFR1dG9yaWFscyBQbGF0Zm9ybSIsCiAgInVybCI6ICJodHRwczovL2V4YW1wbGUuY29tL2ludGVyYWN0aXZlLWdhbWVzLyIsCiAgImRlc2NyaXB0aW9uIjogIkxlYXJuIGFuZCBjcmVhdGUgaW50ZXJhY3RpdmUgdHV0b3JpYWxzIGluIHJlYWwtdGltZS4gRWR1Y2F0aW9uYWwgY29udGVudCwgY3VzdG9taXphYmxlIHRlbXBsYXRlcywgYW5kIHBvd2VyZnVsIHR1dG9yaWFsIGNyZWF0aW9uIHRvb2xzIGZvciBlZmZlY3RpdmUgbGVhcm5pbmcuIiwKICAiYXBwbGljYXRpb25DYXRlZ29yeSI6ICJCdXNpbmVzc0FwcGxpY2F0aW9uIiwKICAib3BlcmF0aW5nU3lzdGVtIjogIkFsbCIsCiAgIm9mZmVycyI6IHsKICAgICJAdHlwZSI6ICJPZmZlciIsCiAgICAicHJpY2UiOiAiMC4wMCIsCiAgICAicHJpY2VDdXJyZW5jeSI6ICJVU0QiCiAgfSwKICAicHVibGlzaGVyIjogewogICAgIkB0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibmFtZSI6ICJHYW1lWm9uZSBQcm8iLAogICAgInVybCI6ICJodHRwczovL2V4YW1wbGUuY29tLyIKICB9LAogICJhZ2dyZWdhdGVSYXRpbmciOiB7CiAgICAiQHR5cGUiOiAiQWdncmVnYXRlUmF0aW5nIiwKICAgICJyYXRpbmdWYWx1ZSI6ICI0LjkiLCAKICAgICJyZXZpZXdDb3VudCI6ICI1MjAxIgogIH0KfQo8L3NjcmlwdD4KCiAgPCEtLSBGb250cyBhbmQgQ1NTIC0tPgogIDwhLS0gPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIiAvPgogIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4gLz4KICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PU91dGZpdDp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZmYW1pbHk9U3BhY2UrR3JvdGVzazp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCIgLz4KICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ZvbnQtYXdlc29tZS82LjAuMC9jc3MvYWxsLm1pbi5jc3MiIC8+IC0tPgogICAgPHNjcmlwdCB0eXBlPSJpbXBvcnRtYXAiPgogICAgICB7CiAgICAgICAgImltcG9ydHMiOiB7CiAgICAgICAgICAicmVhY3QiOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3RAMTguMi4wIiwKICAgICAgICAgICJyZWFjdC1kb20iOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3QtZG9tQDE4LjIuMCIsCiAgICAgICAgICAicmVhY3QtZG9tLyI6ICJodHRwczovL2VzbS5zaC9yZWFjdC1kb21AMTguMi4wLyIsCiAgICAgICAgICAiQGNvZGVzYW5kYm94L3NhbmRwYWNrLXJlYWN0IjogImh0dHBzOi8vZXNtLnNoL0Bjb2Rlc2FuZGJveC9zYW5kcGFjay1yZWFjdEAyLjguMD9kZXBzPXJlYWN0QDE4LjIuMCZkZXBzPXJlYWN0LWRvbUAxOC4yLjAiCiAgICAgICAgfQogICAgICB9CiAgICA8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2tpdC5mb250YXdlc29tZS5jb20vYmMwODE3OTJkNC5qcyIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzdHlsZT4KOnJvb3QgewogICAgLS1wcmltYXJ5LWNvbG9yOiAjMmQyZDJkOwogICAgLS1hY2NlbnQtY29sb3I6ICM0YTkwZTI7CiAgICAtLWJsdWUtY29sb3I6ICM0YTkwZTI7CiAgICAKICAgIC8qIERhcmsgdGhlbWUgY29sb3JzIChkZWZhdWx0IGFuZCBvbmx5IHRoZW1lKSAqLwogICAgLS1iZy1jb2xvcjogIzAwMDAwMDsKICAgIC0tc3VyZmFjZS1jb2xvcjogIzJkMmQyZDsKICAgIC0tdGV4dC1jb2xvcjogI2UwZTBlMDsKICAgIC0tYm9yZGVyLWNvbG9yOiAjNDA0MDQwOwogICAgLS1pbnB1dC1iZzogIzJkMmQyZDsKICAgIC0taW5wdXQtYm9yZGVyOiAjNDA0MDQwOwogICAgLS1waWxsLWJnOiAjMzMzMzMzOwogICAgLS1idXR0b24tYmc6ICM0MDQwNDA7CiAgICAtLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgLS1oZWFkZXItYm9yZGVyOiAjNDA0MDQwOwogICAgLS1mb290ZXItYmc6ICMyZDJkMmQ7CiAgICAtLWNhcmQtYmc6ICMzMzMzMzM7CiAgICAtLWJnLXNlY29uZGFyeTogIzQ0NDQ0NDsKICAgIC0tdGV4dC1zZWNvbmRhcnk6ICNjY2NjY2M7CiAgICAtLWJsdWUtaG92ZXI6ICMzYTdiYzg7Cn0KCi8qIFNjcm9sbGJhciB3aWR0aCAqLwo6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICB3aWR0aDogMTJweDsKfQoKLyogVHJhY2sgKGJhY2tncm91bmQpICovCjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogIGJhY2tncm91bmQ6ICMxYTFhMWE7IC8qIGRhcmsgYmFja2dyb3VuZCAqLwp9CgovKiBIYW5kbGUgKHRodW1iKSAqLwo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICBiYWNrZ3JvdW5kOiAjNTU1OyAvKiBkYXJrIGdyYXkgKi8KICBib3JkZXItcmFkaXVzOiA2cHg7Cn0KCi8qIEhhbmRsZSBvbiBob3ZlciAqLwo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICBiYWNrZ3JvdW5kOiAjNzc3Owp9Ci8qIEJhc2UgY2hhdCBidWJibGUgc3R5bGVzIGZvciBkYXJrIHRoZW1lICovCi5jaGF0LWJ1YmJsZS5haSB7CiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzNhM2EzYTsgLyogTW9yZSBzcGVjaWZpYyB0aGFuIC0tc3VyZmFjZS1jb2xvciAqLwogICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgYm9yZGVyOiAxcHggc29saWQgIzUwNTA1MDsgLyogTW9yZSBzcGVjaWZpYyB0aGFuIC0tYm9yZGVyLWNvbG9yICovCiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi5jaGF0LWJ1YmJsZS5haTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogLThweDsKICAgIHdpZHRoOiA4cHg7CiAgICBoZWlnaHQ6IDhweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzYTNhM2E7IC8qIE1hdGNoZXMgdGhlIGJ1YmJsZSBiYWNrZ3JvdW5kICovCiAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTAwJSAwLCAwJSAxMDAlLCAxMDAlIDEwMCUpOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7Cn0KCi5naXRodWItc3RhcnMsCi5naXRodWItbGFiZWwgewogICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwp9CgouYmFkZ2UtdG9nZXRoZXIgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIG9wYWNpdHk6IDAuODsKfQoKKiB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjsKfQoKLyogV29yZFByZXNzIFRoZW1lIENvbXBhdGliaWxpdHkgLSBGdWxsIFBhZ2UgQmFja2dyb3VuZCAqLwpib2R5LCBodG1sIHsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIG92ZXJmbG93LXg6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50Owp9CgovKiBXb3JkUHJlc3MgY29udGFpbmVyIGFkanVzdG1lbnRzIC0gRnVsbCB3aWR0aCAqLwouY29udGFpbmVyLCAuY29udGFpbmVyLWZsdWlkLCAud3JhcHBlciwgLmNvbnRlbnQsIC5tYWluLCAKLnNpdGUtY29udGVudCwgLmVudHJ5LWNvbnRlbnQsIC5wYWdlLWNvbnRlbnQgewogICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7Cn0KCi8qIEVuc3VyZSBvdXIgY29udGVudCB3b3JrcyB3aXRoaW4gV29yZFByZXNzICovCiNsYW5kaW5nU2VjdGlvbiB7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwOwogICAgY29sb3I6ICNlMGUwZTA7Cn0KCi8qIEZpeCBoZXJvIHNlY3Rpb24gY29udGVudCBjZW50ZXJpbmcgLSBrZWVwIGNvbnRlbnQgY2VudGVyZWQgYnV0IGJhY2tncm91bmQgZnVsbC13aWR0aCAqLwouaGVyby1zZWN0aW9uIHsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKfQoKLmhlcm8tY29udGVudCwgLmhlcm8tdGV4dCB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogODAwcHggIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwIDIwcHggIWltcG9ydGFudDsKfQoKLyogRml4IHN0YXIgbG9nbyBwb3NpdGlvbmluZyAtIGtlZXAgaXQgY2VudGVyZWQgKi8KLmhlcm8tc2VjdGlvbiBoMSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgZ2FwOiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5oZXJvLXNlY3Rpb24gcCB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7Cn0KCi8qIEZpeCB0aGUgYWN0dWFsIGlucHV0IGNvbnRhaW5lciBjbGFzc2VzIGZyb20gSFRNTCAqLwouaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50Owp9CgouaW5wdXQtaW5uZXItY29udGFpbmVyIHsKICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogNTAlICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50Owp9CgouaW5wdXQtaW5uZXItY29udGFpbmVyLnZlcnRpY2FsIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkgIWltcG9ydGFudDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSAhaW1wb3J0YW50OwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmFkaXVzOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLmlucHV0LWNvbnRyb2xzLXJvdyB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpICFpbXBvcnRhbnQ7CiAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmFkaXVzOiAwIDAgMTJweCAxMnB4ICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogNTBweCAhaW1wb3J0YW50OwogICAgZ2FwOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiA2cHggMTBweCAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50Owp9CgovKiBGaXggcHJvbXB0IGlucHV0IHN0eWxpbmcgdG8gbWF0Y2ggb3JpZ2luYWwgKi8KLnByb21wdC1pbnB1dCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMTJweCAxMnB4IDAgMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMXJlbSAxLjVyZW0gIWltcG9ydGFudDsKICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgIHJlc2l6ZTogbm9uZSAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogNjBweCAhaW1wb3J0YW50OwogICAgbWF4LWhlaWdodDogMjAwcHggIWltcG9ydGFudDsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KCgoKLyogRml4IHN1Z2dlc3RlZCBhcHBzIHNlY3Rpb24gLSBjZW50ZXJlZCB3aXRoIHByb3BlciB3aWR0aCAqLwouc3VnZ2VzdGVkLWFwcHMgewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogICAgZ2FwOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi5zdWdnZXN0ZWQtYXBwIHsKICAgIG1hcmdpbjogNXB4ICFpbXBvcnRhbnQ7CiAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50Owp9CgovKiBGaXggZmVhdHVyZXMgZ3JpZCAtIDMgY2FyZHMgaW4gYSByb3csIGNlbnRlcmVkICovCi5mZWF0dXJlcy1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDI4MHB4KSAhaW1wb3J0YW50OwogICAgZ2FwOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMjBweCAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKfQoKLmZlYXR1cmUtY2FyZCB7CiAgICB3aWR0aDogMjgwcHggIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMjgwcHggIWltcG9ydGFudDsKfQoKLyogRW5zdXJlIGFsbCBzZWN0aW9ucyBhcmUgcHJvcGVybHkgY2VudGVyZWQgKi8KLmZlYXR1cmVzLXNlY3Rpb24sIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwgLnBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKLmRlbW8tc2VjdGlvbiwgLmNhcGFiaWxpdGllcy1zZWN0aW9uLCAudGVzdGltb25pYWxzLXNlY3Rpb24sIC5jdGEtc2VjdGlvbiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTIwMHB4ICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgovKiBXb3JkUHJlc3MgcGFnZS1zcGVjaWZpYyBzdHlsaW5nIC0gRnVsbCBiYWNrZ3JvdW5kIGNvdmVyYWdlICovCmJvZHkucGFnZS1pZC01OTM2MyB7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtaW4taGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50Owp9Cgpib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIsCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IC00MHB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tYm90dG9tOiAtMTUwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiA0MHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWJvdHRvbTogMTUwcHggIWltcG9ydGFudDsKICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAxOTBweCkgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzLXNwZWNpZmljIGNlbnRlcmluZyBmb3IgSG93IEl0IFdvcmtzIHNlY3Rpb24gKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiB7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTAwMHB4ICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSBjZW50ZXIgb25seSB0aGUgc3VidGl0bGUgdGV4dCAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKfQoKLyogQ2VudGVyIEFMTCBzZWN0aW9uIHN1YnRpdGxlcyBpbiBXb3JkUHJlc3MgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5oZXJvLXN1YnRpdGxlLApib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXN1YnRpdGxlLApib2R5LnBhZ2UtaWQtNTkzNjMgLmFjdGlvbi1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5tb3JlLXN1YnRpdGxlLApib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLXN1YnRpdGxlLApib2R5LnBhZ2UtaWQtNTkzNjMgLmN0YS1zdWJ0aXRsZSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLyogRW5zdXJlIFdvcmRQcmVzcyBjb250YWluZXJzIGRvbid0IGFkZCB3aGl0ZSBzcGFjZSAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciwKYm9keS5wYWdlLWlkLTU5MzYzIC53cmFwcGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRlbnQsCmJvZHkucGFnZS1pZC01OTM2MyAubWFpbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWNvbnRlbnQsCmJvZHkucGFnZS1pZC01OTM2MyAuZW50cnktY29udGVudCwKYm9keS5wYWdlLWlkLTU5MzYzIC5wYWdlLWNvbnRlbnQgewogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBleGNlc3NpdmUgV29yZFByZXNzIG92ZXJyaWRlcyAtIGtlZXAgbWluaW1hbCAqLwoKLyogV29yZFByZXNzIGNvbnRhaW5lciBjb21wYXRpYmlsaXR5ICovCmJvZHkucGFnZS1pZC01OTM2MyAuY29udGFpbmVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLndyYXBwZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuY29udGVudCwKYm9keS5wYWdlLWlkLTU5MzYzIC5tYWluLApib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogbm9uZTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi8qIFJlc3BvbnNpdmUgRGVzaWduIEltcHJvdmVtZW50cyAqLwovKiBGb3Igc2NyZWVucyA5MDBweCBhbmQgYmVsb3cgLSBTVEFDSyBWRVJUSUNBTExZICovCkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkgewogICAgLnN0ZXBzLWNvbnRhaW5lciB7IAogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgCiAgICAgICAgZ2FwOiAxLjVyZW0gIWltcG9ydGFudDsgCiAgICAgICAgcGFkZGluZzogMCAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuc3RlcC1hcnJvdyB7IAogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKSAhaW1wb3J0YW50OyAKICAgICAgICBmb250LXNpemU6IDEuMnJlbSAhaW1wb3J0YW50OwogICAgfQogICAgLnN0ZXAtY2FyZCB7IAogICAgICAgIG1heC13aWR0aDogOTAlICFpbXBvcnRhbnQ7IAogICAgICAgIHdpZHRoOiA5MCUgIWltcG9ydGFudDsgCiAgICAgICAgbWluLXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMS41cmVtIDFyZW0gIWltcG9ydGFudDsKICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgfQogICAgLnN0ZXAtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuc3RlcC1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICBsaW5lLWhlaWdodDogMS40ICFpbXBvcnRhbnQ7CiAgICB9Cn0KCi8qIE1vYmlsZSByZXNwb25zaXZlIGZpeGVzICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgLmFwcC1jb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgIH0KICAgIAogICAgLyogTW9iaWxlIGZvb3RlciBiYWNrZ3JvdW5kIGZpeCAtIGluY3JlYXNlZCBleHRlbnNpb24gKi8KICAgIGJvZHkgewogICAgICAgIG1hcmdpbi10b3A6IDQwcHg7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDQwMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDMwMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDQwMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDMwMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNDAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMzAwcHggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogRXh0ZW5kIGJhY2tncm91bmQgcGF0dGVybiBkb3duIHNpZ25pZmljYW50bHkgKi8KICAgICNsYW5kaW5nU2VjdGlvbjo6YmVmb3JlIHsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDMwMHB4KSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBNb2JpbGUgaGVybyBzZWN0aW9uIGltcHJvdmVtZW50cyAqLwogICAgLmhlcm8tc2VjdGlvbiB7CiAgICAgICAgcGFkZGluZzogMjBweCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaW5zaWRlLWhlcm8tc2VjdGlvbiB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgICAgIGdhcDogMTVweCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLWljb24gaW1nIHsKICAgICAgICB3aWR0aDogMi41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgaGVpZ2h0OiAyLjVyZW0gIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmhlcm8tdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMS44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMiAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVyby1zdWJ0aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogMTBweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAxMHB4IDAgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLnBvd2VyZWQtcGlsbCB7CiAgICAgICAgcGFkZGluZzogOHB4IDE1cHggIWltcG9ydGFudDsKICAgICAgICBmb250LXNpemU6IDAuODVyZW0gIWltcG9ydGFudDsKICAgICAgICBtYXJnaW46IDEwcHggYXV0byAhaW1wb3J0YW50OwogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBNb2JpbGUgaW5wdXQgc2VjdGlvbiBmaXhlcyAqLwogICAgLmlucHV0LXNlY3Rpb24gewogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgMTVweCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMTBweCA1cHggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmlucHV0LWlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmlucHV0LWNvbnRhaW5lciwgLnByb21wdC1pbnB1dCwgLmlucHV0LWdyb3VwIHsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlIGhlcm8gY29udGVudCAqLwogICAgLmhlcm8tY29udGVudCwgLmhlcm8tdGV4dCB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIE1vYmlsZSBmZWF0dXJlcyBncmlkIC0gc2luZ2xlIGNvbHVtbiAqLwogICAgLmZlYXR1cmVzLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuZmVhdHVyZS1jYXJkIHsKICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIG1heC13aWR0aDogMzUwcHggIWltcG9ydGFudDsKICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBNb2JpbGUgaW5wdXQgY29udGFpbmVycyAqLwogICAgLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaW5wdXQtaW5uZXItY29udGFpbmVyIHsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwIDEwcHggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLnByb21wdC1pbnB1dCB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIE1vYmlsZSBzdWdnZXN0ZWQgYXBwcyAqLwogICAgLnN1Z2dlc3RlZC1hcHBzIHsKICAgICAgICBwYWRkaW5nOiAwIDIwcHggIWltcG9ydGFudDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBNb2JpbGUtc3BlY2lmaWMgYmFja2dyb3VuZCBoZWlnaHQgcmVkdWN0aW9uICovCiAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIsCiAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICBtYXJnaW4tdG9wOiAtMjBweCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctdG9wOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDE3MHB4KSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBGdXJ0aGVyIHJlZHVjdGlvbiBmb3IgdmVyeSBzbWFsbCBzY3JlZW5zICovCiAgICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0xMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAxNjBweCkgIWltcG9ydGFudDsKICAgICAgICB9CiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkgewogICAgLyogRXh0cmEgc21hbGwgc2NyZWVucyAtIGltcHJvdmVkIGhlcm8gcmVzcG9uc2l2ZW5lc3MgKi8KICAgIC5oZXJvLXNlY3Rpb24gaDEgewogICAgICAgIGZvbnQtc2l6ZTogMS42cmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLXNlY3Rpb24gcCB7CiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjEgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICBtYXJnaW46IDhweCAwICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiA4cHggMCAhaW1wb3J0YW50OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjMgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmhlcm8taWNvbiBpbWcgewogICAgICAgIHdpZHRoOiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgaGVpZ2h0OiAycmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5wb3dlcmVkLXBpbGwgewogICAgICAgIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogNnB4IDEycHggIWltcG9ydGFudDsKICAgICAgICBtYXJnaW46IDhweCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQgIWltcG9ydGFudDsKICAgICAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIEV4dHJhIHNtYWxsIHNjcmVlbnMgLSBpbXByb3ZlZCB0ZXN0aW1vbmlhbCByZXNwb25zaXZlbmVzcyAqLwogICAgLnRlc3RpbW9uaWFsLWNvbnRhaW5lciB7CiAgICAgICAgbWluLWhlaWdodDogMzAwcHg7CiAgICAgICAgcGFkZGluZzogMCAwLjVyZW07CiAgICAgICAgbWFyZ2luOiAwIGF1dG8gMS41cmVtOwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtbmF2IHsKICAgICAgICB3aWR0aDogMzVweDsKICAgICAgICBoZWlnaHQ6IDM1cHg7CiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1uYXYucHJldi1idG4gewogICAgICAgIGxlZnQ6IDVweDsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLW5hdi5uZXh0LWJ0biB7CiAgICAgICAgcmlnaHQ6IDVweDsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWNhcmQgewogICAgICAgIHBhZGRpbmc6IDFyZW07CiAgICAgICAgbWFyZ2luOiAwIDVweDsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWF2YXRhciB7CiAgICAgICAgd2lkdGg6IDM1cHg7CiAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtcXVvdGUgewogICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWF1dGhvci1uYW1lIHsKICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWF1dGhvci1jb21wYW55IHsKICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWRvdHMgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgICAgICBnYXA6IDAuNXJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWRvdHMgLmRvdCB7CiAgICAgICAgd2lkdGg6IDhweDsKICAgICAgICBoZWlnaHQ6IDhweDsKICAgIH0KICAgIAogICAgLmZlYXR1cmVzLWdyaWQsIC5wb3NzaWJpbGl0aWVzLWdyaWQsIC5jYXBhYmlsaXRpZXMtZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsKICAgICAgICBnYXA6IDFyZW0gIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogQWRqdXN0IHRvcCBtYXJnaW4gZm9yIHZlcnkgc21hbGwgc2NyZWVucyAtIGluY3JlYXNlZCBleHRlbnNpb24gKi8KICAgIGJvZHkgewogICAgICAgIG1hcmdpbi10b3A6IDUwcHg7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDAwcHggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogRXh0ZW5kIGJhY2tncm91bmQgcGF0dGVybiBkb3duIGZ1cnRoZXIgb24gc21hbGwgc2NyZWVucyAqLwogICAgI2xhbmRpbmdTZWN0aW9uOjpiZWZvcmUgewogICAgICAgIGhlaWdodDogY2FsYygxMDAlICsgNjAwcHgpICFpbXBvcnRhbnQ7CiAgICB9Cn0KCmJvZHkgewogICAgYmFja2dyb3VuZDogIzAwMDAwMDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgbWFyZ2luOiAwOwogICAgZm9udC1mYW1pbHk6ICdTZWdvZSBVSScsIEFyaWFsLCBzYW5zLXNlcmlmOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZSwgY29sb3IgMC4zcyBlYXNlOwogICAgb3ZlcmZsb3cteDogaGlkZGVuOwp9CgovKiBIaWRlIG1haW4gcGFnZSBzY3JvbGxiYXIgd2hlbiBhcHAgaXMgYWN0aXZlICovCmJvZHkuYXBwLWFjdGl2ZSB7CiAgICAvKiBvdmVyZmxvdzogaGlkZGVuOwogICAgaGVpZ2h0OiAxMDB2aDsgKi8KICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwp9CgovKiBNb2JpbGUgYm9keSBoYW5kbGluZyAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAgIGJvZHkuYXBwLWFjdGl2ZSB7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgfQp9CgovKiBEZXNrdG9wIHNjcmVlbnMgYWJvdmUgNzY4cHggLSByZW1vdmUgd2hpdGUgc3BhY2VzICovCkBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkgewogICAgLmhlYWRlciB7CiAgICAgICAgd2lkdGg6IDEwMHZ3OwogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTUwdncgKyA1MCUpOwogICAgICAgIHBhZGRpbmc6IDFyZW0gMDsKICAgIH0KICAgIAogICAgLmNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgfQogICAgCiAgICAuaGVhZGVyLWZsZXggewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgIH0KfQoKLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwp9CgouaGVhZGVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC45KTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTsKICAgIHBhZGRpbmc6IDFyZW0gMDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICB6LWluZGV4OiAxMDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLCBvcGFjaXR5IDAuM3MgZWFzZSwgdHJhbnNmb3JtIDAuM3MgZWFzZTsKICAgIGRpc3BsYXk6IG5vbmU7IC8qIEhpZGRlbiBieSBkZWZhdWx0IG9uIGxhbmRpbmcgcGFnZSAqLwogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICBib3gtc2hhZG93OiAwIDJweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgIHdpZHRoOiAxMDAlOwogICAgbWFyZ2luOiAwOwp9CgovKiBTaG93IGhlYWRlciBvbmx5IHdoZW4gY29udmVyc2F0aW9uIGhhcyBzdGFydGVkICovCmJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKfQoKLyogRnVsbC13aWR0aCBoZWFkZXIgZml4IG9ubHkgd2hlbiBhcHAgaXMgYWN0aXZlIChkdXJpbmcgZ2VuZXJhdGlvbikgLSBhYm92ZSAxMDI0cHggKi8KQG1lZGlhIChtaW4td2lkdGg6IDEwMjVweCkgewogICAgYm9keS5hcHAtYWN0aXZlIC5oZWFkZXIsCiAgICBib2R5LmFwcC1hY3RpdmUgI3dyYXBwZXIgLmhlYWRlciwKICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXdyYXBwZXIgLmhlYWRlciwKICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXBhZ2Utd3JhcHBlciAuaGVhZGVyLAogICAgYm9keS5hcHAtYWN0aXZlIC5mdXNpb24tcGFnZS13cmFwcGVyLXJvdyAuaGVhZGVyIHsKICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy10b3A6IGNhbGMoMXJlbSArIDUwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXRvcDogLTUwcHggIWltcG9ydGFudDsKICAgIH0KfQoKLmhlYWRlci1mbGV4IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5sb2dvLWdyb3VwIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxMnB4OwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7Cn0KCi5sb2dvLWdyb3VwOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjE1KTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7Cn0KCi5sb2dvLWljb24gewogICAgZm9udC1zaXplOiAxLjVyZW07CiAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIHRleHQtc2hhZG93OiAwIDAgMTBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7CiAgICBsZXR0ZXItc3BhY2luZzogLTFweDsKfQoKLmxvZ28tdGV4dCB7CiAgICBmb250LXNpemU6IDEuNXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIHRleHQtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpOwp9CgoubG9nby10ZXh0IC5ib2xkIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgouaGVhZGVyLXJpZ2h0IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxMnB4OwogICAgcGFkZGluZzogNnB4IDEycHg7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAyMHB4Owp9CgouZ2l0aHViLWJ0biB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogNXB4OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgZm9udC1zaXplOiAwLjk1cmVtOwp9CgouZG93bmxvYWQtYnRuIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM0YTkwZTIsICMzNTdhYmQpOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgY29sb3I6IHdoaXRlOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIG1pbi13aWR0aDogNDBweDsKICAgIGhlaWdodDogMzZweDsKICAgIHotaW5kZXg6IDk5OTk7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5kb3dubG9hZC1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzM1N2FiZCwgIzJhNmFhMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwp9CgouZG93bmxvYWQtYnRuOmFjdGl2ZSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7Cn0KCi5kZXBsb3ktbmV0bGlmeS1idG4gewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwYWQ5ZiwgIzAwZDRhYSk7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBjb2xvcjogd2hpdGU7CiAgICBmb250LXNpemU6IDFyZW07CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgbWluLXdpZHRoOiA0MHB4OwogICAgaGVpZ2h0OiAzNnB4OwogICAgei1pbmRleDogOTk5OTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGdhcDogNnB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5kZXBsb3ktbmV0bGlmeS1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwOTQ3ZiwgIzAwYjM5NCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMTczLCAxNTksIDAuMyk7Cn0KCi5kZXBsb3ktbmV0bGlmeS1idG46YWN0aXZlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKfQoKLyogU2V0IFRva2VuIGJ1dHRvbiBzdHlsZWQgdG8gbWF0Y2ggRGVwbG95IHRvIE5ldGxpZnkgKi8KLnNldC10b2tlbi1idG4gewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwYWQ5ZiwgIzAwZDRhYSk7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBjb2xvcjogd2hpdGU7CiAgICBmb250LXNpemU6IDFyZW07CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgbWluLXdpZHRoOiA0MHB4OwogICAgaGVpZ2h0OiAzNnB4OwogICAgei1pbmRleDogOTk5OTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGdhcDogNnB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5zZXQtdG9rZW4tYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk0N2YsICMwMGIzOTQpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDE3MywgMTU5LCAwLjMpOwp9Cgouc2V0LXRva2VuLWJ0bjphY3RpdmUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwp9CgouZG93bmxvYWQtaWNvbiB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgoucG93ZXJlZC1waWxsIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbjogMnJlbSBhdXRvOwogICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgIHBhZGRpbmc6IDhweCAyMHB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGNvbG9yIDAuM3MgZWFzZTsKICAgIC8qIE1lcmdlZCBkYXJrIHRoZW1lIHN0eWxlcyAqLwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwp9CgoubWFpbi1oZWFkaW5nIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMi43cmVtOwogICAgbWFyZ2luLWJvdHRvbTogMi41cmVtOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTsKfQoKLyogVHlwaW5nIGFuaW1hdGlvbiBzdHlsZXMgKi8KI2FuaW1hdGVkLXdvcmQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWluLXdpZHRoOiAxMjBweDsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCiNhbmltYXRlZC13b3JkOjphZnRlciB7CiAgICBjb250ZW50OiAnfCc7CiAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBhbmltYXRpb246IGJsaW5rIDFzIGluZmluaXRlOwogICAgbWFyZ2luLWxlZnQ6IDJweDsKfQoKQGtleWZyYW1lcyBibGluayB7CiAgICAwJSwgNTAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgNTElLCAxMDAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQp9CgpAa2V5ZnJhbWVzIHR5cGV3cml0ZXIgewogICAgZnJvbSB7CiAgICAgICAgd2lkdGg6IDA7CiAgICB9CiAgICB0byB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICB9Cn0KCi5tYWluLWhlYWRpbmcgLmJsdWUgewogICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwp9CgovKiBMYW5kaW5nIHBhZ2UgaW5wdXQgc3R5bGluZyAtIEV4dGVuZGVkIHRvcCBhbmQgYm90dG9tIGNvdmVyYWdlICovCiNsYW5kaW5nU2VjdGlvbiB7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjMwcHgpICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcGFkZGluZzogODBweCAwIDE1MHB4IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IC04MHB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tYm90dG9tOiAtMTUwcHggIWltcG9ydGFudDsKfQoKLyogQW5pbWF0ZWQgc3RhcnJ5IGJhY2tncm91bmQgKi8KI2xhbmRpbmdTZWN0aW9uOjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDEwMHB4KTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IAogICAgICAgIHJhZGlhbC1ncmFkaWVudCgycHggMnB4IGF0IDIwcHggMzBweCwgIzRhOTBlMiwgdHJhbnNwYXJlbnQpLAogICAgICAgIHJhZGlhbC1ncmFkaWVudCgycHggMnB4IGF0IDQwcHggNzBweCwgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuOCksIHRyYW5zcGFyZW50KSwKICAgICAgICByYWRpYWwtZ3JhZGllbnQoMXB4IDFweCBhdCA5MHB4IDQwcHgsICM2YjczZmYsIHRyYW5zcGFyZW50KSwKICAgICAgICByYWRpYWwtZ3JhZGllbnQoMXB4IDFweCBhdCAxMzBweCA4MHB4LCByZ2JhKDEwNywgMTE1LCAyNTUsIDAuNiksIHRyYW5zcGFyZW50KSwKICAgICAgICByYWRpYWwtZ3JhZGllbnQoMnB4IDJweCBhdCAxNjBweCAzMHB4LCAjNGE5MGUyLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0OwogICAgYmFja2dyb3VuZC1zaXplOiAyMDBweCAxMDBweDsKICAgIGFuaW1hdGlvbjogdHdpbmtsZSAzcyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7CiAgICB6LWluZGV4OiAwOwp9CgpAa2V5ZnJhbWVzIHR3aW5rbGUgewogICAgMCUgeyBvcGFjaXR5OiAwLjM7IH0KICAgIDEwMCUgeyBvcGFjaXR5OiAwLjg7IH0KfQoKLyogSGVybyBTZWN0aW9uICovCi5oZXJvLXNlY3Rpb24gewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgcGFkZGluZzogMHJlbSAwIDByZW07CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwp9Ci5pbnNpZGUtaGVyby1zZWN0aW9uewogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLmhlcm8taWNvbiB7CiAgICBmb250LXNpemU6IDNyZW07CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICBjb2xvcjogIzRhOTBlMjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGFuaW1hdGlvbjogZmxvYXQgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7Cn0KCi5oZXJvLWljb24gaW1nIHsKICAgIHdpZHRoOiA0cmVtOwogICAgaGVpZ2h0OiAyLjVyZW07CiAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCkBrZXlmcmFtZXMgZmxvYXQgewogICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsgfQogICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsgfQp9CgouaGVyby10aXRsZSB7CiAgICBmb250LXNpemU6IDMuNXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICB0ZXh0LXNoYWRvdzogMCAwIDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7Cn0KCi5oZXJvLXN1YnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi5oZXJvLWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICBtYXgtd2lkdGg6IDUwMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi8qIFVwZGF0ZSBpbnB1dCBzZWN0aW9uIGZvciBkYXJrIHRoZW1lICovCiNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgLyogTWVyZ2VkIHN0eWxlcyAqLwogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICAgIG1heC13aWR0aDogNzAwcHg7Cn0KCiNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtaW5uZXItY29udGFpbmVyLnZlcnRpY2FsIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgcGFkZGluZzogMDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwp9CgojbGFuZGluZ1NlY3Rpb24gLnByb21wdC1pbnB1dCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgYm9yZGVyLXJhZGl1czogMTJweCAxMnB4IDAgMDsKICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICByZXNpemU6IG5vbmU7CiAgICBtaW4taGVpZ2h0OiA2MHB4OwogICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICBvdXRsaW5lOiBub25lOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCiNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtY29udHJvbHMtcm93IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICBib3JkZXItdG9wOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMCAwIDEycHggMTJweDsKICAgIHdpZHRoOiAxMDAlOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIG1pbi1oZWlnaHQ6IDUwcHg7CiAgICBnYXA6IDEycHg7CiAgICAvKiBNZXJnZWQvdXBkYXRlZCBzdHlsZXMgKi8KICAgIHBhZGRpbmc6IDZweCAxMHB4OwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKfQoKI2xhbmRpbmdTZWN0aW9uIC5wcm9tcHQtaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7Cn0KCi5nZW5lcmF0ZS1jb2RlLWJ0biB7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNGE5MGUyLCAjNmI3M2ZmKSAhaW1wb3J0YW50OwogICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgbWluLXdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxNTBweCAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKSAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAhaW1wb3J0YW50OwogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5nZW5lcmF0ZS1jb2RlLWJ0bjpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCkgIWltcG9ydGFudDsKfQoKLyogRmVhdHVyZXMgR3JpZCAqLwouZmVhdHVyZXMtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyODBweCwgMWZyKSk7CiAgICBnYXA6IDJyZW07CiAgICBtYXJnaW46IDRyZW0gMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7Cn0KCi5mZWF0dXJlLWNhcmQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICBwYWRkaW5nOiAycmVtOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5mZWF0dXJlLWNhcmQ6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IC0xMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKSwgdHJhbnNwYXJlbnQpOwogICAgdHJhbnNpdGlvbjogbGVmdCAwLjVzIGVhc2U7Cn0KCi5mZWF0dXJlLWNhcmQ6aG92ZXI6OmJlZm9yZSB7CiAgICBsZWZ0OiAxMDAlOwp9CgouZmVhdHVyZS1jYXJkOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKfQoKLmZlYXR1cmUtaWNvbiB7CiAgICBmb250LXNpemU6IDIuNXJlbTsKICAgIGNvbG9yOiAjNGE5MGUyOwogICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLmZlYXR1cmUtaWNvbiBpbWcgewogICAgd2lkdGg6IDIuNXJlbTsKICAgIGhlaWdodDogMi41cmVtOwogICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgovKiBBZ2dyZXNzaXZlIFdvcmRQcmVzcyB3aGl0ZSBzcGFjZSByZW1vdmFsICovCmJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgaGVhZGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlci1mbGV4LApib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciB7CiAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOSkgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgcmVtb3ZlIGFueSBXb3JkUHJlc3MgY29udGFpbmVyIGNvbnN0cmFpbnRzICovCmJvZHkucGFnZS1pZC01OTM2MyAjbWFpbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5sYXlvdXQtYm94ZWQtbW9kZSAjbWFpbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5sYXlvdXQtd2lkZS1tb2RlICNtYWluLApib2R5LnBhZ2UtaWQtNTkzNjMgLmxheW91dC13aWRlLW1vZGUgI3dyYXBwZXIsCmJvZHkucGFnZS1pZC01OTM2MyAud3JhcHBlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LApib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCB7CiAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgYW55IFdvcmRQcmVzcyB0aGVtZSBwYWRkaW5nL21hcmdpbnMgKi8KYm9keS5wYWdlLWlkLTU5MzYzICogewogICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50Owp9CgovKiBUYXJnZXQgc3BlY2lmaWMgV29yZFByZXNzIHRoZW1lIGVsZW1lbnRzIGNhdXNpbmcgd2hpdGUgc3BhY2VzICovCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24taGVhZGVyLXdyYXBwZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLXNlY29uZGFyeS1oZWFkZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLW1haW4taGVhZGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmF2YWRhLWhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5oZWFkZXItd3JhcHBlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5tYWluLWhlYWRlciB7CiAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjkpICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBhbnkgV29yZFByZXNzIHRoZW1lIGNvbnRhaW5lciBwYWRkaW5nICovCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWNvbnRhaW5lciwKYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tcm93LApib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1jb2x1bW4sCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93LApib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLWNvbHVtbiB7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgaGVhZGVyIHRvIGJyZWFrIG91dCBvZiBhbnkgY29udGFpbmVyIGNvbnN0cmFpbnRzICovCmJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogICAgbGVmdDogMCAhaW1wb3J0YW50OwogICAgcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50Owp9Cgpib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlciAqLApib2R5LnBhZ2UtaWQtNTkzNjMgaGVhZGVyICogewogICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi8qIE92ZXJyaWRlIFdvcmRQcmVzcyBiYWNrZ3JvdW5kIGNvbG9yIGZvciBtYWluIGVsZW1lbnRzICovCiNtYWluLCAKLmxheW91dC1ib3hlZC1tb2RlICNtYWluLCAKLmxheW91dC1ib3hlZC1tb2RlLmF2YWRhLWZvb3Rlci1meC1zdGlja3kgLmFib3ZlLWZvb3Rlci13cmFwcGVyLCAKLmxheW91dC1ib3hlZC1tb2RlLmF2YWRhLWZvb3Rlci1meC1zdGlja3ktd2l0aC1wYXJhbGxheC1iZy1pbWFnZSAuYWJvdmUtZm9vdGVyLXdyYXBwZXIsIAoubGF5b3V0LXdpZGUtbW9kZSAjbWFpbiwgCi5sYXlvdXQtd2lkZS1tb2RlICN3cmFwcGVyLCAKYm9keSwgCmh0bWwsIApodG1sIGJvZHkuY3VzdG9tLWJhY2tncm91bmQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50Owp9CgovKiBGaXggV29yZFByZXNzIHRlbXBsYXRlIGVsZW1lbnRzIC0gcmVtb3ZlIHVud2FudGVkIGxpbmVzIGFuZCBiYWNrZ3JvdW5kcyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgKiB7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKfQoKLyogUmVtb3ZlIHdoaXRlIGxpbmUgYXQgdG9wIG9mIFdvcmRQcmVzcyBpbnRlcmZhY2UgKi8KYm9keS5wYWdlLWlkLTU5MzYzOjpiZWZvcmUsCmJvZHkucGFnZS1pZC01OTM2Mzo6YWZ0ZXIsCmJvZHkucGFnZS1pZC01OTM2MyAqOjpiZWZvcmUsCmJvZHkucGFnZS1pZC01OTM2MyAqOjphZnRlciB7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICBjb250ZW50OiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSB0b3AgYm9yZGVycyBhbmQgbGluZXMgZnJvbSBXb3JkUHJlc3MgZWxlbWVudHMgKi8KYm9keS5wYWdlLWlkLTU5MzYzIGJvZHksCmJvZHkucGFnZS1pZC01OTM2MyBodG1sLApib2R5LnBhZ2UtaWQtNTkzNjMgI3BhZ2UsCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLW1haW4sCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1mb290ZXIsCmJvZHkucGFnZS1pZC01OTM2MyAud3Atc2l0ZS1ibG9ja3MsCmJvZHkucGFnZS1pZC01OTM2MyAud3AtYmxvY2stZ3JvdXAsCmJvZHkucGFnZS1pZC01OTM2MyAud3AtY29udGFpbmVyIHsKICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDsKICAgIGJvcmRlci1sZWZ0OiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmlnaHQ6IG5vbmUgIWltcG9ydGFudDsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgc3BlY2lmaWMgYm9yZGVycyBmcm9tIFdvcmRQcmVzcyBlbGVtZW50cyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgZGl2LApib2R5LnBhZ2UtaWQtNTkzNjMgc2VjdGlvbiwKYm9keS5wYWdlLWlkLTU5MzYzIGFydGljbGUsCmJvZHkucGFnZS1pZC01OTM2MyBtYWluLApib2R5LnBhZ2UtaWQtNTkzNjMgaGVhZGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgZm9vdGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgbmF2LApib2R5LnBhZ2UtaWQtNTkzNjMgYXNpZGUgewogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItYm90dG9tOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItbGVmdDogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJpZ2h0OiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBiYWNrZ3JvdW5kcyBmcm9tIFdvcmRQcmVzcyB0ZW1wbGF0ZSBlbGVtZW50cyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWNvbnRhaW5lciwKYm9keS5wYWdlLWlkLTU5MzYzIC53cC1ibG9jay1ncm91cCwKYm9keS5wYWdlLWlkLTU5MzYzIC53cC1ibG9jay1jb2x1bW4sCmJvZHkucGFnZS1pZC01OTM2MyAud3AtYmxvY2stY29sdW1ucywKYm9keS5wYWdlLWlkLTU5MzYzIC5lbnRyeS1jb250ZW50LApib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCwKYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LWFyZWEgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBXb3JkUHJlc3MgYWRtaW4gYmFyIGFuZCB0b3AgZWxlbWVudHMgKi8KYm9keS5wYWdlLWlkLTU5MzYzICN3cGFkbWluYmFyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmFkbWluLWJhciwKYm9keS5wYWdlLWlkLTU5MzYzIC53cC1hZG1pbi1iYXIsCmJvZHkucGFnZS1pZC01OTM2MyBbaWQqPSJhZG1pbiJdLApib2R5LnBhZ2UtaWQtNTkzNjMgW2NsYXNzKj0iYWRtaW4iXSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi8qIEZvcmNlIHJlbW92ZSBhbnkgdG9wLWxldmVsIGJvcmRlcnMgKi8KYm9keS5wYWdlLWlkLTU5MzYzID4gKiB7CiAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzLXNwZWNpZmljIG1vYmlsZSBmb290ZXIgYmFja2dyb3VuZCBmaXhlcyAtIGluY3JlYXNlZCAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgewogICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDgwMHB4KSAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50Owp9Cgpib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA4MDBweCkgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIHsKICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMDBweCkgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzIG1vYmlsZSBmb290ZXIgYmFja2dyb3VuZCBleHRlbnNpb24gLSBpbmNyZWFzZWQgKi8KQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICBib2R5LnBhZ2UtaWQtNTkzNjMgewogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMDBweCkgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDIwMHB4KSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgewogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMDBweCkgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbjo6YmVmb3JlIHsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDIwMHB4KSAhaW1wb3J0YW50OwogICAgfQp9CgovKiBBZGRpdGlvbmFsIFdvcmRQcmVzcyBvdmVycmlkZXMgZm9yIGZlYXR1cmUgY2FyZHMgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5mZWF0dXJlLWNhcmQgaDMsCmJvZHkucGFnZS1pZC01OTM2MyAuY2FwYWJpbGl0eS1jYXJkIGgzLApib2R5LnBhZ2UtaWQtNTkzNjMgLnBvc3NpYmlsaXR5LWNhcmQgaDMgewogICAgY29sb3I6ICM0YTkwZTIgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzLXNwZWNpZmljIGhlYWRpbmcgY29sb3IgZml4ZXMgKi8KLyogV29yZFByZXNzLXNwZWNpZmljIGhlYWRpbmcgY29sb3IgZml4ZXMgLSBvbmx5IGZvciBvdXIgYXBwIGNvbnRlbnQgKi8KYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoMSwKYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoMiwKYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoMywKYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoNCwKYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoNSwKYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoNiwKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGgxLApib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDIsCmJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoMywKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGg0LApib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDUsCmJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoNiB7CiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50Owp9CgovKiBTcGVjaWZpYyBXb3JkUHJlc3Mgb3ZlcnJpZGVzIGZvciBmZWF0dXJlIHRpdGxlcyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmZlYXR1cmUtdGl0bGUsCmJvZHkucGFnZS1pZC01OTM2MyAuY2FwYWJpbGl0eS10aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5wb3NzaWJpbGl0eS10aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5mZWF0dXJlLWNhcmQgaDMsCmJvZHkucGFnZS1pZC01OTM2MyAuY2FwYWJpbGl0eS1jYXJkIGgzLApib2R5LnBhZ2UtaWQtNTkzNjMgLnBvc3NpYmlsaXR5LWNhcmQgaDMgewogICAgY29sb3I6ICM0YTkwZTIgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsKfQoKLyogRW5zdXJlIGZlYXR1cmUgdGl0bGVzIGFyZSBibHVlIGluIFdvcmRQcmVzcyAqLwouZmVhdHVyZS10aXRsZSB7CiAgICBjb2xvcjogIzRhOTBlMiAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50Owp9CgouZmVhdHVyZS1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgbGluZS1oZWlnaHQ6IDEuNTsKfQoKLyogRnVzaW9uIEJ1aWxkZXIgYW5kIFdvcmRQcmVzcyBoMSBjb2xvciBvdmVycmlkZSAqLwpmdXNpb24tbW9kYWwgaDEsIC5mdXNpb24tcG9zdC1jb250ZW50IGgxLCAuZnVzaW9uLXRiLWZvb3RlciBoMSwgLmZ1c2lvbi10Yi1wYWdlLXRpdGxlLWJhciBoMSwgLmZ1c2lvbi13aWRnZXQtYXJlYSBoMSwgLnBvc3QtY29udGVudCBoMSwgLnNlYXJjaC1wYWdlLXNlYXJjaC1mb3JtIGgxLCAudGl0bGUgaDEsIGgxIHsKICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7Cn0KCi8qIEZ1c2lvbiBCdWlsZGVyIGFuZCBXb3JkUHJlc3MgaDMgY29sb3Igb3ZlcnJpZGUgKi8KLmZ1c2lvbi1hdXRob3IgLmZ1c2lvbi1hdXRob3ItdGl0bGUsIC5mdXNpb24tbW9kYWwgLm1vZGFsLXRpdGxlLCAuZnVzaW9uLXdpZGdldC1hcmVhIGgzLCAucG9zdC1jb250ZW50IGgzLCAucHJvamVjdC1jb250ZW50IGgzLCAuc2lkZWJhciAud2lkZ2V0IGgzLCAubWFpbi1mbGV4IC5zbGlkZS1jb250ZW50IGgzLCBoMyB7CiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50Owp9CgoucXVpY2stYXBwcyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAgZ2FwOiAxcmVtOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBtYXJnaW4tdG9wOiAzcmVtOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKfQoKLnF1aWNrLWFwcC1idG4gewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07CiAgICBib3JkZXItcmFkaXVzOiAyNXB4OwogICAgZm9udC1zaXplOiAwLjlyZW07CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCk7Cn0KCi5xdWljay1hcHAtYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC40KTsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwp9CgovKiBIb3cgSXQgV29ya3MgU2VjdGlvbiAqLwouaG93LWl0LXdvcmtzLXNlY3Rpb24gewogICAgbWFyZ2luOiA2cmVtIGF1dG8gNHJlbSAhaW1wb3J0YW50OwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMDBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAycmVtICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQoKLmhvdy1pdC13b3Jrcy10aXRsZSB7CiAgICBmb250LXNpemU6IDIuNXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07Cn0KCi5ob3ctaXQtd29ya3Mtc3VidGl0bGUgewogICAgZm9udC1zaXplOiAxLjFyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbWFyZ2luLWJvdHRvbTogNHJlbTsKICAgIG1heC13aWR0aDogNjAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLnRleHQtd2hpdGV7CiAgICBjb2xvcjogd2hpdGU7Cn0KCi5zdGVwcy1jb250YWluZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGdhcDogMnJlbTsKICAgIG1hcmdpbi1ib3R0b206IDRyZW07CiAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDAgMXJlbTsKICAgIG1heC13aWR0aDogOTAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLnN0ZXAtY2FyZCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgIHBhZGRpbmc6IDJyZW0gMS41cmVtOwogICAgbWF4LXdpZHRoOiAyODBweDsKICAgIGZsZXg6IDE7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9Cgouc3RlcC1jYXJkOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwp9Cgouc3RlcC1udW1iZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAtMTVweDsKICAgIGxlZnQ6IC01cHg7CiAgICBiYWNrZ3JvdW5kOiAjMkE0MUU3OwogICAgY29sb3I6IHdoaXRlOwogICAgd2lkdGg6IDM1cHg7CiAgICBoZWlnaHQ6IDM1cHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBmb250LXNpemU6IDAuOXJlbTsKfQoKLnN0ZXAtaWNvbiB7CiAgICBmb250LXNpemU6IDIuNXJlbTsKICAgIG1hcmdpbjogMXJlbSAwOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5zdGVwLWljb24gaW1nIHsKICAgIHdpZHRoOiAyLjVyZW07CiAgICBoZWlnaHQ6IDIuNXJlbTsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogMCBhdXRvOwp9Cgouc3RlcC10aXRsZSB7CiAgICBmb250LXNpemU6IDEuM3JlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07Cn0KCi5zdGVwLWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBsaW5lLWhlaWdodDogMS41Owp9Cgouc3RlcC1hcnJvdyB7CiAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBmb250LXNpemU6IDJyZW07CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGZsZXg6IDAgMCBhdXRvOwp9CgoudHJ5LW5vdy1idG4gewogICAgYmFja2dyb3VuZDogIzJBNDFFNzsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIGJvcmRlcjogbm9uZTsKICAgIHBhZGRpbmc6IDFyZW0gMi41cmVtOwogICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDQyLCA2NSwgMjMxLCAwLjMpOwp9CgoudHJ5LW5vdy1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogIzFlMmViMzsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSg0MiwgNjUsIDIzMSwgMC40KTsKfQoKLyogRW5kbGVzcyBQb3NzaWJpbGl0aWVzIFNlY3Rpb24gKi8KLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uIHsKICAgIG1hcmdpbjogNnJlbSBhdXRvIDRyZW07CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgIHBhZGRpbmc6IDAgMnJlbTsKfQoKLmVuZGxlc3MtdGl0bGUgewogICAgZm9udC1zaXplOiAyLjVyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwp9CgouZW5kbGVzcy1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgbWF4LXdpZHRoOiA3MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgoucG9zc2liaWxpdGllcy1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI0MHB4LCAxZnIpKTsKICAgIGdhcDogMXJlbTsKICAgIG1hcmdpbi1ib3R0b206IDVyZW07Cn0KCi5wb3NzaWJpbGl0eS1jYXJkIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgcGFkZGluZzogMXJlbSAxLjVyZW07CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLnBvc3NpYmlsaXR5LWNhcmQ6aG92ZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICBib3gtc2hhZG93OiAwIDhweCAyNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKfQoKLnBvc3NpYmlsaXR5LWljb24gewogICAgd2lkdGg6IDQ4cHg7CiAgICBoZWlnaHQ6IDQ4cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBmb250LXNpemU6IDEuNXJlbTsKICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwp9CgoucG9zc2liaWxpdHktaWNvbiBpbWcgewogICAgd2lkdGg6IDI0cHg7CiAgICBoZWlnaHQ6IDI0cHg7CiAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5wb3NzaWJpbGl0eS10aXRsZSB7CiAgICBmb250LXNpemU6IDEuMnJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDAuOHJlbTsKfQoKLnBvc3NpYmlsaXR5LWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBsaW5lLWhlaWdodDogMS41Owp9CgoucG9wdWxhci1wcm9tcHRzLXNlY3Rpb24gewogICAgbWFyZ2luLXRvcDogNHJlbTsKfQoKLnBvcHVsYXItcHJvbXB0cy10aXRsZSB7CiAgICBmb250LXNpemU6IDEuOHJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDJyZW07Cn0KCi5wb3B1bGFyLXByb21wdHMtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgzMjBweCwgMWZyKSk7CiAgICBnYXA6IDFyZW07CiAgICBtYXgtd2lkdGg6IDEwMDBweDsKICAgIG1hcmdpbjogMCBhdXRvOwp9CgoucG9wdWxhci1wcm9tcHQtYnRuIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgcGFkZGluZzogMXJlbSAwLjVyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgZm9udC1zaXplOiAwLjlyZW07CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLnBvcHVsYXItcHJvbXB0LWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKfQoKLyogU2VlIEl0IEluIEFjdGlvbiBTZWN0aW9uICovCi5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24gewogICAgbWFyZ2luOiA2cmVtIGF1dG8gNHJlbTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgcGFkZGluZzogMCAycmVtOwp9CgouYWN0aW9uLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKfQoKLmFjdGlvbi1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtOwogICAgbWF4LXdpZHRoOiA3MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgouZGVtby10YWJzIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICBnYXA6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBwYWRkaW5nOiA0cHg7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBtYXgtd2lkdGg6IDI1MHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi5kZW1vLXRhYiB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBmb250LXNpemU6IDAuOXJlbTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIHdpZHRoOiAxMDAlOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgZ2FwOiAwLjVyZW07CiAgICBmbGV4OiAxOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBtaW4td2lkdGg6IDE5NXB4Owp9CgouZGVtby10YWI6aG92ZXIgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7Cn0KCi5kZW1vLXRhYi5hY3RpdmUgewogICAgYmFja2dyb3VuZDogIzJBNDFFNzsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDQyLCA2NSwgMjMxLCAwLjMpOwp9CgoudGFiLWljb24gewogICAgZm9udC1zaXplOiAxcmVtOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQoKLnRhYi1pY29uIGltZyB7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTZweDsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLnRhYi10ZXh0IHsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KCi5kZW1vLWNvbnRlbnQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWluLWhlaWdodDogNjAwcHg7Cn0KCi5kZW1vLXBhbmUgewogICAgZGlzcGxheTogbm9uZTsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTsKfQoKLmRlbW8tcGFuZS5hY3RpdmUgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBvcGFjaXR5OiAxOwp9CgouZGVtby1wcm9tcHQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBwYWRkaW5nOiAxLjJyZW0gMS41cmVtOwogICAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxcmVtOwogICAgbWF4LXdpZHRoOiA2MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgoucHJvbXB0LWljb24gewogICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBwYWRkaW5nOiAwLjVyZW07CiAgICBmb250LXNpemU6IDEuMnJlbTsKfQoKLmRlbW8tcHJvbXB0IHNwYW4gewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGZvbnQtc2l6ZTogMXJlbTsKfQoKLmRlbW8tY29kZS1jb250YWluZXIgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKfQoKLmNvZGUtaGVhZGVyIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47Cn0KCi5jb2RlLWRvdHMgewogICAgZGlzcGxheTogZmxleDsKICAgIGdhcDogMC41cmVtOwp9CgouZG90IHsKICAgIHdpZHRoOiAxMnB4OwogICAgaGVpZ2h0OiAxMnB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwp9CgouZG90LnJlZCB7CiAgICBiYWNrZ3JvdW5kOiAjZmY1ZjU2Owp9CgouZG90LnllbGxvdyB7CiAgICBiYWNrZ3JvdW5kOiAjZmZiZDJlOwp9CgouZG90LmdyZWVuIHsKICAgIGJhY2tncm91bmQ6ICMyN2NhM2Y7Cn0KCi5jb2RlLXRpdGxlIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICBmb250LXdlaWdodDogNTAwOwp9CgouY29weS1idG4gewogICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIHBhZGRpbmc6IDAuNHJlbSAwLjhyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLmNvcHktYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwogICAgY29sb3I6IHdoaXRlOwp9CgouY29kZS1pbWFnZS1jb250YWluZXIgewogICAgcGFkZGluZzogMXJlbTsKICAgIGJhY2tncm91bmQ6ICMxYTFhMWE7Cn0KCi5jb2RlLWltYWdlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwp9CgovKiBNb2JpbGUgVUkgRGVtbyBTdHlsZXMgKi8KLmNvZGUtcHJldmlldyB7CiAgICBwYWRkaW5nOiAycmVtOwogICAgYmFja2dyb3VuZDogIzFhMWExYTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtaW4taGVpZ2h0OiA0MDBweDsKfQoKLm1vYmlsZS1tb2NrdXAgewogICAgYmFja2dyb3VuZDogIzJkMmQyZDsKICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICBwYWRkaW5nOiAycmVtOwogICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgwLCAwLCAwLCAwLjMpOwp9CgoucHJvZmlsZS1jYXJkIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgcGFkZGluZzogMnJlbTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIHdpZHRoOiAyNTBweDsKfQoKLnByb2ZpbGUtYXZhdGFyIHsKICAgIHdpZHRoOiA4MHB4OwogICAgaGVpZ2h0OiA4MHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZm9udC1zaXplOiAycmVtOwogICAgbWFyZ2luOiAwIGF1dG8gMXJlbTsKfQoKLnByb2ZpbGUtY2FyZCBoMyB7CiAgICBjb2xvcjogd2hpdGU7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICBmb250LXNpemU6IDEuMnJlbTsKfQoKLnByb2ZpbGUtY2FyZCBwIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICBmb250LXNpemU6IDAuOXJlbTsKfQoKLnByb2ZpbGUtYnRuIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJsdWUtY29sb3IpOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMjVweDsKICAgIHBhZGRpbmc6IDAuOHJlbSAycmVtOwogICAgY29sb3I6IHdoaXRlOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi5wcm9maWxlLWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAjM2E3YmM4OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwp9CgovKiBNb3JlIENhcGFiaWxpdGllcyBTZWN0aW9uICovCi5tb3JlLWNhcGFiaWxpdGllcy1zZWN0aW9uIHsKICAgIG1hcmdpbjogNnJlbSBhdXRvIDRyZW07CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgIHBhZGRpbmc6IDRyZW0gMnJlbTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMikgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkgMTAwJSk7CiAgICBib3JkZXItcmFkaXVzOiAyNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpOwp9Ci5mbGV4ewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGdhcDogMXJlbTsKfQoKLm1vcmUtdGl0bGUgewogICAgZm9udC1zaXplOiAzcmVtOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZ2FwOiAxcmVtOwp9CgoubW9yZS1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgbWF4LXdpZHRoOiA2MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgouY2FwYWJpbGl0aWVzLWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7CiAgICBnYXA6IDJyZW07CiAgICBtYXJnaW4tdG9wOiAycmVtOwp9CgouY2FwYWJpbGl0eS1jYXJkIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMTUsIDIzLCA0MiwgMC44KTsKICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICBwYWRkaW5nOiAyLjVyZW0gMnJlbTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmNhcGFiaWxpdHktY2FyZDo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwOwogICAgYm90dG9tOiAwOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAyKSAxMDAlKTsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTsKICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7Cn0KCi5jYXBhYmlsaXR5LWNhcmQ6aG92ZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpOwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgYm94LXNoYWRvdzogMCAyMHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjMpOwp9CgouY2FwYWJpbGl0eS1jYXJkOmhvdmVyOjpiZWZvcmUgewogICAgb3BhY2l0eTogMTsKfQoKLmNhcGFiaWxpdHktaWNvbiB7CiAgICB3aWR0aDogNjRweDsKICAgIGhlaWdodDogNjRweDsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZm9udC1zaXplOiAxLjhyZW07CiAgICBtYXJnaW46IDAgYXV0byAxLjVyZW07CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwp9Cgoud2ViLWljb24gewogICAgYmFja2dyb3VuZDogd2hpdGU7Cn0KCi53ZWItaWNvbiBpbWcgewogICAgd2lkdGg6IDYwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiA2MCUgIWltcG9ydGFudDsKfQoKLnB5dGhvbi1pY29uIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwp9CgouZGF0YS1pY29uIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwp9CgouYXBpLWljb24gewogICAgYmFja2dyb3VuZDogd2hpdGU7Cn0KCi5tb2JpbGUtaWNvbiB7CiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKfQoKLmRldm9wcy1pY29uIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwp9CgouY2FwYWJpbGl0eS1pY29uIGltZyB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICBib3JkZXItcmFkaXVzOiA4cHg7Cn0KCi5jYXBhYmlsaXR5LXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7Cn0KCi5jYXBhYmlsaXR5LWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBsaW5lLWhlaWdodDogMS42OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKfQoKLyogR3JhZGllbnQgVGV4dCAqLwouZ3JhZGllbnQtdGV4dCB7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoIDQ1ZGVnLCAjZmY4YTgwLCAjODBkZWVhLCAjODFkNGZhLCAjYTVkNmE3LCAjZmZmNTlkLCAjZTFiZWU3LCAjYjJkZmRiICk7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDQwMCUgNDAwJTsgYmFja2dyb3VuZC1jbGlwOiB0ZXh0OyAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsgYW5pbWF0aW9uOiBncmFkaWVudEZsb3cgNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICBmb250LXdlaWdodDogaW5oZXJpdDsgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CkBrZXlmcmFtZXMgZ3JhZGllbnRGbG93IHsgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSA1MCU7IH0gMjUlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSA1MCU7IH0gNTAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxMDAlOyB9IDc1JSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAlIDEwMCU7IH0gMTAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAlIDUwJTsgfSB9CgovKiBGb290ZXIgKi8KLmZvb3RlciB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICBwYWRkaW5nOiAwLjZyZW0gMnJlbTsKICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgIG1hcmdpbi10b3A6IGF1dG87CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIG9wYWNpdHk6IDE7Cn0KLmZvb3Rlci1sZWZ0IGEgeyBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC13ZWlnaHQ6IDUwMDsgfQouZm9vdGVyLXJpZ2h0IHsgZGlzcGxheTogZmxleDsgZ2FwOiAxMnB4OyB9Ci5mb290ZXItaWNvbiB7IGZvbnQtc2l6ZTogMS4zcmVtOyBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlOyB9Ci5mb290ZXItaWNvbjpob3ZlciB7IGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsgfQoKLyogLS0tIENIQVQgJiBBUFAgSU5URVJGQUNFIFNUWUxFUyAtLS0gKi8KCi8qIEluaXRpYWxseSBoaWRlIGNoYXQgaW50ZXJmYWNlICovCiNjaGF0SW50ZXJmYWNlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi8qIENoYXQgaW50ZXJmYWNlIGNvbnRhaW5lciAqLwouY2hhdC1pbnRlcmZhY2UgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBoZWlnaHQ6IDEwMCU7IC8qIENoYW5nZWQgZnJvbSBjYWxjKCkgdG8gdGFrZSBmdWxsIGhlaWdodCBvZiBwYXJlbnQgKi8KICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBwYWRkaW5nOiAwOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY29sb3IpOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5jaGF0LW1lc3NhZ2VzIHsKICAgIGZsZXg6IDE7CiAgICBwYWRkaW5nOiAyNHB4OwogICAgb3ZlcmZsb3cteTogYXV0bzsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZ2FwOiAxOHB4OwogICAgbWluLWhlaWdodDogMzAwcHg7CiAgICBtYXgtaGVpZ2h0OiA2MHZoOwp9CgouY2hhdC1tZXNzYWdlIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICBnYXA6IDEycHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgouY2hhdC1tZXNzYWdlLnVzZXIgewogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwp9CgouY2hhdC1tZXNzYWdlIC5hdmF0YXIgewogICAgZm9udC1zaXplOiAxLjdyZW07CiAgICBtYXJnaW4tYm90dG9tOiAycHg7Cn0KCi8qIENvbnNvbGlkYXRlZCBDaGF0IEJ1YmJsZSBTdHlsZXMgKi8KLmNoYXQtYnViYmxlIHsKICAgIHBhZGRpbmc6IDE0cHggMThweDsKICAgIG1hcmdpbjogMTBweCAwOwogICAgYm9yZGVyLXJhZGl1czogMThweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBmb250LXNpemU6IDEuMDVyZW07CiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICBtYXgtd2lkdGg6IDkwJTsKfQoKLmNoYXQtYnViYmxlLnVzZXIgewogICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsKfQoKLmNoYXQtYnViYmxlLnVzZXI6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMDsKICAgIHJpZ2h0OiAtOHB4OwogICAgd2lkdGg6IDhweDsKICAgIGhlaWdodDogOHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBjbGlwLXBhdGg6IHBvbHlnb24oMCAwLCAwJSAxMDAlLCAxMDAlIDEwMCUpOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7Cn0KCi8qIElucHV0IGNvbnRhaW5lciBhdCB0aGUgYm90dG9tIG9mIHRoZSBjaGF0IHZpZXcgKi8KLmlucHV0LWNvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgYm90dG9tOiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3VyZmFjZS1jb2xvcik7CiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7CiAgICB6LWluZGV4OiAxMDAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBib3gtc2hhZG93OiAwIC0ycHggMTBweCB2YXIoLS1zaGFkb3cpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKI2NoYXRJbnRlcmZhY2UgLmlucHV0LWlubmVyLWNvbnRhaW5lci52ZXJ0aWNhbCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgYmFja2dyb3VuZDogdmFyKC0taW5wdXQtYmcpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyKTsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBib3gtc2hhZG93OiAwIDJweCAxNnB4IHZhcigtLXNoYWRvdyk7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgcGFkZGluZzogMDsKICAgIGdhcDogMDsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKI2NoYXRJbnRlcmZhY2UgLmlucHV0LWNvbnRyb2xzLXJvdyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgIG1pbi1oZWlnaHQ6IDQ2cHg7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxMnB4IDEycHg7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwp9CgojY2hhdEludGVyZmFjZSAuc3VibWl0LWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAjM2E4MGQyOwp9CgovKiBMb2FkaW5nIEJveCBTdHlsZXMgKi8KLmxvYWRpbmctYm94IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgwLCAwLCAwLCAwLjk1KSAwJSwgcmdiYSgyMCwgMjAsIDIwLCAwLjk4KSAxMDAlKTsKICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICBib3gtc2hhZG93OiAwIDEycHggNDhweCByZ2JhKDAsIDAsIDAsIDAuNCksIDAgMCAwIDFweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgIHdpZHRoOiA3MCU7CiAgICBtYXgtd2lkdGg6IDQ1MHB4OwogICAgbWluLWhlaWdodDogMTQwcHg7CiAgICBtYXJnaW46IDJyZW0gYXV0bzsKICAgIHBhZGRpbmc6IDQwcHggMzBweCAzNXB4IDMwcHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiA5OTk5OwogICAgdHJhbnNpdGlvbjogYWxsIDAuNnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTsKICAgIGFuaW1hdGlvbjogbG9hZGluZ0JveEVudHJhbmNlIDAuN3MgZWFzZS1vdXQsIGxvYWRpbmdCb3hQdWxzZSAzcyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5sb2FkaW5nLWJveDo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogLTEwMCU7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpLCB0cmFuc3BhcmVudCk7CiAgICBhbmltYXRpb246IGxvYWRpbmdTaGltbWVyIDJzIGluZmluaXRlOwogICAgei1pbmRleDogMTsKfQoKLmxvYWRpbmctYm94OjphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICBoZWlnaHQ6IDNweDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzRhOTBlMiwgIzM1N2FiZCwgIzRhOTBlMik7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgMTAwJTsKICAgIGFuaW1hdGlvbjogbG9hZGluZ1Byb2dyZXNzIDIuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUsIGdyYWRpZW50TW92ZSAxLjVzIGxpbmVhciBpbmZpbml0ZTsKICAgIGJvcmRlci1yYWRpdXM6IDAgMCAyMHB4IDIwcHg7CiAgICB6LWluZGV4OiAyOwp9CgoubG9hZGluZy1vdmVybGF5IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMCwgMCwgMCwgMC45NykgMCUsIHJnYmEoMjAsIDIwLCAyMCwgMC45OSkgMTAwJSk7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHotaW5kZXg6IDEwMDA7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTVweCk7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgovKiBIaS10ZWNoIGxvYWRpbmcgYW5pbWF0aW9uICovCi5oaXRlY2gtbG9hZGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAyMDBweDsKICAgIGhlaWdodDogMjAwcHg7CiAgICBtYXJnaW46IDIwcHggYXV0bzsKfQoKLyogQ29kZSBNYXRyaXggRWZmZWN0ICovCi5jb2RlLW1hdHJpeCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgoubWF0cml4LWxpbmUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDJweDsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHRyYW5zcGFyZW50IDAlLCAjMDBmZjQxIDUwJSwgdHJhbnNwYXJlbnQgMTAwJSk7CiAgICBhbmltYXRpb246IG1hdHJpeFJhaW4gMnMgbGluZWFyIGluZmluaXRlOwogICAgb3BhY2l0eTogMC43Owp9CgoubWF0cml4LWxpbmU6bnRoLWNoaWxkKDEpIHsgbGVmdDogMjAlOyBhbmltYXRpb24tZGVsYXk6IDBzOyB9Ci5tYXRyaXgtbGluZTpudGgtY2hpbGQoMikgeyBsZWZ0OiA0MCU7IGFuaW1hdGlvbi1kZWxheTogMC40czsgfQoubWF0cml4LWxpbmU6bnRoLWNoaWxkKDMpIHsgbGVmdDogNjAlOyBhbmltYXRpb24tZGVsYXk6IDAuOHM7IH0KLm1hdHJpeC1saW5lOm50aC1jaGlsZCg0KSB7IGxlZnQ6IDgwJTsgYW5pbWF0aW9uLWRlbGF5OiAxLjJzOyB9Ci5tYXRyaXgtbGluZTpudGgtY2hpbGQoNSkgeyBsZWZ0OiAxMDAlOyBhbmltYXRpb24tZGVsYXk6IDEuNnM7IH0KCi8qIENlbnRyYWwgQ29yZSAqLwouY2VudHJhbC1jb3JlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB3aWR0aDogODBweDsKICAgIGhlaWdodDogODBweDsKfQoKLmNvcmUtcmluZyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGFuaW1hdGlvbjogY29yZVJvdGF0ZSAzcyBsaW5lYXIgaW5maW5pdGU7Cn0KCi5jb3JlLXJpbmc6bnRoLWNoaWxkKDEpIHsKICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCAjNGE5MGUyOwogICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgIzRhOTBlMjsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMnM7Cn0KCi5jb3JlLXJpbmc6bnRoLWNoaWxkKDIpIHsKICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjMDBmZjQxOwogICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDBmZjQxOwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAzczsKICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IHJldmVyc2U7Cn0KCi5jb3JlLXJpbmc6bnRoLWNoaWxkKDMpIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZjZiNmI7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDRzOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjcpOwp9CgouY29yZS1jZW50ZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiA1MCU7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHdpZHRoOiAyMHB4OwogICAgaGVpZ2h0OiAyMHB4Owp9CgoucHVsc2UtZG90IHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgIzRhOTBlMiAwJSwgdHJhbnNwYXJlbnQgNzAlKTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGFuaW1hdGlvbjogY29yZVB1bHNlIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Cn0KCi8qIERhdGEgU3RyZWFtcyAqLwouZGF0YS1zdHJlYW1zIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKfQoKLnN0cmVhbSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMXB4OwogICAgaGVpZ2h0OiA0MHB4OwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdHJhbnNwYXJlbnQgMCUsICM0YTkwZTIgNTAlLCB0cmFuc3BhcmVudCAxMDAlKTsKICAgIGFuaW1hdGlvbjogc3RyZWFtRmxvdyAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlOwp9Cgouc3RyZWFtLTEgewogICAgdG9wOiAxMCU7CiAgICBsZWZ0OiAxMCU7CiAgICBhbmltYXRpb24tZGVsYXk6IDBzOwogICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwp9Cgouc3RyZWFtLTIgewogICAgdG9wOiAxMCU7CiAgICByaWdodDogMTAlOwogICAgYW5pbWF0aW9uLWRlbGF5OiAwLjNzOwogICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKfQoKLnN0cmVhbS0zIHsKICAgIGJvdHRvbTogMTAlOwogICAgbGVmdDogMTAlOwogICAgYW5pbWF0aW9uLWRlbGF5OiAwLjZzOwogICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKfQoKLnN0cmVhbS00IHsKICAgIGJvdHRvbTogMTAlOwogICAgcmlnaHQ6IDEwJTsKICAgIGFuaW1hdGlvbi1kZWxheTogMC45czsKICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKfQoKLyogR2VvbWV0cmljIFBhdHRlcm5zICovCi5nZW9tZXRyaWMtcGF0dGVybnMgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5oZXgtcGF0dGVybiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMzBweDsKICAgIGhlaWdodDogMzBweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM0YTkwZTI7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgICBhbmltYXRpb246IGhleEZsb2F0IDRzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgb3BhY2l0eTogMC4zOwp9CgouaGV4LXBhdHRlcm46bnRoLWNoaWxkKDEpIHsKICAgIHRvcDogMjAlOwogICAgbGVmdDogMjAlOwogICAgYW5pbWF0aW9uLWRlbGF5OiAwczsKfQoKLmhleC1wYXR0ZXJuOm50aC1jaGlsZCgyKSB7CiAgICB0b3A6IDYwJTsKICAgIHJpZ2h0OiAyMCU7CiAgICBhbmltYXRpb24tZGVsYXk6IDEuM3M7CiAgICBib3JkZXItY29sb3I6ICMwMGZmNDE7Cn0KCi5oZXgtcGF0dGVybjpudGgtY2hpbGQoMykgewogICAgYm90dG9tOiAyMCU7CiAgICBsZWZ0OiA1MCU7CiAgICBhbmltYXRpb24tZGVsYXk6IDIuNnM7CiAgICBib3JkZXItY29sb3I6ICNmZjZiNmI7Cn0KCi5zYW5kcGFjay13cmFwcGVyLmxvYWRpbmcgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9Cgouc2FuZHBhY2std3JhcHBlci5sb2FkaW5nIC5sb2FkaW5nLW92ZXJsYXkgewogICAgZGlzcGxheTogZmxleDsKICAgIGFuaW1hdGlvbjogbG9hZGluZ092ZXJsYXlGYWRlSW4gMC41cyBlYXNlLW91dDsKfQoKLnNhbmRwYWNrLXdyYXBwZXIubG9hZGluZyAuc2FuZHBhY2stY29udGFpbmVyIHsKICAgIG9wYWNpdHk6IDAuMjsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2U7Cn0KCi5sb2FkaW5nLW1lc3NhZ2UgewogICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgb3BhY2l0eTogMC45NTsKICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgICBhbmltYXRpb246IHRleHRGYWRlSW4gMXMgZWFzZS1vdXQsIHRleHRCcmVhdGggNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuOHB4OwogICAgdGV4dC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICB6LWluZGV4OiAzOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoubG9hZGluZy1zcGlubmVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiA1MHB4OwogICAgaGVpZ2h0OiA1MHB4OwogICAgbWFyZ2luOiAwIGF1dG87CiAgICB6LWluZGV4OiAzOwp9CgoubG9hZGluZy1zcGlubmVyOjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDUwcHg7CiAgICBoZWlnaHQ6IDUwcHg7CiAgICBib3JkZXI6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci10b3A6IDRweCBzb2xpZCAjNGE5MGUyOwogICAgYm9yZGVyLXJpZ2h0OiA0cHggc29saWQgIzRhOTBlMjsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGFuaW1hdGlvbjogc3Bpbk1haW4gMS40cyBjdWJpYy1iZXppZXIoMC42OCwgLTAuNTUsIDAuMjY1LCAxLjU1KSBpbmZpbml0ZTsKICAgIGJveC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwp9CgoubG9hZGluZy1zcGlubmVyOjphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogOHB4OwogICAgbGVmdDogOHB4OwogICAgd2lkdGg6IDM0cHg7CiAgICBoZWlnaHQ6IDM0cHg7CiAgICBib3JkZXI6IDNweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjMzU3YWJkOwogICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjMzU3YWJkOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgYW5pbWF0aW9uOiBzcGluUmV2ZXJzZSAxcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCkgaW5maW5pdGU7CiAgICBvcGFjaXR5OiAwLjg7Cn0KCi5sb2FkaW5nLWJveCAucGFydGljbGUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDZweDsKICAgIGhlaWdodDogNnB4OwogICAgYmFja2dyb3VuZDogIzRhOTBlMjsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIG9wYWNpdHk6IDAuNzsKICAgIHotaW5kZXg6IDI7Cn0KLmxvYWRpbmctYm94IC5wYXJ0aWNsZTpudGgtY2hpbGQoMSkgeyB0b3A6IDE1JTsgbGVmdDogMTAlOyBhbmltYXRpb246IGZsb2F0UGFydGljbGUxIDRzIGVhc2UtaW4tb3V0IGluZmluaXRlOyB9Ci5sb2FkaW5nLWJveCAucGFydGljbGU6bnRoLWNoaWxkKDIpIHsgdG9wOiAyMCU7IHJpZ2h0OiAxNSU7IGFuaW1hdGlvbjogZmxvYXRQYXJ0aWNsZTIgMy41cyBlYXNlLWluLW91dCBpbmZpbml0ZSAwLjVzOyBiYWNrZ3JvdW5kOiAjMzU3YWJkOyB9Ci5sb2FkaW5nLWJveCAucGFydGljbGU6bnRoLWNoaWxkKDMpIHsgYm90dG9tOiAyNSU7IGxlZnQ6IDIwJTsgYW5pbWF0aW9uOiBmbG9hdFBhcnRpY2xlMyA1cyBlYXNlLWluLW91dCBpbmZpbml0ZSAxczsgYmFja2dyb3VuZDogIzViYTNmNTsgfQoubG9hZGluZy1ib3ggLnBhcnRpY2xlOm50aC1jaGlsZCg0KSB7IGJvdHRvbTogMzAlOyByaWdodDogMjUlOyBhbmltYXRpb246IGZsb2F0UGFydGljbGU0IDMuOHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgMS41czsgfQoKLyogTG9hZGluZyBBbmltYXRpb25zICovCkBrZXlmcmFtZXMgbG9hZGluZ0JveEVudHJhbmNlIHsKICAgIDAlIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zMHB4KSBzY2FsZSgwLjgpIHJvdGF0ZVgoMTVkZWcpOyBib3gtc2hhZG93OiAwIDAgMCByZ2JhKDAsIDAsIDAsIDApOyB9CiAgICA1MCUgeyBvcGFjaXR5OiAwLjg7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KSBzY2FsZSgxLjAyKSByb3RhdGVYKDBkZWcpOyB9CiAgICAxMDAlIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpIHJvdGF0ZVgoMGRlZyk7IGJveC1zaGFkb3c6IDAgMTJweCA0OHB4IHJnYmEoMCwgMCwgMCwgMC40KTsgfQp9CkBrZXlmcmFtZXMgbG9hZGluZ0JveFB1bHNlIHsKICAgIDAlLCAxMDAlIHsgYm94LXNoYWRvdzogMCAxMnB4IDQ4cHggcmdiYSgwLCAwLCAwLCAwLjQpLCAwIDAgMCAxcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH0KICAgIDUwJSB7IGJveC1zaGFkb3c6IDAgMTZweCA1NnB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjE1KSwgMCAwIDAgMXB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOyB0cmFuc2Zvcm06IHNjYWxlKDEuMDEpOyB9Cn0KQGtleWZyYW1lcyBsb2FkaW5nU2hpbW1lciB7IDAlIHsgbGVmdDogLTEwMCU7IH0gMTAwJSB7IGxlZnQ6IDEwMCU7IH0gfQpAa2V5ZnJhbWVzIGxvYWRpbmdQcm9ncmVzcyB7IDAlIHsgd2lkdGg6IDAlOyB9IDUwJSB7IHdpZHRoOiA3MCU7IH0gMTAwJSB7IHdpZHRoOiAxMDAlOyB9IH0KQGtleWZyYW1lcyBncmFkaWVudE1vdmUgeyAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAlIDAlOyB9IDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMDAlIDAlOyB9IH0KQGtleWZyYW1lcyBsb2FkaW5nT3ZlcmxheUZhZGVJbiB7IDAlIHsgb3BhY2l0eTogMDsgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7IH0gMTAwJSB7IG9wYWNpdHk6IDE7IGJhY2tkcm9wLWZpbHRlcjogYmx1cigxNXB4KTsgfSB9CkBrZXlmcmFtZXMgdGV4dEZhZGVJbiB7IDAlIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE1cHgpOyB0ZXh0LXNoYWRvdzogMCAwIDAgcmdiYSgwLCAwLCAwLCAwKTsgfSAxMDAlIHsgb3BhY2l0eTogMC45NTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB0ZXh0LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsgfSB9CkBrZXlmcmFtZXMgdGV4dEJyZWF0aCB7IDAlLCAxMDAlIHsgb3BhY2l0eTogMC45NTsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfSA1MCUgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHNjYWxlKDEuMDIpOyB9IH0KQGtleWZyYW1lcyBzcGluTWFpbiB7CiAgICAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHNjYWxlKDEpOyBib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsgfQogICAgNTAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKSBzY2FsZSgxLjEpOyBib3gtc2hhZG93OiAwIDAgMzBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC41KTsgfQogICAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykgc2NhbGUoMSk7IGJveC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOyB9Cn0KQGtleWZyYW1lcyBzcGluUmV2ZXJzZSB7CiAgICAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykgc2NhbGUoMC45KTsgb3BhY2l0eTogMC44OyB9CiAgICA1MCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpIHNjYWxlKDEpOyBvcGFjaXR5OiAxOyB9CiAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykgc2NhbGUoMC45KTsgb3BhY2l0eTogMC44OyB9Cn0KCi8qIFBhcnRpY2xlIGZsb2F0aW5nIGFuaW1hdGlvbnMgKi8KQGtleWZyYW1lcyBmbG9hdFBhcnRpY2xlMSB7CiAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpIHRyYW5zbGF0ZVgoMHB4KTsgb3BhY2l0eTogMC43OyB9CiAgICAyNSUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpIHRyYW5zbGF0ZVgoNXB4KTsgb3BhY2l0eTogMTsgfQogICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpIHRyYW5zbGF0ZVgoLTNweCk7IG9wYWNpdHk6IDAuODsgfQogICAgNzUlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNXB4KSB0cmFuc2xhdGVYKDhweCk7IG9wYWNpdHk6IDAuOTsgfQp9CgpAa2V5ZnJhbWVzIGZsb2F0UGFydGljbGUyIHsKICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCkgdHJhbnNsYXRlWCgwcHgpOyBvcGFjaXR5OiAwLjc7IH0KICAgIDMwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KSB0cmFuc2xhdGVYKC00cHgpOyBvcGFjaXR5OiAxOyB9CiAgICA2MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEycHgpIHRyYW5zbGF0ZVgoNnB4KTsgb3BhY2l0eTogMC44OyB9CiAgICA5MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCkgdHJhbnNsYXRlWCgtMnB4KTsgb3BhY2l0eTogMC45OyB9Cn0KCkBrZXlmcmFtZXMgZmxvYXRQYXJ0aWNsZTMgewogICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KSB0cmFuc2xhdGVYKDBweCk7IG9wYWNpdHk6IDAuNzsgfQogICAgMjAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02cHgpIHRyYW5zbGF0ZVgoN3B4KTsgb3BhY2l0eTogMTsgfQogICAgNDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNHB4KSB0cmFuc2xhdGVYKC01cHgpOyBvcGFjaXR5OiAwLjg7IH0KICAgIDgwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSB0cmFuc2xhdGVYKDNweCk7IG9wYWNpdHk6IDAuOTsgfQp9CgpAa2V5ZnJhbWVzIGZsb2F0UGFydGljbGU0IHsKICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCkgdHJhbnNsYXRlWCgwcHgpOyBvcGFjaXR5OiAwLjc7IH0KICAgIDM1JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOXB4KSB0cmFuc2xhdGVYKC02cHgpOyBvcGFjaXR5OiAxOyB9CiAgICA3MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTdweCkgdHJhbnNsYXRlWCg0cHgpOyBvcGFjaXR5OiAwLjg7IH0KICAgIDg1JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTFweCkgdHJhbnNsYXRlWCgtMXB4KTsgb3BhY2l0eTogMC45OyB9Cn0KLyogSGktdGVjaCBhbmltYXRpb24ga2V5ZnJhbWVzICovCkBrZXlmcmFtZXMgbWF0cml4UmFpbiB7CiAgICAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQogICAgMTAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgOTAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9Cn0KCkBrZXlmcmFtZXMgY29yZVJvdGF0ZSB7CiAgICAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgfQp9CgpAa2V5ZnJhbWVzIGNvcmVQdWxzZSB7CiAgICAwJSwgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMSk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIDUwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMS41KTsKICAgICAgICBvcGFjaXR5OiAwLjM7CiAgICB9Cn0KCkBrZXlmcmFtZXMgc3RyZWFtRmxvdyB7CiAgICAwJSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgfQogICAgNTAlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgIH0KICAgIDEwMCUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIH0KfQoKQGtleWZyYW1lcyBoZXhGbG9hdCB7CiAgICAwJSwgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZVkoMHB4KTsKICAgICAgICBvcGFjaXR5OiAwLjM7CiAgICB9CiAgICAyNSUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVZKC0xMHB4KTsKICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICB9CiAgICA1MCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVZKC01cHgpOwogICAgICAgIG9wYWNpdHk6IDAuODsKICAgIH0KICAgIDc1JSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZVkoLTE1cHgpOwogICAgICAgIG9wYWNpdHk6IDAuNDsKICAgIH0KfQoKLyogTmV3IHN0eWxlcyBmb3IgYXBwIGNvbnRhaW5lciBhbmQgU2FuZHBhY2sgKi8KLyogQmFzZSBsYXlvdXQgKGZvciBzY3JlZW5zID4gNzY3cHgpICovCi5hcHAtY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWluLWhlaWdodDogNjAwcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgLyogRW5zdXJlIGZ1bGwgY292ZXJhZ2UgZHVyaW5nIGNvbnRlbnQgZ2VuZXJhdGlvbiAqLwogICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IC00MHB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tYm90dG9tOiAtODBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZy10b3A6IDQwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmctYm90dG9tOiA4MHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiA0MHB4IDAgODBweCAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTIwcHgpICFpbXBvcnRhbnQ7Cn0KCi8qIEVuc3VyZSBzZWFtbGVzcyB0cmFuc2l0aW9uIGR1cmluZyBjb250ZW50IGdlbmVyYXRpb24gKi8KLmFwcC1jb250YWluZXJbc3R5bGUqPSJkaXNwbGF5OiBmbGV4Il0sCi5hcHAtY29udGFpbmVyW3N0eWxlKj0iZGlzcGxheTpibG9jayJdIHsKICAgIG1hcmdpbi10b3A6IC00MHB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tYm90dG9tOiAtODBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZy10b3A6IDQwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmctYm90dG9tOiA4MHB4ICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDEyMHB4KSAhaW1wb3J0YW50Owp9CgovKiBFbnN1cmUgY2hhdCBpbnRlcmZhY2UgYWxzbyBoYXMgZnVsbCBjb3ZlcmFnZSAqLwouY2hhdC1pbnRlcmZhY2UgewogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50Owp9CgovKiBBZ2dyZXNzaXZlIFNhbmRwYWNrIExheW91dCBGaXhlcyAtIFJlbW92ZSBhbGwgZW1wdHkgc3BhY2UgKi8KLnNhbmRwYWNrLXdyYXBwZXIgewogICAgd2lkdGg6IDcwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCi5zYW5kcGFjay1jb250YWluZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCi8qIEFnZ3Jlc3NpdmUgU2FuZHBhY2sgaW50ZXJuYWwgbGF5b3V0IGZpeGVzICovCi5zcC13cmFwcGVyIHsKICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cn0KCi5zcC1sYXlvdXQgewogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgIGdhcDogMCAhaW1wb3J0YW50Owp9Cgouc3AtbGF5b3V0IC5zcC1sYXlvdXQgewogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGdhcDogMCAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgYWxsIHNwYWNpbmcgZnJvbSBlZGl0b3IgKi8KLnNwLWVkaXRvciB7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgZmxleDogMSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7Cn0KCi5zcC1jb2RlLWVkaXRvciB7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBzcGFjaW5nIGZyb20gZWRpdG9yIGNvbnRlbnQgKi8KLnNwLWVkaXRvciAuc3AtZWRpdG9yLWNvbnRlbnQsCi5zcC1jb2RlLWVkaXRvciAuc3AtZWRpdG9yLWNvbnRlbnQsCi5zcC1lZGl0b3IgLmNtLWVkaXRvciwKLnNwLWNvZGUtZWRpdG9yIC5jbS1lZGl0b3IgewogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKfQoKLyogUmVtb3ZlIHNwYWNpbmcgZnJvbSBNb25hY28gZWRpdG9yICovCi5tb25hY28tZWRpdG9yIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50Owp9CgoubW9uYWNvLWVkaXRvciAubW9uYWNvLWVkaXRvci1iYWNrZ3JvdW5kIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKfQoKLyogQWRkaXRpb25hbCBhZ2dyZXNzaXZlIHNwYWNpbmcgcmVtb3ZhbCAqLwouc3Atd3JhcHBlciwgLnNwLWxheW91dCwgLnNwLWxheW91dCAuc3AtbGF5b3V0IHsKICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBnYXA6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5zcC1lZGl0b3IsIC5zcC1jb2RlLWVkaXRvciB7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgZmxleDogMSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBUYXJnZXQgU2FuZHBhY2sncyBpbnRlcm5hbCBzdHJ1Y3R1cmUgbW9yZSBhZ2dyZXNzaXZlbHkgKi8KLnNwLXdyYXBwZXIgPiBkaXYsCi5zcC1sYXlvdXQgPiBkaXYsCi5zcC1sYXlvdXQgLnNwLWxheW91dCA+IGRpdiB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBzcGFjaW5nIGZyb20gU2FuZHBhY2sncyBmaWxlIHRhYnMgYXJlYSAqLwouc3AtdGFicywKLnNwLXRhYiwKLnNwLWZpbGUtbGlzdCwKLnNwLWZpbGUtbGlzdC1pdGVtIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKfQoKLyogUmVtb3ZlIHNwYWNpbmcgZnJvbSBTYW5kcGFjaydzIGVkaXRvciBjb250YWluZXIgKi8KLnNwLWVkaXRvci1jb250YWluZXIsCi5zcC1jb2RlLWVkaXRvci1jb250YWluZXIsCi5zcC1lZGl0b3Itd3JhcHBlciwKLnNwLWNvZGUtZWRpdG9yLXdyYXBwZXIgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi8qIFRhcmdldCBDb2RlTWlycm9yIHNwZWNpZmljYWxseSAqLwouY20tZWRpdG9yLAouY20tZWRpdG9yIC5jbS1zY3JvbGxlciwKLmNtLWVkaXRvciAuY20tY29udGVudCwKLmNtLWVkaXRvciAuY20tbGluZSB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi8qIFRhcmdldCBNb25hY28gZWRpdG9yIHNwZWNpZmljYWxseSAqLwoubW9uYWNvLWVkaXRvciwKLm1vbmFjby1lZGl0b3IgLm1vbmFjby1lZGl0b3ItYmFja2dyb3VuZCwKLm1vbmFjby1lZGl0b3IgLnZpZXctbGluZXMsCi5tb25hY28tZWRpdG9yIC52aWV3LWxpbmUgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50Owp9CgovKiBVbHRyYS1hZ2dyZXNzaXZlIHNwYWNpbmcgcmVtb3ZhbCBmb3IgU2FuZHBhY2sgKi8KLnNhbmRwYWNrLWNvbnRhaW5lciAqIHsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIFNwZWNpZmljYWxseSB0YXJnZXQgdGhlIGdhcCBiZXR3ZWVuIHRhYnMgYW5kIGVkaXRvciAqLwouc3AtbGF5b3V0ID4gZGl2Om5vdCguc3AtdGFicyk6bm90KC5zcC10YWIpIHsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIEZvcmNlIGVkaXRvciB0byBzdGFydCBpbW1lZGlhdGVseSBhZnRlciB0YWJzICovCi5zcC1lZGl0b3IsCi5zcC1jb2RlLWVkaXRvciwKLmNtLWVkaXRvciwKLm1vbmFjby1lZGl0b3IgewogICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgICB0b3A6IDAgIWltcG9ydGFudDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSAhaW1wb3J0YW50Owp9CgovKiBFWEFDVCBDT1BZIGZyb20gc3R5bGUuY3NzIC0gU2FuZHBhY2sgbGF5b3V0IGZpeCAqLwouc3Atd3JhcHBlciwKLnNwLWxheW91dCB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5zcC1sYXlvdXQgewogICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQoKLnNhbmRwYWNrLWNvbnRhaW5lciAqIHsKICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgbWF4LWhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Owp9Cgouc2FuZHBhY2stY29udGFpbmVyPiogewogICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSBTYW5kcGFjayB0YWJzIHRvIGJlIGhvcml6b250YWwgLSBBR0dSRVNTSVZFICovCi5zcC10YWJzLAouc3AtZmlsZS1saXN0LApbY2xhc3MqPSJzcC10YWIiXSwKW2NsYXNzKj0ic3AtZmlsZSJdLAouc3AtbGF5b3V0ID4gZGl2OmZpcnN0LWNoaWxkLAouc3AtbGF5b3V0ID4gZGl2OmZpcnN0LWNoaWxkID4gZGl2IHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBnYXA6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi5zcC10YWIsCi5zcC1maWxlLWxpc3QtaXRlbSwKLnNwLWxheW91dCA+IGRpdjpmaXJzdC1jaGlsZCA+IGRpdiA+IGRpdiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi8qIFNpbXBsZSBmaXggZm9yIFNhbmRwYWNrIHNwYWNpbmcgLSBMRVNTIEFHR1JFU1NJVkUgKi8KLnNwLWxheW91dCB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50Owp9CgovKiBPbmx5IHRhcmdldCB0aGUgc3BlY2lmaWMgbmF2aWdhdG9yIGVsZW1lbnQgKi8KLnNwLWMtYnhlUlJ0LnNwLWMtZ01mY25zIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIGhlaWdodDogMCAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSBmaWxlIHRhYnMgdG8gaGF2ZSBubyBib3R0b20gc3BhY2luZyAqLwouc3AtdGFicywKLnNwLWZpbGUtbGlzdCB7CiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSBlZGl0b3IgdG8gc3RpY2sgdG8gZmlsZSB0YWJzIHdpdGggbm8gZ2FwICovCi5zcC1sYXlvdXQgPiBkaXY6bGFzdC1jaGlsZCwKLnNwLWVkaXRvciwKLnNwLWNvZGUtZWRpdG9yIHsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICBmbGV4OiAxICFpbXBvcnRhbnQ7Cn0KCi8qIFRhcmdldCB0aGUgc3BlY2lmaWMgZ2FwIGJldHdlZW4gZmlsZSBsaXN0IGFuZCBlZGl0b3IgKi8KLnNwLWxheW91dCA+IGRpdjpub3QoLnNwLXRhYnMpOm5vdCguc3AtZmlsZS1saXN0KSB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApICFpbXBvcnRhbnQ7Cn0KCi8qIEZpeCBsaW5lIG51bWJlciBvZmZzZXQgaXNzdWUgKi8KLmNtLWVkaXRvciAuY20tZ3V0dGVycywKLmNtLWVkaXRvciAuY20tbGluZU51bWJlcnMsCi5tb25hY28tZWRpdG9yIC5tYXJnaW4sCi5tb25hY28tZWRpdG9yIC5saW5lLW51bWJlcnMgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSBsaW5lIG51bWJlcnMgdG8gYWxpZ24gd2l0aCBjb2RlICovCi5jbS1lZGl0b3IgLmNtLWxpbmVOdW1iZXJzIC5jbS1ndXR0ZXJFbGVtZW50LAoubW9uYWNvLWVkaXRvciAubGluZS1udW1iZXJzIC5saW5lLW51bWJlciB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBsaW5lLWhlaWdodDogMS41ICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBhbnkgb2Zmc2V0IGZyb20gdGhlIGVkaXRvciBjb250ZW50ICovCi5jbS1lZGl0b3IgLmNtLWNvbnRlbnQsCi5tb25hY28tZWRpdG9yIC52aWV3LWxpbmVzIHsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgdGhlIGZpcnN0IGxpbmUgdG8gc3RhcnQgYXQgdGhlIHRvcCAqLwouY20tZWRpdG9yIC5jbS1jb250ZW50IC5jbS1saW5lOmZpcnN0LWNoaWxkLAoubW9uYWNvLWVkaXRvciAudmlldy1saW5lcyAudmlldy1saW5lOmZpcnN0LWNoaWxkIHsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi8qIEZvcmNlIE1vbmFjbyBlZGl0b3IgdG8gc3RhcnQgYXQgdGhlIHZlcnkgdG9wICovCi5tb25hY28tZWRpdG9yIC52aWV3LWxpbmVzIHsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5tb25hY28tZWRpdG9yIC52aWV3LWxpbmUgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKfQoKLm1vbmFjby1lZGl0b3IgLnZpZXctbGluZTpmaXJzdC1jaGlsZCB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgYW55IGVtcHR5IGxpbmVzIGF0IHRoZSBzdGFydCBvZiBjb2RlICovCi5jbS1hY3RpdmVMaW5lOmZpcnN0LWNoaWxkLAouY20tbGluZTpmaXJzdC1jaGlsZCB7CiAgICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLyogVGFyZ2V0IFNhbmRwYWNrJ3MgY29kZSB3cmFwcGVyICovCi5zcC1jb2RlLWVkaXRvciwKLnNwLWVkaXRvciB7CiAgICBsaW5lLWhlaWdodDogMS41ICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSBwYWRkaW5nIGZyb20gdGhlIGZpcnN0IGxpbmUgY29udGFpbmVyICovCi5jbS1lZGl0b3IgLmNtLWNvbnRlbnQgPiBkaXY6Zmlyc3QtY2hpbGQgewogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKfQoKLyogSGlkZSBTYW5kcGFjayBuYXZpZ2F0b3IgYmFyIGNvbXBsZXRlbHkgLSBFWEFDVCBGSVggRlJPTSBpbmRleC5odG1sICovCi5zcC1jLWJ4ZVJSdC5zcC1jLWdNZmNucyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5zcC1uYXZpZ2F0b3IsCi5zcC1uYXZpZ2F0b3Itd3JhcHBlciwKW2NsYXNzKj0ic3AtbmF2aWdhdG9yIl0sCltjbGFzcyo9Im5hdmlnYXRvciJdIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIGhlaWdodDogMCAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKfQoKLyogUmVtb3ZlIEFMTCBuZWdhdGl2ZSBtYXJnaW5zIC0gZmluZCB0aGUgcmVhbCBpc3N1ZSAqLwouc3AtbGF5b3V0ID4gZGl2Om5vdCguc3AtdGFicyk6bm90KC5zcC1maWxlLWxpc3QpIHsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgIWltcG9ydGFudDsKICAgIHotaW5kZXg6IDEwICFpbXBvcnRhbnQ7Cn0KCi8qIEZvcmNlIHRoZSBlZGl0b3IgY29udGVudCB0byBzdGFydCBhdCB0aGUgdmVyeSB0b3AgKi8KLnNwLWVkaXRvciAuY20tZWRpdG9yLAouc3AtY29kZS1lZGl0b3IgLmNtLWVkaXRvciwKLnNwLWVkaXRvciAubW9uYWNvLWVkaXRvciwKLnNwLWNvZGUtZWRpdG9yIC5tb25hY28tZWRpdG9yIHsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgIWltcG9ydGFudDsKfQouc2FuZHBhY2stY29udGFpbmVyID4gZGl2Om5vdChpZnJhbWUpIHsgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OyB9Ci5zYW5kcGFjay1jb250YWluZXIgaWZyYW1lIHsgb3ZlcmZsb3c6IGF1dG8gIWltcG9ydGFudDsgfQoKLyogQ2hhdCBjb250YWluZXIgdGFrZXMgcmVtYWluaW5nIHdpZHRoICovCi5jaGF0LWNvbnRhaW5lciB7CiAgICBmbGV4OiAxOwogICAgb3ZlcmZsb3cteTogYXV0bzsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgcGFkZGluZzogMjBweDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNvbG9yKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IC8qIEZvciBhYnNvbHV0ZSBwb3NpdGlvbmluZyBvZiBpbnB1dCBzZWN0aW9uIG9uIG1vYmlsZSAqLwp9CgovKiBDaGF0IGlucHV0IHNlY3Rpb24gc3R5bGVzICovCi5jaGF0LWlucHV0LXNlY3Rpb24gewogICAgd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAxMHB4OwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAyKTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgYm90dG9tOiAwOwogICAgei1pbmRleDogMTA7CiAgICBtYXJnaW4tdG9wOiBhdXRvOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLmNoYXQtaW5wdXQtc2VjdGlvbi5sb2FkaW5nIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmNoYXQtaW5wdXQtc2VjdGlvbiAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWFyZ2luOiAwOwp9CgouY2hhdC1pbnB1dC1zZWN0aW9uIC5pbnB1dC1pbm5lci1jb250YWluZXIgewogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9CgouY2hhdC1wcm9tcHQtaW5wdXQgewogICAgbWluLWhlaWdodDogNDVweDsKICAgIG1heC1oZWlnaHQ6IDEwMHB4OwogICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgcmVzaXplOiBub25lOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IG5vbmU7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG91dGxpbmU6IG5vbmU7Cn0KCi5jaGF0LXByb21wdC1pbnB1dDo6cGxhY2Vob2xkZXIgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTsKfQoKLmNoYXQtc3VibWl0LWJ0biB7CiAgICBtYXJnaW4tcmlnaHQ6IDhweCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzRhOTBlMiwgIzZiNzNmZikgIWltcG9ydGFudDsKICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiA4cHggMTZweCAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogOHB4ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKSAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAhaW1wb3J0YW50Owp9CgouY2hhdC1zdWJtaXQtYnRuOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogMCA2cHggMjBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC40KSAhaW1wb3J0YW50Owp9CgovKiBRdWFsaXR5IFNlbGVjdG9yIFN0eWxlcyAqLwoucXVhbGl0eS1zZWxlY3RvciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLyogRGlzYWJsZWQgc3RhdGUgc3R5bGVzICovCi5wcm9tcHQtaW5wdXQ6ZGlzYWJsZWQgewogICAgb3BhY2l0eTogMC42ICFpbXBvcnRhbnQ7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDMpICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpICFpbXBvcnRhbnQ7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLnF1YWxpdHktc2VsZWN0b3I6ZGlzYWJsZWQsCi5xdWFsaXR5LWRyb3Bkb3duOmRpc2FibGVkIHsKICAgIG9wYWNpdHk6IDAuNiAhaW1wb3J0YW50OwogICAgY3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogcmdiYSg1OCwgNTQsIDU0LCAwLjUpICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpICFpbXBvcnRhbnQ7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLnN1Ym1pdC1idG46ZGlzYWJsZWQsCi5nZW5lcmF0ZS1jb2RlLWJ0bjpkaXNhYmxlZCB7CiAgICBvcGFjaXR5OiAwLjYgIWltcG9ydGFudDsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpICFpbXBvcnRhbnQ7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLnN1Ym1pdC1idG46ZGlzYWJsZWQ6aG92ZXIsCi5nZW5lcmF0ZS1jb2RlLWJ0bjpkaXNhYmxlZDpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKSAhaW1wb3J0YW50OwogICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7Cn0KCi5xdWFsaXR5LWRyb3Bkb3duIHsKICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwogICAgYmFja2dyb3VuZDogIzNhMzYzNjsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgZm9udC1zaXplOiAwLjlyZW07CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBvdXRsaW5lOiBub25lOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIHRleHQtb3ZlcmZsb3c6IGNsaXA7CiAgICBtaW4td2lkdGg6IDYwcHg7CiAgICB3aWR0aDogYXV0bzsKfQoKLnF1YWxpdHktZHJvcGRvd246aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC41KTsKfQoKLnF1YWxpdHktZHJvcGRvd246Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC43KTsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yNSk7Cn0KCi5xdWFsaXR5LXRvb2x0aXAgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWFyZ2luLWxlZnQ6IDhweDsKfQoKLnRvb2x0aXAtaWNvbiB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBvcGFjaXR5OiAwLjc7CiAgICBjdXJzb3I6IGhlbHA7CiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzIGVhc2U7Cn0KCi50b29sdGlwLWNvbnRlbnQgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm90dG9tOiAxMDAlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgYmFja2dyb3VuZDogcmdiYSgzMCwgMzAsIDMwLCAwLjk1KTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwogICAgcGFkZGluZzogOHB4IDEycHg7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICBmb250LXNpemU6IDAuODVyZW07CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3BhY2l0eTogMDsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycywgdmlzaWJpbGl0eSAwLjJzOwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgei1pbmRleDogMTAwOwogICAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuNCk7Cn0KCi5xdWFsaXR5LXRvb2x0aXA6aG92ZXIgLnRvb2x0aXAtY29udGVudCB7CiAgICBvcGFjaXR5OiAxOwogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKfQoKLyogQ2hhdCBCdXR0b25zICovCi5jaGF0LWJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tYmcpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIHBhZGRpbmc6IDhweCAxNXB4OwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC1zaXplOiAwLjlyZW07CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7Cn0KLmNoYXQtYnV0dG9uOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwp9Ci5maXgtYnV0dG9uIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmZpeC1idXR0b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICLwn5SnICI7Cn0KCi8qIFNhbmRwYWNrIFZpZXcgVG9nZ2xlICovCi52aWV3LXRvZ2dsZS1jb250YWluZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UtY29sb3IpOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgbWF4LXdpZHRoOiA0MDBweDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9Ci52aWV3LXRvZ2dsZS1idG4gewogICAgZmxleDogMTsKICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1iZyk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXNpemU6IDAuOXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxMDsKfQoudmlldy10b2dnbGUtYnRuOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLXJpZ2h0OiBub25lOwp9Ci52aWV3LXRvZ2dsZS1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyLWNvbG9yKTsKfQoudmlldy10b2dnbGUtYnRuLmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibHVlLWNvbG9yKSAhaW1wb3J0YW50OwogICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7Cn0KCi8qIEVuc3VyZSBpbmFjdGl2ZSBidXR0b25zIGFyZSBjbGVhcmx5IGRpZmZlcmVudCAqLwoudmlldy10b2dnbGUtYnRuOm5vdCguYWN0aXZlKSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1idXR0b24tYmcpICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcikgIWltcG9ydGFudDsKICAgIG9wYWNpdHk6IDAuNyAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSBhY3RpdmUgc3RhdGUgdG8gYmUgdmlzaWJsZSAtIHVzaW5nIGhhcmRjb2RlZCBjb2xvcnMgKi8KI2NvZGVUb2dnbGUuYWN0aXZlLAojcHJldmlld1RvZ2dsZS5hY3RpdmUgewogICAgYmFja2dyb3VuZDogIzRhOTBlMiAhaW1wb3J0YW50OwogICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IDJweCBzb2xpZCAjNGE5MGUyICFpbXBvcnRhbnQ7Cn0KCi8qIEZvcmNlIGluYWN0aXZlIHN0YXRlIHRvIGJlIHZpc2libGUgLSB1c2luZyBoYXJkY29kZWQgY29sb3JzICovCiNjb2RlVG9nZ2xlOm5vdCguYWN0aXZlKSwKI3ByZXZpZXdUb2dnbGU6bm90KC5hY3RpdmUpIHsKICAgIGJhY2tncm91bmQ6ICM0MDQwNDAgIWltcG9ydGFudDsKICAgIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IDJweCBzb2xpZCAjNDA0MDQwICFpbXBvcnRhbnQ7Cn0KLnNhbmRwYWNrLXdyYXBwZXIgLnNhbmRwYWNrLWNvbnRhaW5lciB7CiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDQ3cHgpOyAvKiBTdWJ0cmFjdCB0b2dnbGUgYnV0dG9uIGhlaWdodCAqLwogICAgZmxleDogMTsKfQoKLyogU2FuZHBhY2sgRml4ZXMgLSBIaWRlIGR1cGxpY2F0ZSBpbnB1dHMgYW5kIGZpeCBwcmV2aWV3ICovCi5zcC1jLWJ4ZVJSdC5zcC1jLWdNZmNucyB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQouc3Atd3JhcHBlciwgLnNwLWxheW91dCB7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyB9Ci5zcC1sYXlvdXQgeyBtaW4taGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0KLnNhbmRwYWNrLWNvbnRhaW5lciAqIHsgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OyB9Ci5zYW5kcGFjay1jb250YWluZXIgPiAqIHsgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50OyB9CgovKiBIaWRlIEFMTCBwb3NzaWJsZSBpbnB1dCBlbGVtZW50cyBpbiBTYW5kcGFjayAqLwouc3AtY29uc29sZSwgLnNwLWNvbnNvbGUtd3JhcHBlciwgLnNwLWNvbnNvbGUtY29udGFpbmVyLAouc3AtdGVybWluYWwsIC5zcC10ZXJtaW5hbC13cmFwcGVyLCAuc3AtdGVybWluYWwtY29udGFpbmVyLAouc3AtaW5wdXQsIC5zcC1pbnB1dC13cmFwcGVyLCAuc3AtaW5wdXQtY29udGFpbmVyLAouc3AtcnVuLWJ1dHRvbiwgLnNwLXJ1bi13cmFwcGVyLCAuc3AtcnVuLWNvbnRhaW5lciwKLnNwLWdlbmVyYXRlLWJ1dHRvbiwgLnNwLWdlbmVyYXRlLXdyYXBwZXIsIC5zcC1nZW5lcmF0ZS1jb250YWluZXIsCi5zcC1idXR0b24sIC5zcC1idXR0b24td3JhcHBlciwgLnNwLWJ1dHRvbi1jb250YWluZXIsCi5zcC1hY3Rpb24sIC5zcC1hY3Rpb24td3JhcHBlciwgLnNwLWFjdGlvbi1jb250YWluZXIsCi5zcC10b29sYmFyLCAuc3AtdG9vbGJhci13cmFwcGVyLCAuc3AtdG9vbGJhci1jb250YWluZXIsCi5zcC1jb250cm9scywgLnNwLWNvbnRyb2xzLXdyYXBwZXIsIC5zcC1jb250cm9scy1jb250YWluZXIsCltjbGFzcyo9InNwLWNvbnNvbGUiXSwgW2NsYXNzKj0ic3AtdGVybWluYWwiXSwgW2NsYXNzKj0ic3AtaW5wdXQiXSwKW2NsYXNzKj0ic3AtcnVuIl0sIFtjbGFzcyo9InNwLWdlbmVyYXRlIl0sIFtjbGFzcyo9InNwLWJ1dHRvbiJdLApbY2xhc3MqPSJzcC1hY3Rpb24iXSwgW2NsYXNzKj0ic3AtdG9vbGJhciJdLCBbY2xhc3MqPSJzcC1jb250cm9scyJdIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCi8qIEhpZGUgYW55IHJlbWFpbmluZyBpbnB1dCBlbGVtZW50cyAqLwouc3Atd3JhcHBlciBpbnB1dFt0eXBlPSJ0ZXh0Il0sCi5zcC13cmFwcGVyIGlucHV0W3R5cGU9InRleHRhcmVhIl0sCi5zcC13cmFwcGVyIHRleHRhcmVhLAouc3Atd3JhcHBlciAuaW5wdXQtZmllbGQsCi5zcC13cmFwcGVyIC5wcm9tcHQtaW5wdXQsCi5zcC13cmFwcGVyIC5nZW5lcmF0ZS1pbnB1dCwKLnNwLXdyYXBwZXIgYnV0dG9uW3R5cGU9InN1Ym1pdCJdLAouc3Atd3JhcHBlciAuc3VibWl0LWJ1dHRvbiwKLnNwLXdyYXBwZXIgLnJ1bi1idXR0b24sCi5zcC13cmFwcGVyIC5nZW5lcmF0ZS1idXR0b24gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgIHdpZHRoOiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKfQoKLyogUmVtb3ZlIGFsbCBzcGFjaW5nIGZyb20gU2FuZHBhY2sgZWxlbWVudHMgKi8KLnNwLXdyYXBwZXIgKiB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGdhcDogMCAhaW1wb3J0YW50Owp9Cgouc3AtbGF5b3V0ICogewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBnYXA6IDAgIWltcG9ydGFudDsKfQoKLyogRW5zdXJlIG5vIGVtcHR5IHNwYWNlIGFib3ZlIGNvZGUgKi8KLnNwLWVkaXRvciAuc3AtZWRpdG9yLWNvbnRlbnQsCi5zcC1jb2RlLWVkaXRvciAuc3AtZWRpdG9yLWNvbnRlbnQgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKfQoKLnNwLWVkaXRvciAuY20tZWRpdG9yLAouc3AtY29kZS1lZGl0b3IgLmNtLWVkaXRvciB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBTYW5kcGFjayBQcmV2aWV3L0NvZGUgTW9kZSBUb2dnbGluZyAqLwoucHJldmlldy1tb2RlIFtjbGFzcyo9InNwLWNvZGUiXSwKLnByZXZpZXctbW9kZSBbY2xhc3MqPSJzcC1lZGl0b3IiXSwKLnByZXZpZXctbW9kZSBbY2xhc3MqPSJzcC1maWxlIl0sCi5wcmV2aWV3LW1vZGUgW2NsYXNzKj0ic3AtdGFiIl0sCi5wcmV2aWV3LW1vZGUgW2NsYXNzKj0iZWRpdG9yIl0sCi5wcmV2aWV3LW1vZGUgW2NsYXNzKj0iY20tIl0sCi5wcmV2aWV3LW1vZGUgW2NsYXNzKj0ibW9uYWNvIl0sCi5wcmV2aWV3LW1vZGUgW2NsYXNzKj0ic3AtY29uc29sZSJdLAoucHJldmlldy1tb2RlIFtjbGFzcyo9InNwLXRlcm1pbmFsIl0sCi5wcmV2aWV3LW1vZGUgW2NsYXNzKj0ic3AtaW5wdXQiXSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnByZXZpZXctbW9kZSBpZnJhbWUsIC5wcmV2aWV3LW1vZGUgW2NsYXNzKj0icHJldmlldyJdIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgcG9pbnRlci1ldmVudHM6IGFsbCAhaW1wb3J0YW50OyBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsgei1pbmRleDogMSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6IHdoaXRlOyBjdXJzb3I6IGRlZmF1bHQgIWltcG9ydGFudDsKfQoKLyogQ29kZSBtb2RlIC0gc2hvdyBlZGl0b3IsIGhpZGUgcHJldmlldyAqLwouY29kZS1tb2RlIFtjbGFzcyo9InByZXZpZXciXSwKLmNvZGUtbW9kZSBpZnJhbWUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Ci5jb2RlLW1vZGUgW2NsYXNzKj0ic3AtY29kZSJdLAouY29kZS1tb2RlIFtjbGFzcyo9InNwLWVkaXRvciJdLAouY29kZS1tb2RlIFtjbGFzcyo9InNwLWZpbGUiXSwKLmNvZGUtbW9kZSBbY2xhc3MqPSJzcC10YWIiXSwKLmNvZGUtbW9kZSBbY2xhc3MqPSJlZGl0b3IiXSwKLmNvZGUtbW9kZSBbY2xhc3MqPSJjbS0iXSwKLmNvZGUtbW9kZSBbY2xhc3MqPSJtb25hY28iXSB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSBjb2RlIGVkaXRvciB0byBzaG93IGFjdHVhbCBjb2RlLCBub3QgcHJldmlldyAqLwouc2FuZHBhY2stY29udGFpbmVyOm5vdCgucHJldmlldy1tb2RlKSBbY2xhc3MqPSJzcC1sYXlvdXQiXSB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7Cn0KLnNhbmRwYWNrLWNvbnRhaW5lcjpub3QoLnByZXZpZXctbW9kZSkgW2NsYXNzKj0ic3AtZWRpdG9yIl0gewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQouc2FuZHBhY2stY29udGFpbmVyOm5vdCgucHJldmlldy1tb2RlKSBpZnJhbWUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Ci5wcmV2aWV3LW1vZGUgW2NsYXNzKj0ib3ZlcmxheSJdLCAucHJldmlldy1tb2RlIFtjbGFzcyo9ImxvYWRpbmciXSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQoucHJldmlldy1tb2RlIFtjbGFzcyo9InByZXZpZXciXSB7IG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsgfQoucHJldmlldy1tb2RlIGlmcmFtZSB7IG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7IG1pbi1oZWlnaHQ6IDUwMHB4ICFpbXBvcnRhbnQ7IH0KCi8qIE1pc2MgJiBBbmltYXRlZCBFbGVtZW50cyAqLwouZmlsZS11cGRhdGVkIHsgYW5pbWF0aW9uOiBmaWxlVXBkYXRlIDFzIGVhc2UtaW4tb3V0OyB9CkBrZXlmcmFtZXMgZmlsZVVwZGF0ZSB7IDAlIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7IH0gNTAlIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7IH0gMTAwJSB7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9IH0KCiN1c2VyQ291bnQgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7IHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7IGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7IH0KI3VzZXJDb3VudC5jb3VudGluZyB7IGFuaW1hdGlvbjogY291bnRQdWxzZSAwLjFzIGVhc2UtaW4tb3V0OyB9CkBrZXlmcmFtZXMgY291bnRQdWxzZSB7IDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfSA1MCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpOyB9IDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9IH0KLmZsZXgtbGdlZ2EgeyBkaXNwbGF5OiBmbGV4OyB9CgovKiBNb2JpbGUgdmlldyB0b2dnbGUgYnV0dG9uICovCi50b2dnbGUtdmlldy1idG4gewogICAgZGlzcGxheTogbm9uZTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1jb2xvcik7CiAgICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIG1pbi13aWR0aDogMTIwcHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLnRvZ2dsZS12aWV3LWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6ICMzNTdhYmQ7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsgfQoudG9nZ2xlLXZpZXctYnRuOmFjdGl2ZSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxcHgpOyB9CgovKiBMb3ZlZCBieSBEZXZlbG9wZXJzIFNlY3Rpb24gKi8KLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiB7CiAgICBtYXJnaW46IDZyZW0gYXV0byA0cmVtOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICBwYWRkaW5nOiAwIDJyZW07Cn0KCi5sb3ZlZC10aXRsZSB7CiAgICBmb250LXNpemU6IDIuNXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07Cn0KCi5sb3ZlZC1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgbWF4LXdpZHRoOiA2MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgovKiBUZXN0aW1vbmlhbCBDb250YWluZXIgKi8KLnRlc3RpbW9uaWFsLWNvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBtYXgtd2lkdGg6IDgwMHB4OwogICAgbWFyZ2luOiAwIGF1dG8gNHJlbTsKICAgIG1pbi1oZWlnaHQ6IDQwMHB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQoKLnRlc3RpbW9uaWFsLW5hdiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHdpZHRoOiA1MHB4OwogICAgaGVpZ2h0OiA1MHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBjb2xvcjogd2hpdGU7CiAgICBmb250LXNpemU6IDEuMnJlbTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICB6LWluZGV4OiAxMDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwp9CgoudGVzdGltb25pYWwtbmF2OmhvdmVyIHsKICAgIGJhY2tncm91bmQ6ICMzYTdiYzg7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMS4xKTsKICAgIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCk7Cn0KCi50ZXN0aW1vbmlhbC1uYXYucHJldi1idG4gewogICAgbGVmdDogLTI1cHg7Cn0KCi50ZXN0aW1vbmlhbC1uYXYubmV4dC1idG4gewogICAgcmlnaHQ6IC0yNXB4Owp9CgovKiBUZXN0aW1vbmlhbCBDYXJkICovCi50ZXN0aW1vbmlhbC1jYXJkIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDMwLCAzMCwgMC45KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICBwYWRkaW5nOiAyLjVyZW07CiAgICBtYXgtd2lkdGg6IDcwMHB4OwogICAgbWFyZ2luOiAwIGF1dG87CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLnRlc3RpbW9uaWFsLWNhcmQuYWN0aXZlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KCi50ZXN0aW1vbmlhbC1oZWFkZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDFyZW07CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07Cn0KCi50ZXN0aW1vbmlhbC1hdmF0YXIgewogICAgd2lkdGg6IDUwcHg7CiAgICBoZWlnaHQ6IDUwcHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYm9yZGVyOiAycHggc29saWQgcmdiYSg0MiwgNjUsIDIzMSwgMC40KTsKICAgIGZsZXgtc2hyaW5rOiAwOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoudGVzdGltb25pYWwtYXZhdGFyOjphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTJweDsKICAgIHJpZ2h0OiAtMnB4OwogICAgd2lkdGg6IDE2cHg7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBiYWNrZ3JvdW5kOiAjMkE0MUU3OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgzMCwgMzAsIDMwLCAwLjkpOwp9CgouYXZhdGFyLWltZyB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIG9iamVjdC1maXQ6IGNvdmVyOwp9CgoudGVzdGltb25pYWwtcmF0aW5nIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDAuMnJlbTsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwp9Cgouc3RhciB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiAjRkZENzAwOwp9CgoudGVzdGltb25pYWwtcXVvdGUgewogICAgZm9udC1zaXplOiAxLjJyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwogICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIG1hcmdpbjogMCAwIDJyZW0gMDsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi50ZXN0aW1vbmlhbC1hdXRob3IgewogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLnRlc3RpbW9uaWFsLWF1dGhvci1uYW1lIHsKICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiAjZmZmZmZmOwp9CgoudGVzdGltb25pYWwtYXV0aG9yLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7Cn0KCi50ZXN0aW1vbmlhbC1hdXRob3ItY29tcGFueSB7CiAgICBmb250LXNpemU6IDAuOXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7Cn0KCi8qIEF1dGhvciBpbmZvcm1hdGlvbiBzdHlsaW5nICovCi5hdXRob3ItbmFtZSB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbjogMDsKfQoKLmF1dGhvci1yb2xlIHsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW46IDA7Cn0KCi5hdXRob3ItY29tcGFueSB7CiAgICBmb250LXNpemU6IDAuOXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7CiAgICBtYXJnaW46IDA7Cn0KCi8qIFRlc3RpbW9uaWFsIERvdHMgKi8KLnRlc3RpbW9uaWFsLWRvdHMgewogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZ2FwOiAwLjc1cmVtOwogICAgbWFyZ2luLWJvdHRvbTogNHJlbTsKfQoKLnRlc3RpbW9uaWFsLWRvdHMgLmRvdCB7CiAgICB3aWR0aDogMTBweDsKICAgIGhlaWdodDogMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi50ZXN0aW1vbmlhbC1kb3RzIC5kb3QuYWN0aXZlIHsKICAgIGJhY2tncm91bmQ6ICMyQTQxRTc7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMyk7Cn0KCi50ZXN0aW1vbmlhbC1kb3RzIC5kb3Q6aG92ZXIgewogICAgYmFja2dyb3VuZDogcmdiYSg0MiwgNjUsIDIzMSwgMC42KTsKfQoKLyogRGV2ZWxvcGVyIFN0YXRzICovCi5kZXZlbG9wZXItc3RhdHMgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpOwogICAgZ2FwOiAycmVtOwogICAgbWFyZ2luOiA0cmVtIDA7CiAgICBtYXgtd2lkdGg6IDgwMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi5zdGF0cy1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOwogICAgZ2FwOiAycmVtOwogICAgbWFyZ2luLXRvcDogM3JlbTsKICAgIHBhZGRpbmctdG9wOiAycmVtOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKfQoKLnN0YXQtaXRlbSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5zdGF0LWl0ZW0tb2xkIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxcmVtOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBwYWRkaW5nOiAxLjVyZW07CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9Cgouc3RhdC1pdGVtOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7Cn0KCi5zdGF0LWljb24gewogICAgd2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBjb2xvcjogd2hpdGU7CiAgICBmb250LXNpemU6IDEuMnJlbTsKICAgIGZsZXgtc2hyaW5rOiAwOwp9Cgouc3RhdC1jb250ZW50IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9Cgouc3RhdC1udW1iZXIgewogICAgZm9udC1zaXplOiAyLjJyZW07CiAgICBmb250LXdlaWdodDogNzAwOwogICAgY29sb3I6ICMyQTQxRTc7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07Cn0KCi5zdGF0LWxhYmVsIHsKICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KCi8qIFJlYWR5IHRvIENvZGUgRmFzdGVyIFNlY3Rpb24gKi8KLnJlYWR5LXRvLWNvZGUtc2VjdGlvbiB7CiAgICBtYXJnaW46IDRyZW0gYXV0byA0cmVtOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWF4LXdpZHRoOiA4MDBweDsKICAgIHBhZGRpbmc6IDNyZW0gMnJlbTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpIDAlLCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4wNSkgNTAlLCByZ2JhKDAsIDAsIDAsIDAuMSkgMTAwJSk7CiAgICBib3JkZXItcmFkaXVzOiAyNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgoucmVhZHktdG8tY29kZS1zZWN0aW9uOjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAwJSwgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMTUpIDAlLCB0cmFuc3BhcmVudCA1MCUpOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5jdGEtdGl0bGUgewogICAgZm9udC1zaXplOiAzcmVtOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBnYXA6IDFyZW07Cn0KCi5jdGEtaWNvbiB7CiAgICBmb250LXNpemU6IDJyZW07CiAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7Cn0KCi5jdGEtc3VidGl0bGUgewogICAgZm9udC1zaXplOiAxLjJyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgbWFyZ2luLWJvdHRvbTogM3JlbTsKICAgIG1heC13aWR0aDogNjAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7Cn0KCi5mZWF0dXJlcy1jaGVja2xpc3QgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7CiAgICBnYXA6IDEuNXJlbTsKICAgIG1hcmdpbi1ib3R0b206IDRyZW07CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKfQoKLmZlYXR1cmUtaXRlbSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMC43NXJlbTsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBwYWRkaW5nOiAwLjc1cmVtIDA7Cn0KCi5mZWF0dXJlLWNoZWNrIHsKICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgZmxleC1zaHJpbms6IDA7Cn0KCi5mZWF0dXJlLXRleHQgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKfQoKLmN0YS1idXR0b25zIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDFyZW07CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgZmxleC13cmFwOiB3cmFwOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKfQoKLmN0YS1wcmltYXJ5LWJ0biB7CiAgICBiYWNrZ3JvdW5kOiAjMkE0MUU3OwogICAgY29sb3I6IHdoaXRlOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgIHBhZGRpbmc6IDFyZW0gMnJlbTsKICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMC41cmVtOwogICAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKfQoKLmN0YS1wcmltYXJ5LWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAjM2E3YmM4OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgYm94LXNoYWRvdzogMCAxMnB4IDM1cHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCk7Cn0KCi5jdGEtc2Vjb25kYXJ5LWJ0biB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgcGFkZGluZzogMXJlbSAycmVtOwogICAgZm9udC1zaXplOiAxLjFyZW07CiAgICBmb250LXdlaWdodDogNTAwOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKfQoKLmN0YS1zZWNvbmRhcnktYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpOwogICAgY29sb3I6IHdoaXRlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwp9CgoudHJ1c3RlZC1ieSB7CiAgICBtYXJnaW4tdG9wOiA0cmVtOwogICAgcGFkZGluZy10b3A6IDNyZW07CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwp9CgoudHJ1c3RlZC1ieS10ZXh0IHsKICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTsKICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKfQoKLmNvbXBhbnktbG9nb3MgewogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMnJlbTsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIG9wYWNpdHk6IDAuNzsKfQoKLmNvbXBhbnktbG9nbyB7CiAgICBmb250LXNpemU6IDFyZW07CiAgICBmb250LXdlaWdodDogNTAwOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBjdXJzb3I6IGRlZmF1bHQ7Cn0KCi5jb21wYW55LWxvZ286aG92ZXIgewogICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwp9CgouY29tcGFueS1uYW1lIHsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLmNvbXBhbnktbmFtZTpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7Cn0KCi8qIFBvd2VyZWQgYnkgV3JpdGVjcmVhbSBzdHlsaW5nIC0gWWVsbG93IGdyYWRpZW50IGFuaW1hdGlvbiAqLwoud3JpdGVjcmVhbS1oaWdobGlnaHQgewogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCAjRkZENzAwLCAjRkZBNTAwLCAjRkZENzAwLCAjRkZGRjAwLCAjRkZENzAwKTsKICAgIGJhY2tncm91bmQtc2l6ZTogNDAwJSA0MDAlOwogICAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBhbmltYXRpb246IHllbGxvd0dyYWRpZW50RmxvdyAzcyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCkBrZXlmcmFtZXMgeWVsbG93R3JhZGllbnRGbG93IHsKICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgNTAlOyB9CiAgICAyNSUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDUwJTsgfQogICAgNTAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxMDAlOyB9CiAgICA3NSUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAxMDAlOyB9CiAgICAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgNTAlOyB9Cn0KCiN1c2VyQ291bnQgewogICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOyAvKiBCbHVlIGNvbG9yIGZvciB0aGUgdXNlciBjb3VudCAqLwogICAgZm9udC13ZWlnaHQ6IDcwMDsKfQoKLyogRGVza3RvcCB2aWV3ICg+PSA3NjhweCkgKi8KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CiAgICAgICAgLyogaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCkgIWltcG9ydGFudDsgKi8KICAgICAgICBtaW4taGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuY2hhdC1pbnRlcmZhY2UgewogICAgICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDsKICAgICAgICBoZWlnaHQ6IDkwJSAhaW1wb3J0YW50OwogICAgICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICBtYXgtaGVpZ2h0OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKSAhaW1wb3J0YW50OwogICAgICAgIG9yZGVyOiBpbml0aWFsICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuc2FuZHBhY2std3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDUwJSAhaW1wb3J0YW50OwogICAgICAgIGhlaWdodDogOTAlICFpbXBvcnRhbnQ7CiAgICAgICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIG9yZGVyOiBpbml0aWFsICFpbXBvcnRhbnQ7CiAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgfQoKfQoKLyogR2xvYmFsIHN0eWxlcyBmb3IgYWxsIHNlY3Rpb24gc3VidGl0bGVzIC0gZW5zdXJlIGNlbnRlcmluZyAqLwouaG93LWl0LXdvcmtzLXN1YnRpdGxlLAouZW5kbGVzcy1zdWJ0aXRsZSwKLmFjdGlvbi1zdWJ0aXRsZSwKLm1vcmUtc3VidGl0bGUsCi5sb3ZlZC1zdWJ0aXRsZSwKLmN0YS1zdWJ0aXRsZSB7CiAgICBtYXgtd2lkdGg6IDcwMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50Owp9CgovKiBHbG9iYWwgc3R5bGVzIGZvciBhbGwgc2VjdGlvbiB0aXRsZXMgLSBlbnN1cmUgY2VudGVyaW5nICovCi5ob3ctaXQtd29ya3MtdGl0bGUsCi5lbmRsZXNzLXRpdGxlLAouYWN0aW9uLXRpdGxlLAoubW9yZS10aXRsZSwKLmxvdmVkLXRpdGxlLAouY3RhLXRpdGxlIHsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi8qIFRhYmxldCBhbmQgc21hbGxlciAoPD0gNzY3cHgpICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogICAgLmNvbnRhaW5lciB7IG1heC13aWR0aDogOTV2dzsgfQogICAgLmhlcm8tdGl0bGUgeyBmb250LXNpemU6IDJyZW07IH0KICAgIC5oZXJvLXN1YnRpdGxlIHsgZm9udC1zaXplOiAxLjFyZW07IH0KICAgIC5mZWF0dXJlcy1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IGdhcDogMS41cmVtOyB9CiAgICAuaG93LWl0LXdvcmtzLXNlY3Rpb24sIC5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiwgLnNlZS1pdC1pbi1hY3Rpb24tc2VjdGlvbiwgLm1vcmUtY2FwYWJpbGl0aWVzLXNlY3Rpb24sIC5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24sIC5yZWFkeS10by1jb2RlLXNlY3Rpb24geyBtYXJnaW46IDRyZW0gYXV0byAzcmVtOyBwYWRkaW5nOiAwIDFyZW07IH0KICAgIC5ob3ctaXQtd29ya3MtdGl0bGUsIC5lbmRsZXNzLXRpdGxlLCAuYWN0aW9uLXRpdGxlLCAubG92ZWQtdGl0bGUgeyBmb250LXNpemU6IDJyZW07IH0KICAgIAogICAgLyogTW9iaWxlIFF1YWxpdHkgU2VsZWN0b3IgSW1wcm92ZW1lbnRzICovCiAgICAucXVhbGl0eS1zZWxlY3RvciB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHggIWltcG9ydGFudDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgIH0KICAgIAogICAgLnF1YWxpdHktZHJvcGRvd24gewogICAgICAgIHBhZGRpbmc6IDZweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICBtaW4td2lkdGg6IDU1cHggIWltcG9ydGFudDsKICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIG1heC13aWR0aDogNjBweCAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweCAhaW1wb3J0YW50OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGNsaXAgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLnF1YWxpdHktZHJvcGRvd24gb3B0aW9uIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweCAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAucXVhbGl0eS10b29sdGlwIHsKICAgICAgICBtYXJnaW4tbGVmdDogNHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC50b29sdGlwLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDsKICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDsKICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5pbnB1dC1jb250cm9scy1yb3cgewogICAgICAgIGdhcDogNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogNnB4IDhweCAhaW1wb3J0YW50OwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5nZW5lcmF0ZS1jb2RlLWJ0biB7CiAgICAgICAgcGFkZGluZzogMC42cmVtIDFyZW0gIWltcG9ydGFudDsKICAgICAgICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweCAhaW1wb3J0YW50OwogICAgICAgIG1heC13aWR0aDogMTQwcHggIWltcG9ydGFudDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7CiAgICAgICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICAgIH0KICAgIC5zdGVwcy1jb250YWluZXIgeyAKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7IAogICAgICAgIGdhcDogMXJlbSAhaW1wb3J0YW50OyAKICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbSAhaW1wb3J0YW50OwogICAgfQogICAgLnN0ZXAtYXJyb3cgeyB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykgIWltcG9ydGFudDsgfQogICAgLnN0ZXAtY2FyZCB7IAogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OyAKICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAKICAgICAgICBtaW4td2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAxLjVyZW0gMXJlbSAhaW1wb3J0YW50OwogICAgfQogICAgLnBvc3NpYmlsaXRpZXMtZ3JpZCwgLmNhcGFiaWxpdGllcy1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IGdhcDogMS41cmVtOyB9CiAgICAucG9wdWxhci1wcm9tcHRzLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfQogICAgLmRlbW8tdGFicyB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1heC13aWR0aDogMjAwcHg7IH0KICAgIC5kZW1vLXRhYiB7IHdpZHRoOiAxMDAlOyB9CiAgICAubW9yZS10aXRsZSwgLmN0YS10aXRsZSB7IGZvbnQtc2l6ZTogMi4ycmVtOyB9CiAgICAudGVzdGltb25pYWwtY29udGFpbmVyIHsgCiAgICAgICAgbWluLWhlaWdodDogMzUwcHg7IAogICAgICAgIHBhZGRpbmc6IDAgMXJlbTsgCiAgICAgICAgbWFyZ2luOiAwIGF1dG8gMnJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLW5hdiB7IAogICAgICAgIHdpZHRoOiA0MHB4OyAKICAgICAgICBoZWlnaHQ6IDQwcHg7IAogICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLW5hdi5wcmV2LWJ0biB7CiAgICAgICAgbGVmdDogMTBweDsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLW5hdi5uZXh0LWJ0biB7CiAgICAgICAgcmlnaHQ6IDEwcHg7CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1jYXJkIHsKICAgICAgICBwYWRkaW5nOiAxLjVyZW07CiAgICAgICAgbWFyZ2luOiAwIDEwcHg7CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1oZWFkZXIgeyAKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyAKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IAogICAgICAgIGdhcDogMC41cmVtOwogICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1hdmF0YXIgewogICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLXJhdGluZyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1xdW90ZSB7IAogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgCiAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLWF1dGhvciB7IAogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgCiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1kb3RzIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtOwogICAgfQogICAgCiAgICAvKiBBZGRpdGlvbmFsIG1vYmlsZSB0ZXN0aW1vbmlhbCBpbXByb3ZlbWVudHMgKi8KICAgIC5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24gewogICAgICAgIHBhZGRpbmc6IDJyZW0gMXJlbTsKICAgIH0KICAgIAogICAgLmxvdmVkLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDJyZW07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgIH0KICAgIAogICAgLmxvdmVkLXN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICAgIH0KICAgIC5zdGF0cy1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IGdhcDogMnJlbTsgfQogICAgLmZlYXR1cmVzLWNoZWNrbGlzdCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9CiAgICAuY3RhLWJ1dHRvbnMgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9CiAgICAuY3RhLXByaW1hcnktYnRuLCAuY3RhLXNlY29uZGFyeS1idG4geyB3aWR0aDogMTAwJTsgbWF4LXdpZHRoOiAyODBweDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KICAgIC5mb290ZXIgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDEwcHg7IHBhZGRpbmc6IDFyZW0gMC41cmVtOyB9CgogICAgLyogTWFpbiBBcHAgTGF5b3V0IGZvciBNb2JpbGUgKi8KICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjBweDsKICAgIH0KICAgIC5jaGF0LWludGVyZmFjZSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCk7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgIH0KICAgIC5zYW5kcGFjay13cmFwcGVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA2MHB4KTsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQogICAgLyogSGVhZGVyIE1vYmlsZSBSZXNwb25zaXZlIFN0eWxlcyAqLwogICAgLmhlYWRlciB7CiAgICAgICAgcGFkZGluZzogMC43NXJlbSAwICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVhZGVyLWZsZXggewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHBhZGRpbmc6IDAgMTBweCAhaW1wb3J0YW50OwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIAogICAgLmxvZ28tZ3JvdXAgewogICAgICAgIHBhZGRpbmc6IDVweCA4cHggIWltcG9ydGFudDsKICAgICAgICBnYXA6IDZweCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICB9CiAgICAKICAgIC5sb2dvLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgZm9udC1mYW1pbHk6ICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTFweDsKICAgIH0KICAgIAogICAgLmxvZ28tdGV4dCB7CiAgICAgICAgZm9udC1zaXplOiAxLjFyZW0gIWltcG9ydGFudDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgfQogICAgCiAgICAuaGVhZGVyLXJpZ2h0IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgICAgICByaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDZweCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDRweCA2cHggIWltcG9ydGFudDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIG1pbi13aWR0aDogMDsKICAgIH0KICAgIAogICAgLnRvZ2dsZS12aWV3LWJ0biB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiA2cHggMTBweCAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtc2l6ZTogMTFweCAhaW1wb3J0YW50OwogICAgICAgIG1pbi13aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIG1heC13aWR0aDogOTBweCAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDVweCAhaW1wb3J0YW50OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIH0KICAgIAogICAgLmRvd25sb2FkLWJ0biwKICAgIC5kZXBsb3ktbmV0bGlmeS1idG4sCiAgICAuc2V0LXRva2VuLWJ0biB7CiAgICAgICAgcGFkZGluZzogNnB4IDhweCAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtc2l6ZTogMCAhaW1wb3J0YW50OwogICAgICAgIG1pbi13aWR0aDogMzJweCAhaW1wb3J0YW50OwogICAgICAgIHdpZHRoOiAzMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgaGVpZ2h0OiAzMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5kb3dubG9hZC1idG4gc3Bhbjpub3QoLmRvd25sb2FkLWljb24pLAogICAgLmRlcGxveS1uZXRsaWZ5LWJ0biBzcGFuOm5vdCguZGVwbG95LWljb24pLAogICAgLnNldC10b2tlbi1idG4gc3Bhbjpub3QoLnNldC10b2tlbi1pY29uKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuZG93bmxvYWQtaWNvbiwKICAgIC5kZXBsb3ktaWNvbiwKICAgIC5zZXQtdG9rZW4taWNvbiB7CiAgICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDsKICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDsKICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5kb3dubG9hZC1pY29uIHN2ZywKICAgIC5kZXBsb3ktaWNvbiBzdmcsCiAgICAuc2V0LXRva2VuLWljb24gc3ZnIHsKICAgICAgICB3aWR0aDogMThweCAhaW1wb3J0YW50OwogICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuZ2l0aHViLWJ0biB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBWZXJ5IHNtYWxsIHNjcmVlbnMgKGJlbG93IDQ4MHB4KSAqLwogICAgQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7CiAgICAgICAgLmhlYWRlci1mbGV4IHsKICAgICAgICAgICAgcGFkZGluZzogMCA4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEV4dHJhIHNtYWxsIG1vYmlsZSBxdWFsaXR5IHNlbGVjdG9yICovCiAgICAgICAgLnF1YWxpdHktZHJvcGRvd24gewogICAgICAgICAgICBwYWRkaW5nOiA2cHggOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4td2lkdGg6IDUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1NXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnF1YWxpdHktZHJvcGRvd24gb3B0aW9uIHsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnRvb2x0aXAtaWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTZweCAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6IDE2cHggIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmdlbmVyYXRlLWNvZGUtYnRuIHsKICAgICAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjg1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5pbnB1dC1jb250cm9scy1yb3cgewogICAgICAgICAgICBnYXA6IDRweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiA1cHggNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5sb2dvLXRleHQgewogICAgICAgICAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmxvZ28taWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAudG9nZ2xlLXZpZXctYnRuIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDVweCA4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA3NXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5oZWFkZXItcmlnaHQgewogICAgICAgICAgICBnYXA6IDRweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAzcHggNHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5kb3dubG9hZC1idG4sCiAgICAgICAgLmRlcGxveS1uZXRsaWZ5LWJ0biwKICAgICAgICAuc2V0LXRva2VuLWJ0biB7CiAgICAgICAgICAgIG1pbi13aWR0aDogMjhweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMjhweCAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6IDI4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogNHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5kb3dubG9hZC1pY29uLAogICAgICAgIC5kZXBsb3ktaWNvbiwKICAgICAgICAuc2V0LXRva2VuLWljb24gewogICAgICAgICAgICB3aWR0aDogMTZweCAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6IDE2cHggIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmRvd25sb2FkLWljb24gc3ZnLAogICAgICAgIC5kZXBsb3ktaWNvbiBzdmcsCiAgICAgICAgLnNldC10b2tlbi1pY29uIHN2ZyB7CiAgICAgICAgICAgIHdpZHRoOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGhlaWdodDogMTZweCAhaW1wb3J0YW50OwogICAgICAgIH0KICAgIH0KICAgIAogICAgLyogVGFibGV0IHNjcmVlbnMgKDQ4MXB4IHRvIDc2OHB4KSAqLwogICAgQG1lZGlhIChtaW4td2lkdGg6IDQ4MXB4KSBhbmQgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAuaGVhZGVyLWZsZXggewogICAgICAgICAgICBwYWRkaW5nOiAwIDE1cHggIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnRvZ2dsZS12aWV3LWJ0biB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiA2cHggMTJweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5oZWFkZXItcmlnaHQgewogICAgICAgICAgICBnYXA6IDhweCAhaW1wb3J0YW50OwogICAgICAgIH0KICAgIH0KICAgIAogICAgLyogRW5zdXJlIGhlYWRlciBkb2Vzbid0IG92ZXJmbG93IG9uIG1vYmlsZSB3aGVuIGFwcCBpcyBhY3RpdmUgKi8KICAgIGJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyIHsKICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy10b3A6IDAuNzVyZW0gIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIFByZXZlbnQgaG9yaXpvbnRhbCBvdmVyZmxvdyBvbiBtb2JpbGUgKi8KICAgIGJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyLWZsZXggewogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgIH0KICAgIAogICAgYm9keS5hcHAtYWN0aXZlIC5oZWFkZXItcmlnaHQgewogICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMTIwcHgpOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CiAgICAKICAgIC8qIE1vYmlsZSBzcGFjaW5nIGZpeGVzICovCiAgICAucG93ZXJlZC1waWxsIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTVweCAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogMTBweCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzMHB4KSAhaW1wb3J0YW50OwogICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgIHBhZGRpbmctbGVmdDogMTVweCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgICNsYW5kaW5nU2VjdGlvbiAucG93ZXJlZC1waWxsIHsKICAgICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5jaGF0LWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMTBweCA4cHg7CiAgICB9CiAgICAuY2hhdC1tZXNzYWdlcyB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA3MHB4KTsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5jaGF0LWlucHV0LXNlY3Rpb24gewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICBib3R0b206IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwOwogICAgICAgIHotaW5kZXg6IDEwMDsKICAgIH0KICAgIC52aWV3LXRvZ2dsZS1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHotaW5kZXg6IDEwOwogICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICAgIH0KfQogICAgPC9zdHlsZT4KPC9oZWFkPgoKPGJvZHk+CiAgICA8aGVhZGVyIGNsYXNzPSJoZWFkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBoZWFkZXItZmxleCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28tZ3JvdXAiIG9uY2xpY2s9ImdvVG9Ib21lcGFnZSgpIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsb2dvLWljb24iPjwvPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsb2dvLXRleHQiPkdhbWVab25lIFBybzwvc3Bhbj4gCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItcmlnaHQiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iZGVwbG95QnRuIiBjbGFzcz0iZGVwbG95LW5ldGxpZnktYnRuIiB0aXRsZT0iRGVwbG95IHRvIE5ldGxpZnkiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIKICAgICAgICAgICAgICAgICAgICBvbmNsaWNrPSJkZXBsb3lUb05ldGxpZnkoKSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRlcGxveS1pY29uIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Im0yODAtMjgwIDIwMC0yMDAgMjAwIDIwMEgyODBabTIwMC0yNDBMMjgwLTcyMGg0MDBMNDgwLTUyMFoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPkRlcGxveSB0byBOZXRsaWZ5PC9zcGFuPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJzZXROZXRsaWZ5VG9rZW5CdG4iIGNsYXNzPSJzZXQtdG9rZW4tYnRuIiB0aXRsZT0iU2V0IE5ldGxpZnkgVG9rZW4iIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgb25jbGljaz0ic2hvd05ldGxpZnlUb2tlbk1vZGFsKCkiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZXQtdG9rZW4taWNvbiIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjBweCIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00NDAtMjgwaDgwdi0xNjBoMTYwdi04MEg1MjB2LTE2MGgtODB2MTYwSDI4MHY4MGgxNjB2MTYwWm00MCAyMDBxLTgyIDAtMTU1LTMxLjV0LTEyNy41LTg2UTE0My0yNTUgMTExLjUtMzI4VDgwLTQ4MHEwLTgzIDMxLjUtMTU2dDg2LTEyN1EyNTItODE3IDMyNS04NDguNVQ0ODAtODgwcTgzIDAgMTU2IDMxLjVUNzYzLTc2M3E1NCA1NCA4NS41IDEyN1Q4ODAtNDgwcTAgODItMzEuNSAxNTVUNzYzLTE5Ny41cS01NCA1NC41LTEyNyA4NlQ0ODAtODBabTAtODBxMTM0IDAgMjI3LTkzdDkzLTIyN3EwLTEzNC05My0yMjd0LTIyNy05M3EtMTM0IDAtMjI3IDkzdC05MyAyMjdxMCAxMzQgOTMgMjI3dDIyNyA5M1ptMC0zMjBaIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TZXQgVG9rZW48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBpZD0ibmV3Q2hhdEJ0biIgY2xhc3M9Im5ldy1jaGF0LWJ0biIgdGl0bGU9IlN0YXJ0IE5ldyBDaGF0IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiCiAgICAgICAgICAgICAgICAgICAgb25jbGljaz0ic3RhcnROZXdDaGF0KCkiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJuZXctY2hhdC1pY29uIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00NDAtNDQwSDIwMHYtODBoMjQwdi0yNDBoODB2MjQwaDI0MHY4MEg1MjB2MjQwaC04MHYtMjQwWiIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+TmV3IENoYXQ8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJ0b2dnbGVWaWV3QnRuIiBjbGFzcz0idG9nZ2xlLXZpZXctYnRuIj5Td2l0Y2ggdG8gUHJldmlldzwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3dyaXRlY3JlYW0tb3JnL0FpQ29kZXIiIGNsYXNzPSJnaXRodWItYnRuIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+ICAKICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2hlYWRlcj4KCiAgICA8IS0tIExhbmRpbmcgY29udGVudCB0aGF0IHdpbGwgYmUgaGlkZGVuIGFmdGVyIGNoYXQgc3RhcnRzIC0tPgogICAgPGRpdiBpZD0ibGFuZGluZ1NlY3Rpb24iPgogICAgICAgIDxhIGhyZWY9IiMiIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icG93ZXJlZC1waWxsIj4KICAgICAgICAgICAgICAgIDxzcGFuPkludGVyYWN0aXZlIGdhbWluZyBwbGF0Zm9ybSBmb3IgcGxheWVycyB3b3JsZHdpZGUg4oCUIG11bHRpcGxheWVyIGdhbWVzLCByZWFsLXRpbWUgcGxheSwgY3VzdG9tIGdhbWUgbW9kZXMuPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2E+CgogICAgICAgIDxtYWluIGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICA8IS0tIE5ldyBIZXJvIFNlY3Rpb24gbWF0Y2hpbmcgRmlnbWEgZGVzaWduIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZXJvLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5zaWRlLWhlcm8tc2VjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3ZhcmlhbnQxLnBuZyIgYWx0PSJHYW1lWm9uZSBQcm8gSWNvbiIgLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9Imhlcm8tdGl0bGUgIj5JbnRlcmFjdGl2ZSBUdXRvcmlhbHM8L2gxPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9Imhlcm8tdGl0bGUiPkxlYXJuIFRvZ2V0aGVyIGluIFJlYWwtVGltZS48L2gxPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9Imhlcm8tc3VidGl0bGUiPgogICAgICAgICAgICAgICAgICAgIEVuZ2FnaW5nIGludGVyYWN0aXZlIGxlYXJuaW5nIHBsYXRmb3JtIGZvciBzdHVkZW50cyB0byBjcmVhdGUsIGNvbGxhYm9yYXRlLCBhbmQgbWFzdGVyIG5ldyBza2lsbHMgdG9nZXRoZXIgZnJvbSBhbnl3aGVyZS4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJoZXJvLWRlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICAgICAgICBNdWx0aXBsZSBsZWFybmluZyBtb2RlcywgcmVhbC10aW1lIGNvbGxhYm9yYXRpb24sIGN1c3RvbSB0dXRvcmlhbCBjcmVhdGlvbiwgYW5kIGludHVpdGl2ZSBjb250cm9scyDigJQgcGVyZmVjdCBmb3IgbGVhcm5lcnMgYW5kIGVkdWNhdG9ycy4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIEtlZXAgZXhpc3RpbmcgaW5wdXQgc2VjdGlvbiB1bmNoYW5nZWQgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LW91dGVyLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1pbm5lci1jb250YWluZXIgdmVydGljYWwiPgogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz0icHJvbXB0LWlucHV0IiBwbGFjZWhvbGRlcj0iRGVzY3JpYmUgeW91ciB0dXRvcmlhbCBpZGVhIChlLmcuICdJbnRlcmFjdGl2ZSBjb2RpbmcgbGVzc29uIHdpdGggbGl2ZSBleGVyY2lzZXMnKSIgcm93cz0iMSI+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1jb250cm9scy1yb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9ImF0dGFjaC1idG4gc3F1YXJlIiB0aXRsZT0iQXR0YWNoIj48c3Bhbj7wn5OOPC9zcGFuPjwvYnV0dG9uPiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icXVhbGl0eS1zZWxlY3RvciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJxdWFsaXR5U2VsZWN0TGFuZGluZyIgY2xhc3M9InF1YWxpdHktZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InN0YW5kYXJkIj5TUSA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJoaWdoZXIiPkhRPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InF1YWxpdHktdG9vbHRpcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRvb2x0aXAtaWNvbiI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWNpcmNsZS1pbmZvIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2x0aXAtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+U1E6PC9zdHJvbmc+IFF1aWNrIGdlbmVyYXRpb24gd2l0aCBnb29kIHF1YWxpdHk8YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+SFE6PC9zdHJvbmc+IFNsb3cgZ2VuZXJhdGlvbiB3aXRoIGhpZ2ggcXVhbGl0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzdWJtaXQtYnRuIGdlbmVyYXRlLWNvZGUtYnRuIiB0aXRsZT0iU3VibWl0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkNyZWF0ZSBUdXRvcmlhbDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0icXVpY2stYXBwcyI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hcHAtYnRuIj5Db2RpbmcgQmFzaWNzPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hcHAtYnRuIj5NYXRoIExlc3NvbnM8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFwcC1idG4iPkxhbmd1YWdlIExlYXJuaW5nPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hcHAtYnRuIj5TY2llbmNlIERlbW9zPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hcHAtYnRuIj5IaXN0b3J5IFRpbWVsaW5lPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hcHAtYnRuIj5BcnQgVGVjaG5pcXVlczwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPCEtLSBOZXcgRmVhdHVyZSBDYXJkcyBTZWN0aW9uIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlcy1ncmlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3ZhcmlhbnQyLnBuZyIgYWx0PSJUZW1wbGF0ZXMgSWNvbiIgLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImZlYXR1cmUtdGl0bGUiPkxpdmUgTGVhcm5pbmcgU2Vzc2lvbnM8L2gzPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJmZWF0dXJlLWRlc2NyaXB0aW9uIj5MZWFybiB3aXRoIGNsYXNzbWF0ZXMgb3Igam9pbiBzdHVkeSBncm91cHMuIENvbGxhYm9yYXRlIGluIHJlYWwtdGltZSB3aXRoIHN0dWRlbnRzIHdvcmxkd2lkZS48L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3ZhcmlhbnQ1LnBuZyIgYWx0PSJDdXN0b21pemF0aW9uIEljb24iIC8+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJmZWF0dXJlLXRpdGxlIj5JbnN0YW50IFR1dG9yaWFsIENyZWF0aW9uPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZmVhdHVyZS1kZXNjcmlwdGlvbiI+Q3JlYXRlIGN1c3RvbSB0dXRvcmlhbHMgaW4gbWludXRlcy4gRGVzaWduIGxlc3NvbnMsIGV4ZXJjaXNlcywgYW5kIHNoYXJlIHdpdGggc3R1ZGVudHMgaW5zdGFudGx5LjwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsYXp5IiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTAvdmFyaWFudDYucG5nIiBhbHQ9IkRlcGxveSBJY29uIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iZmVhdHVyZS10aXRsZSI+VHV0b3JpYWwgVGVtcGxhdGVzPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZmVhdHVyZS1kZXNjcmlwdGlvbiI+UHJlLWJ1aWx0IHR1dG9yaWFsIHRlbXBsYXRlcywgY3VzdG9taXphYmxlIHRoZW1lcywgcHJvZ3Jlc3MgdHJhY2tpbmcsIGFuZCBhc3Nlc3NtZW50cy4gRXZlcnl0aGluZyB5b3UgbmVlZC48L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIEtlZXAgZXhpc3RpbmcgcXVpY2sgYXBwcyBidXQgc3R5bGUgdGhlbSBiZXR0ZXIgLS0+CgogICAgICAgICAgICA8IS0tIEhvdyBJdCBXb3JrcyBTZWN0aW9uIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3ctaXQtd29ya3Mtc2VjdGlvbiI+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9Imhvdy1pdC13b3Jrcy10aXRsZSI+SG93IEl0IFdvcmtzPC9oMj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJob3ctaXQtd29ya3Mtc3VidGl0bGUiPlN0YXJ0IGNyZWF0aW5nIGludGVyYWN0aXZlIHR1dG9yaWFscyBpbiB0aHJlZSBzaW1wbGUgc3RlcHM8L3A+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcHMtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLW51bWJlciI+MDE8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImxhenkiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB2aWV3Qm94PScwJTIwMCUyMDElMjAxJyUzRSUzQy9zdmclM0UiIGRhdGEtc3JjPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMC92YXJpYW50Ny5wbmciIGFsdD0iQ2hvb3NlIFRlbXBsYXRlIEljb24iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InN0ZXAtdGl0bGUiPkNob29zZSBhIFR1dG9yaWFsPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InN0ZXAtZGVzY3JpcHRpb24iPlN0YXJ0IHdpdGggYSB0dXRvcmlhbCB0ZW1wbGF0ZSBvciBjcmVhdGUgeW91ciBvd24gY3VzdG9tIGxlc3NvbiBmcm9tIHNjcmF0Y2ggd2l0aCBvdXIgZWFzeSBidWlsZGVyLjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1hcnJvdyI+4oaSPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtbnVtYmVyIj4wMjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3ZhcmlhbnQ4LnBuZyIgYWx0PSJDdXN0b21pemUgSWNvbiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0ic3RlcC10aXRsZSI+SW52aXRlIExlYXJuZXJzPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InN0ZXAtZGVzY3JpcHRpb24iPlNoYXJlIGEgdHV0b3JpYWwgbGluayBhbmQgbGVhcm4gdG9nZXRoZXIgaW4gcmVhbC10aW1lLiBFdmVyeW9uZSBjYW4gam9pbiwgcGFydGljaXBhdGUsIGFuZCBncm93LjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1hcnJvdyI+4oaSPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtbnVtYmVyIj4wMzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3ZhcmlhbnQ5LnBuZyIgYWx0PSJMYXVuY2ggSWNvbiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0ic3RlcC10aXRsZSI+TGVhcm4gJiBTaGFyZTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJzdGVwLWRlc2NyaXB0aW9uIj5Qcm9ncmVzcyBpcyBzYXZlZCBhdXRvbWF0aWNhbGx5LiBTaGFyZSB5b3VyIHR1dG9yaWFscyBwdWJsaWNseSBvciBrZWVwIHRoZW0gcHJpdmF0ZSBmb3IgeW91ciBjbGFzcy48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPCEtLSBFbmRsZXNzIFBvc3NpYmlsaXRpZXMgU2VjdGlvbiAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW5kbGVzcy1wb3NzaWJpbGl0aWVzLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJlbmRsZXNzLXRpdGxlIj5UdXRvcmlhbCBDYXRlZ29yaWVzICYgVHlwZXM8L2gyPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImVuZGxlc3Mtc3VidGl0bGUiPlByZS1idWlsdCB0dXRvcmlhbCB0ZW1wbGF0ZXMgZm9yIGV2ZXJ5IHR5cGUgb2YgaW50ZXJhY3RpdmUgbGVhcm5pbmc8L3A+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9zc2liaWxpdGllcy1ncmlkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3NzaWJpbGl0eS1jYXJkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9zc2liaWxpdHktaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsYXp5IiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTAvdmFyaWFudDEwLnBuZyIgYWx0PSJIZXJvIFNlY3Rpb24gSWNvbiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icG9zc2liaWxpdHktdGl0bGUiPlF1aXogTGVzc29uczwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwb3NzaWJpbGl0eS1kZXNjcmlwdGlvbiI+Q3JlYXRlIGludGVyYWN0aXZlIHF1aXp6ZXMsIG11bHRpcGxlIGNob2ljZSBhc3Nlc3NtZW50cywgYW5kIHRpbWVkIGV4ZXJjaXNlcyBmb3IgZWZmZWN0aXZlIGxlYXJuaW5nLjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9zc2liaWxpdHktY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvc3NpYmlsaXR5LWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3ZhcmlhbnQxMi5wbmciIGFsdD0iRmVhdHVyZXMgSWNvbiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icG9zc2liaWxpdHktdGl0bGUiPlByb2JsZW0gU29sdmluZzwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwb3NzaWJpbGl0eS1kZXNjcmlwdGlvbiI+TG9naWMgcHJvYmxlbXMsIGNvZGluZyBjaGFsbGVuZ2VzLCBtYXRoIHB1enpsZXMsIGFuZCBjcml0aWNhbCB0aGlua2luZyBleGVyY2lzZXMuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3NzaWJpbGl0eS1jYXJkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9zc2liaWxpdHktaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsYXp5IiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTAvdmFyaWFudDEzLnBuZyIgYWx0PSJUZXN0aW1vbmlhbHMgSWNvbiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icG9zc2liaWxpdHktdGl0bGUiPlZpc3VhbCBMZWFybmluZzwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwb3NzaWJpbGl0eS1kZXNjcmlwdGlvbiI+RGlhZ3JhbSBjcmVhdGlvbiwgY29sbGFib3JhdGl2ZSBkcmF3aW5nLCBhbmQgdmlzdWFsIGRlbW9uc3RyYXRpb25zIGZvciBoYW5kcy1vbiBsZWFybmluZy48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvc3NpYmlsaXR5LWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3NzaWJpbGl0eS1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImxhenkiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB2aWV3Qm94PScwJTIwMCUyMDElMjAxJyUzRSUzQy9zdmclM0UiIGRhdGEtc3JjPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMC92YXJpYW50MTYucG5nIiBhbHQ9IlByaWNpbmcgSWNvbiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icG9zc2liaWxpdHktdGl0bGUiPlNwZWVkIFRyYWluaW5nPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBvc3NpYmlsaXR5LWRlc2NyaXB0aW9uIj5GYXN0LXBhY2VkIGxlYXJuaW5nIGV4ZXJjaXNlcyB3aXRoIHRpbWVycywgcHJvZ3Jlc3MgdHJhY2tpbmcsIGFuZCBwZXJmb3JtYW5jZSBsZWFkZXJib2FyZHMuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvcHVsYXItcHJvbXB0cy1zZWN0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InBvcHVsYXItcHJvbXB0cy10aXRsZSI+UG9wdWxhciBUdXRvcmlhbHM8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvcHVsYXItcHJvbXB0cy1ncmlkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InBvcHVsYXItcHJvbXB0LWJ0biI+IkNvZGluZyBCYXNpY3MiPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwb3B1bGFyLXByb21wdC1idG4iPiJNYXRoIFdvcmtzaG9wIjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icG9wdWxhci1wcm9tcHQtYnRuIj4iTGFuZ3VhZ2UgU3R1ZHkiPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwb3B1bGFyLXByb21wdC1idG4iPiJEZXNpZ24gTGFiIjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icG9wdWxhci1wcm9tcHQtYnRuIj4iUXVpY2sgUXVpeiI8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InBvcHVsYXItcHJvbXB0LWJ0biI+IlNraWxsIEJ1aWxkZXIiPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIFNlZSBJdCBJbiBBY3Rpb24gU2VjdGlvbiAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uIj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iYWN0aW9uLXRpdGxlIj5TZWUgRXhhbXBsZXM8L2gyPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImFjdGlvbi1zdWJ0aXRsZSI+RXhwbG9yZSBpbnRlcmFjdGl2ZSB0dXRvcmlhbCB0ZW1wbGF0ZXMgZm9yIHlvdXIgbGVhcm5pbmcgam91cm5leTwvcD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby10YWJzIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkZW1vLXRhYiBhY3RpdmUiIGRhdGEtdGFiPSJyZWFjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWItaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsYXp5IiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTAvdmFyaWFudDE4LnBuZyIgYWx0PSJTYWFTIFRlbXBsYXRlIEljb24iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhYi10ZXh0Ij5RdWl6IExlc3NvbnM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRlbW8tdGFiIiBkYXRhLXRhYj0icHl0aG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhYi1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImxhenkiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB2aWV3Qm94PScwJTIwMCUyMDElMjAxJyUzRSUzQy9zdmclM0UiIGRhdGEtc3JjPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMC92YXJpYW50MTkucG5nIiBhbHQ9Ik1vYmlsZSBBcHAgSWNvbiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFiLXRleHQiPkV4ZXJjaXNlczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGVtby10YWIiIGRhdGEtdGFiPSJtb2JpbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFiLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ibGF6eSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL3ZhcmlhbnQyMS5wbmciIGFsdD0iQWdlbmN5IEljb24iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhYi10ZXh0Ij5EZW1vczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBSZWFjdCBDb21wb25lbnQgRGVtbyAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLXBhbmUgYWN0aXZlIiBpZD0icmVhY3QtZGVtbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tcHJvbXB0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb21wdC1pY29uIj7wn5qAPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4iUHJldmlldzogSW50ZXJhY3RpdmUgcXVpeiBsZXNzb24gd2l0aCBtdWx0aXBsZSBzdHVkZW50cyBhbmQgcHJvZ3Jlc3MgdHJhY2tpbmciPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1jb2RlLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1kb3RzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRvdCByZWQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRvdCB5ZWxsb3ciPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRvdCBncmVlbiI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2RlLXRpdGxlIj5RdWl6IFR1dG9yaWFsIFRlbXBsYXRlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNvcHktYnRuIj7wn5SOIFZpZXc8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1pbWFnZS1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwLzItMS5wbmciIGFsdD0iU2FhUyBQcmV2aWV3IiBjbGFzcz0iY29kZS1pbWFnZSBsYXp5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPCEtLSBQeXRob24gQVBJIERlbW8gLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1wYW5lIiBpZD0icHl0aG9uLWRlbW8iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLXByb21wdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9tcHQtaWNvbiI+8J+TsTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IlByZXZpZXc6IFByb2JsZW0tc29sdmluZyBleGVyY2lzZXMgd2l0aCBsZXZlbHMgYW5kIGFjaGlldmVtZW50IHN5c3RlbSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvZGUtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWRvdHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IHJlZCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IHllbGxvdyI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IGdyZWVuIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvZGUtdGl0bGUiPkV4ZXJjaXNlIFR1dG9yaWFsIFRlbXBsYXRlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNvcHktYnRuIj7wn5SOIFZpZXc8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1pbWFnZS1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUyMHZpZXdCb3g9JzAlMjAwJTIwMSUyMDEnJTNFJTNDL3N2ZyUzRSIgZGF0YS1zcmM9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwLzEtMS5wbmciIGFsdD0iTW9iaWxlIFByZXZpZXciIGNsYXNzPSJjb2RlLWltYWdlIGxhenkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8IS0tIE1vYmlsZSBVSSBEZW1vIC0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tcGFuZSIgaWQ9Im1vYmlsZS1kZW1vIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1wcm9tcHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvbXB0LWljb24iPvCfjqg8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiJQcmV2aWV3OiBWaXN1YWwgZGVtb25zdHJhdGlvbiB0dXRvcmlhbCB3aXRoIHN0ZXAtYnktc3RlcCBndWlkYW5jZSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvZGUtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWRvdHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IHJlZCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IHllbGxvdyI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IGdyZWVuIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvZGUtdGl0bGUiPkRlbW8gVHV0b3JpYWwgVGVtcGxhdGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY29weS1idG4iPvCflI4gVmlldzwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLXByZXZpZXciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vYmlsZS1tb2NrdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9maWxlLWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTIwdmlld0JveD0nMCUyMDAlMjAxJTIwMSclM0UlM0Mvc3ZnJTNFIiBkYXRhLXNyYz0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTAvc3MucG5nIiBhbHQ9IkFnZW5jeSBQcmV2aWV3IiBjbGFzcz0iY29kZS1pbWFnZSBsYXp5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIE1vcmUgQ2FwYWJpbGl0aWVzIFNlY3Rpb24gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vcmUtY2FwYWJpbGl0aWVzLXNlY3Rpb24iPgoKICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0ibW9yZS10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtd2hpdGUiPlBvd2VyZnVsIDwvcD5mZWF0dXJlcyBpbmNsdWRlZAogICAgICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJtb3JlLXN1YnRpdGxlIj5FdmVyeXRoaW5nIHlvdSBuZWVkIGZvciBpbnRlcmFjdGl2ZSBsZWFybmluZyB3aXRoIGNvbGxhYm9yYXRpb24gbW9kZXMsIHJlYWwtdGltZSB0ZWFjaGluZywgdHV0b3JpYWwgdGVtcGxhdGVzLCBhbmQgY3VzdG9taXphdGlvbiB0b29scy48L3A+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FwYWJpbGl0aWVzLWdyaWQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcGFiaWxpdHktY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcGFiaWxpdHktaWNvbiB3ZWItaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMiIgeT0iMyIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE0IiByeD0iMiIgcnk9IjIiLz48bGluZSB4MT0iOCIgeTE9IjIxIiB4Mj0iMTYiIHkyPSIyMSIvPjxsaW5lIHgxPSIxMiIgeTE9IjE3IiB4Mj0iMTIiIHkyPSIyMSIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJjYXBhYmlsaXR5LXRpdGxlIj5MaXZlIENvbGxhYm9yYXRpb248L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iY2FwYWJpbGl0eS1kZXNjcmlwdGlvbiI+TGVhcm4gd2l0aCBjbGFzc21hdGVzIGluIHJlYWwtdGltZSB3aXRoIGluc3RhbnQgc3luY2hyb25pemF0aW9uIGFuZCBzZWFtbGVzcyBpbnRlcmFjdGlvbjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FwYWJpbGl0eS1jYXJkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FwYWJpbGl0eS1pY29uIHB5dGhvbi1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSI4Ii8+PHBhdGggZD0ibTIxIDIxLTQuMzUtNC4zNSIvPjxwYXRoIGQ9Ik0xMSA4djYiLz48cGF0aCBkPSJNOCAxMWg2Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImNhcGFiaWxpdHktdGl0bGUiPlR1dG9yaWFsIFRlbXBsYXRlczwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjYXBhYmlsaXR5LWRlc2NyaXB0aW9uIj5QcmUtYnVpbHQgdHV0b3JpYWwgdGVtcGxhdGVzIGZvciBsZXNzb25zLCBxdWl6emVzLCBleGVyY2lzZXMsIGFuZCBoYW5kcy1vbiBsZWFybmluZyBleHBlcmllbmNlczwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FwYWJpbGl0eS1jYXJkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FwYWJpbGl0eS1pY29uIGRhdGEtaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGxpbmUgeDE9IjE4IiB5MT0iMjAiIHgyPSIxOCIgeTI9IjEwIi8+PGxpbmUgeDE9IjEyIiB5MT0iMjAiIHgyPSIxMiIgeTI9IjQiLz48bGluZSB4MT0iNiIgeTE9IjIwIiB4Mj0iNiIgeTI9IjE0Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImNhcGFiaWxpdHktdGl0bGUiPlByb2dyZXNzIFRyYWNraW5nPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImNhcGFiaWxpdHktZGVzY3JpcHRpb24iPlRyYWNrIGxlYXJuaW5nIHByb2dyZXNzLCBzdHVkZW50IHBlcmZvcm1hbmNlLCBhbmQgYWNoaWV2ZW1lbnRzIGFjcm9zcyBhbGwgeW91ciB0dXRvcmlhbHM8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcGFiaWxpdHktY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcGFiaWxpdHktaWNvbiBhcGktaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiLz48bGluZSB4MT0iMiIgeTE9IjEyIiB4Mj0iMjIiIHkyPSIxMiIvPjxwYXRoIGQ9Ik0xMiAyYTE1LjMgMTUuMyAwIDAgMSA0IDEwIDE1LjMgMTUuMyAwIDAgMS00IDEwIDE1LjMgMTUuMyAwIDAgMS00LTEwIDE1LjMgMTUuMyAwIDAgMSA0LTEweiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJjYXBhYmlsaXR5LXRpdGxlIj5Wb2ljZSBDb21tdW5pY2F0aW9uPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImNhcGFiaWxpdHktZGVzY3JpcHRpb24iPkJ1aWx0LWluIHZvaWNlIGNoYXQgdG8gY29tbXVuaWNhdGUgd2l0aCBzdHVkZW50cyB3aGlsZSB0ZWFjaGluZyBsZXNzb25zIHRvZ2V0aGVyPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXBhYmlsaXR5LWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXBhYmlsaXR5LWljb24gbW9iaWxlLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHoiLz48cG9seWxpbmUgcG9pbnRzPSIxNCAyIDE0IDggMjAgOCIvPjxsaW5lIHgxPSI5IiB5MT0iMTMiIHgyPSIxNSIgeTI9IjEzIi8+PGxpbmUgeDE9IjkiIHkxPSIxNyIgeDI9IjE1IiB5Mj0iMTciLz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iY2FwYWJpbGl0eS10aXRsZSI+Q3VzdG9tIExlYXJuaW5nIEFzc2V0czwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjYXBhYmlsaXR5LWRlc2NyaXB0aW9uIj5VcGxvYWQgY3VzdG9tIGltYWdlcywgdmlkZW9zLCBhbmQgZG9jdW1lbnRzIHRvIHBlcnNvbmFsaXplIHlvdXIgdHV0b3JpYWxzPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXBhYmlsaXR5LWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXBhYmlsaXR5LWljb24gZGV2b3BzLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwb2x5bGluZSBwb2ludHM9IjE2IDMgMjEgMyAyMSA4Ii8+PGxpbmUgeDE9IjQiIHkxPSIyMCIgeDI9IjIxIiB5Mj0iMyIvPjxwb2x5bGluZSBwb2ludHM9IjIxIDE2IDIxIDIxIDE2IDIxIi8+PGxpbmUgeDE9IjE1IiB5MT0iMTUiIHgyPSIyMSIgeTI9IjIxIi8+PGxpbmUgeDE9IjQiIHkxPSI0IiB4Mj0iOSIgeTI9IjkiLz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iY2FwYWJpbGl0eS10aXRsZSI+T2JzZXJ2ZXIgTW9kZTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjYXBhYmlsaXR5LWRlc2NyaXB0aW9uIj5XYXRjaCBsaXZlIGxlc3NvbnMgaW4gcHJvZ3Jlc3Mgd2l0aCByZWFsLXRpbWUgdXBkYXRlcyBhbmQgc3R1ZGVudCBwZXJzcGVjdGl2ZXM8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIENsaWVudCBUZXN0aW1vbmlhbHMgU2VjdGlvbiAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG92ZWQtYnktZGV2ZWxvcGVycy1zZWN0aW9uIj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0ibG92ZWQtdGl0bGUiPkxvdmVkIGJ5IExlYXJuZXJzPC9oMj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJsb3ZlZC1zdWJ0aXRsZSI+TGVhcm5lcnMgYW5kIGVkdWNhdGlvbmFsIGNvbW11bml0aWVzIGVuam95aW5nIGludGVyYWN0aXZlIHR1dG9yaWFscyB3aXRoIEdhbWVab25lIFBybzwvcD4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRlc3RpbW9uaWFsLW5hdiBwcmV2LWJ0biIgaWQ9InByZXZCdG4iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSAxOEw5IDEyTDE1IDYiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVzdGltb25pYWwtY2FyZCBhY3RpdmUiIGRhdGEtdGVzdGltb25pYWw9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVzdGltb25pYWwtYXZhdGFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB2aWV3Qm94PScwJTIwMCUyMDElMjAxJyUzRSUzQy9zdmclM0UiIGRhdGEtc3JjPSJodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vcGhvdG8tMTU0NDAwNTMxMy05NGRkZjAyODZkZjI/dz00MDAmaD00MDAmZml0PWNyb3AmYXV0bz1mb3JtYXQmcT04MCZpeGxpYj1yYi00LjAuMyZzPXBsYWNlaG9sZGVyIiBhbHQ9IlNhcmFoIENoZW4iIGNsYXNzPSJhdmF0YXItaW1nIGxhenkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1yYXRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGFyIj7irZA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXIiPuKtkDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhciI+4q2QPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGFyIj7irZA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXIiPuKtkDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlIGNsYXNzPSJ0ZXN0aW1vbmlhbC1xdW90ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2FtZVpvbmUgUHJvIGlzIGFtYXppbmchIE15IGNsYXNzbWF0ZXMgYW5kIEkgc3R1ZHkgd2l0aCBjdXN0b20gdHV0b3JpYWxzIGV2ZXJ5IHdlZWtlbmQuIFRoZSB0dXRvcmlhbCBjcmVhdGlvbiB0b29scyBhcmUgc28gZWFzeSB0byB1c2UuIFRvdGFsIGdhbWUgY2hhbmdlciEiIAogICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1hdXRob3IiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJhdXRob3ItbmFtZSI+U2FyYWggQ2hlbjwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYXV0aG9yLXJvbGUiPlN0dWRlbnQgJiBFZHVjYXRvcjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJhdXRob3ItY29tcGFueSI+TGVhcm5pbmcgQ29tbXVuaXR5PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGVzdGltb25pYWwtbmF2IG5leHQtYnRuIiBpZD0ibmV4dEJ0biI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTkgMThMMTUgMTJMOSA2IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1kb3RzIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkb3QgYWN0aXZlIiBkYXRhLXNsaWRlPSIwIj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkb3QiIGRhdGEtc2xpZGU9IjEiPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRvdCIgZGF0YS1zbGlkZT0iMiI+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZG90IiBkYXRhLXNsaWRlPSIzIj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkb3QiIGRhdGEtc2xpZGU9IjQiPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdHMtZ3JpZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1udW1iZXIiPjUwLDAwMCs8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPkFjdGl2ZSBMZWFybmVyczwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbnVtYmVyIj4yTSs8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPlR1dG9yaWFscyBDcmVhdGVkPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1udW1iZXIiPjQuOeKYhTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+Q3VzdG9tZXIgUmF0aW5nPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIFJlYWR5IHRvIENvZGUgRmFzdGVyIFNlY3Rpb24gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlYWR5LXRvLWNvZGUtc2VjdGlvbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjdGEtaWNvbiI+8J+agDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iY3RhLXRpdGxlIj5SZWFkeSB0byBwbGF5IHRvZ2V0aGVyPzwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjdGEtc3VidGl0bGUiPlN0YXJ0IGNyZWF0aW5nIGFuZCBwbGF5aW5nIGludGVyYWN0aXZlIG11bHRpcGxheWVyIGdhbWVzIHdpdGggeW91ciBmcmllbmRzIHRvZGF5LjwvcD4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlcy1jaGVja2xpc3QiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImNoZWNrLWljb24iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIiBmaWxsPSJub25lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi42NjY3IDVMNy41IDE0LjE2NjdMMy4zMzMzNCAxMCIgc3Ryb2tlPSIjNEE5MEUyIiBzdHJva2Utd2lkdGg9IjIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+VW5saW1pdGVkIGdhbWVzICYgcGxheWVyczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJjaGVjay1pY29uIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTYuNjY2NyA1TDcuNSAxNC4xNjY3TDMuMzMzMzQgMTAiIHN0cm9rZT0iIzRBOTBFMiIgc3Ryb2tlLXdpZHRoPSIyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlJlYWwtdGltZSBtdWx0aXBsYXllcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJjaGVjay1pY29uIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTYuNjY2NyA1TDcuNSAxNC4xNjY3TDMuMzMzMzQgMTAiIHN0cm9rZT0iIzRBOTBFMiIgc3Ryb2tlLXdpZHRoPSIyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkdhbWUgdGVtcGxhdGVzICYgY3VzdG9taXphdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJjaGVjay1pY29uIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTYuNjY2NyA1TDcuNSAxNC4xNjY3TDMuMzMzMzQgMTAiIHN0cm9rZT0iIzRBOTBFMiIgc3Ryb2tlLXdpZHRoPSIyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkxlYWRlcmJvYXJkcyAmIGFjaGlldmVtZW50czwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImN0YS1idXR0b25zIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdGEtcHJpbWFyeS1idG4iIGlkPSJjdGFHZXRTdGFydGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTMuODI1IDYuOTE2NjlMMTAgMy4wOTE2OUw2LjE3NSA2LjkxNjY5IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEwIDMuMDkxNjlWMTYuOTA4NCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS41IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0IFBsYXlpbmcgRnJlZQogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0YS1zZWNvbmRhcnktYnRuIiBpZD0iY3RhTGl2ZURlbW8iPlZpZXcgR2FtZXM8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRydXN0LWJhZGdlcyI+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRydXN0LXRleHQiPlBsYXllZCBieSBnYW1pbmcgY29tbXVuaXRpZXMgYW5kIHBsYXllcnMgd29ybGR3aWRlPC9wPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbXBhbnktbG9nb3MiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tcGFueS1sb2dvIj5HaXRIdWI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21wYW55LWxvZ28iPlNob3BpZnk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21wYW55LWxvZ28iPkFpcmJuYjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbXBhbnktbG9nbyI+RHJvcGJveDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbXBhbnktbG9nbyI+U2xhY2s8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21wYW55LWxvZ28iPkZpZ21hPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8L21haW4+CiAgICA8L2Rpdj4KCiAgICA8IS0tIE1haW4gYXBwbGljYXRpb24gY29udGFpbmVyIHdpdGggY2hhdCBhbmQgc2FuZHBhY2sgLS0+CiAgICA8ZGl2IGNsYXNzPSJhcHAtY29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICAgIDwhLS0gQ2hhdCBpbnRlcmZhY2UgLS0+CiAgICAgICAgPGRpdiBpZD0iY2hhdEludGVyZmFjZSIgY2xhc3M9ImNoYXQtaW50ZXJmYWNlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hhdC1jb250YWluZXIiIGlkPSJjaGF0Q29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gTWVzc2FnZXMgd2lsbCBiZSBkaXNwbGF5ZWQgaGVyZSAtLT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLWJveCIgaWQ9ImxvYWRpbmdCb3giIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXJ0aWNsZSI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXJ0aWNsZSI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXJ0aWNsZSI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXJ0aWNsZSI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLW1lc3NhZ2UiPkhvbGQgdGlnaHQsIGNydW5jaGluZyB0aGUgbnVtYmVycy4uLjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1zcGlubmVyIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIFBlcnNpc3RlbnQgY2hhdCBpbnB1dCB0aGF0IHNob3VsZCBhbHdheXMgYmUgdmlzaWJsZSAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hhdC1pbnB1dC1zZWN0aW9uIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LW91dGVyLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtaW5uZXItY29udGFpbmVyIHZlcnRpY2FsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPSJwcm9tcHQtaW5wdXQgY2hhdC1wcm9tcHQtaW5wdXQiIHBsYWNlaG9sZGVyPSJBc2sgZm9yIGFuYWx5dGljcyBpbnNpZ2h0cy4uLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M9IjEiPjwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWNvbnRyb2xzLXJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9ImF0dGFjaC1idG4gc3F1YXJlIiB0aXRsZT0iQXR0YWNoIj48c3Bhbj7wn5OOPC9zcGFuPjwvYnV0dG9uPiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InF1YWxpdHktc2VsZWN0b3IiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9InF1YWxpdHlTZWxlY3RDaGF0IiBjbGFzcz0icXVhbGl0eS1kcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InN0YW5kYXJkIj4gU1E8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaGlnaGVyIj4gSFE8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJxdWFsaXR5LXRvb2x0aXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idG9vbHRpcC1pY29uIj48aSBjbGFzcz0iZmEtc29saWQgZmEtY2lyY2xlLWluZm8iPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2x0aXAtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlN0YW5kYXJkOjwvc3Ryb25nPiBRdWljayBhbmFseXRpY3Mgc25hcHNob3Q8YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPkhpZ2hlcjo8L3N0cm9uZz4gRGVlcC1kaXZlIGFuYWx5c2lzIHdpdGggbmFycmF0aXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzdWJtaXQtYnRuIGNoYXQtc3VibWl0LWJ0biIgdGl0bGU9IlN1Ym1pdCI+PHNwYW4+4p6UPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSBTYW5kcGFjayBjb250YWluZXIgLSBzZXBhcmF0ZSBmcm9tIGNoYXQgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0ic2FuZHBhY2std3JhcHBlciIgaWQ9InNhbmRwYWNrV3JhcHBlciI+CiAgICAgICAgICAgIDwhLS0gVG9nZ2xlIGJ1dHRvbnMgZm9yIENvZGUvUHJldmlldyAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idmlldy10b2dnbGUtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImNvZGVUb2dnbGUiIGNsYXNzPSJ2aWV3LXRvZ2dsZS1idG4iPkNvZGU8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9InByZXZpZXdUb2dnbGUiIGNsYXNzPSJ2aWV3LXRvZ2dsZS1idG4gYWN0aXZlIj5QcmV2aWV3PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJyb290IiBjbGFzcz0ic2FuZHBhY2stY29udGFpbmVyIj48L2Rpdj4KICAgICAgICAgICAgPCEtLSBMb2FkaW5nIG92ZXJsYXkgZm9yIFNhbmRwYWNrIGFyZWEgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctb3ZlcmxheSIgaWQ9InNhbmRwYWNrTG9hZGluZ092ZXJsYXkiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoaXRlY2gtbG9hZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLW1hdHJpeCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hdHJpeC1saW5lIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF0cml4LWxpbmUiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXRyaXgtbGluZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hdHJpeC1saW5lIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF0cml4LWxpbmUiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNlbnRyYWwtY29yZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvcmUtcmluZyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvcmUtcmluZyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvcmUtcmluZyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvcmUtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InB1bHNlLWRvdCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRhdGEtc3RyZWFtcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0cmVhbSBzdHJlYW0tMSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0cmVhbSBzdHJlYW0tMiI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0cmVhbSBzdHJlYW0tMyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0cmVhbSBzdHJlYW0tNCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ2VvbWV0cmljLXBhdHRlcm5zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGV4LXBhdHRlcm4iPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZXgtcGF0dGVybiI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhleC1wYXR0ZXJuIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1tZXNzYWdlIj5Ib2xkIHRpZ2h0LCBjcnVuY2hpbmcgdGhlIG51bWJlcnMuLi48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJmb290ZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1sZWZ0Ij4KICAgICAgICAgICAgQnVpbHQgd2l0aCA8YSBocmVmPSIjIj5Db2RpbmcgQUk8L2E+IGFuZCA8YSBocmVmPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS8iPjxzcGFuCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYWRpZW50LXRleHQiPldyaXRlY3JlYW0gQUk8L3NwYW4+PC9hPi4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItcmlnaHQiPgogICAgICAgICAgICA8IS0tIDxhIGhyZWY9IiMiIGNsYXNzPSJmb290ZXItaWNvbiIgdGl0bGU9IlR3aXR0ZXIiPvCfkKY8L2E+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJmb290ZXItaWNvbiIgdGl0bGU9IkdpdEh1YiI+8J+QmTwvYT4gLS0+CiAgICAgICAgPC9kaXY+CiAgICA8L2Zvb3Rlcj4KCjxkaXYgaWQ9Im5ldGxpZnlUb2tlbk1vZGFsIiBjbGFzcz0ibW9kYWwiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KICAgICAgICA8c3BhbiBjbGFzcz0iY2xvc2UtbW9kYWwiIG9uY2xpY2s9ImNsb3NlTmV0bGlmeVRva2VuTW9kYWwoKSI+w5c8L3NwYW4+CiAgICAgICAgPGgyPlNldCBOZXRsaWZ5IFBlcnNvbmFsIEFjY2VzcyBUb2tlbjwvaDI+CiAgICAgICAgPHA+RW50ZXIgeW91ciBOZXRsaWZ5IFBBVCB0byBkZXBsb3kgdXNpbmcgeW91ciBhY2NvdW50LiBJZiBub3Qgc2V0LCB0aGUgZGVmYXVsdCB0b2tlbiB3aWxsIGJlIHVzZWQuPC9wPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibmV0bGlmeVRva2VuSW5wdXQiIHBsYWNlaG9sZGVyPSJFbnRlciB5b3VyIE5ldGxpZnkgUEFUIiBzdHlsZT0id2lkdGg6IDEwMCU7IHBhZGRpbmc6IDEwcHg7IG1hcmdpbjogMTBweCAwOyI+CiAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJzdWJtaXROZXRsaWZ5VG9rZW4oKSI+U3VibWl0PC9idXR0b24+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIEphdmFTY3JpcHQgbW92ZWQgdG8gZW5kIG9mIGZpbGUgLS0+Cgo8IS0tIEFsbCBKYXZhU2NyaXB0IG1vdmVkIHRvIGVuZCBvZiBmaWxlIC0tPgoKPCEtLSBKU1ppcCBmb3IgZmlsZSBkb3dubG9hZHMgLS0+CjxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9qc3ppcC8zLjEwLjEvanN6aXAubWluLmpzIj48L3NjcmlwdD4KCjwhLS0gQ09ORklHIEphdmFTY3JpcHQgLS0+CjxzY3JpcHQ+Ci8vIENvbmZpZ3VyYXRpb24gZmlsZSBmb3IgTGFtYmRhIGludGVncmF0aW9uCi8vIFVwZGF0ZSB0aGUgTEFNQkRBX0JBU0VfVVJMIHdpdGggeW91ciBhY3R1YWwgTGFtYmRhIGZ1bmN0aW9uIFVSTAoKY29uc3QgQ09ORklHID0gewogIC8vIFJlcGxhY2UgdGhpcyB3aXRoIHlvdXIgYWN0dWFsIExhbWJkYSBmdW5jdGlvbiBVUkwKICBMQU1CREFfQkFTRV9VUkw6ICdodHRwczovLzdsYzc3Ymg1aGFrZmxvaDNvdnp4dGF0dmNhMGVsa3FsLmxhbWJkYS11cmwudXMtZWFzdC0xLm9uLmF3cycsCiAgCiAgLy8gQVBJIGVuZHBvaW50cwogIEVORFBPSU5UUzogewogICAgREVQTE9ZX05FVExJRlk6ICcvYXBpL2RlcGxveS1uZXRsaWZ5JywKICAgIEFSQ0hJVEVDVDogJy9hcGkvYXJjaGl0ZWN0JywKICAgIE9QRU5BSTogJy9hcGkvb3BlbmFpJywKICAgIE1PRElGWTogJy9hcGkvbW9kaWZ5JywKICAgIENPTlRFWFRfU0VTU0lPTjogJy9hcGkvY29udGV4dC9zZXNzaW9uJywKICAgIENPTlRFWFRfSEVBTFRIOiAnL2FwaS9jb250ZXh0L2hlYWx0aCcKICB9LAogIAogIC8vIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgZnVsbCBBUEkgVVJMCiAgZ2V0QXBpVXJsOiBmdW5jdGlvbihlbmRwb2ludCkgewogICAgcmV0dXJuIHRoaXMuTEFNQkRBX0JBU0VfVVJMICsgZW5kcG9pbnQ7CiAgfQp9OwoKLy8gRXhwb3J0IGZvciB1c2UgaW4gb3RoZXIgZmlsZXMKaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBDT05GSUc7Cn0gZWxzZSB7CiAgd2luZG93LkNPTkZJRyA9IENPTkZJRzsKfQo8L3NjcmlwdD4KCjwhLS0gTWFpbiBBcHBsaWNhdGlvbiBKYXZhU2NyaXB0IC0tPgo8c2NyaXB0PiAKLy8gRW5oYW5jZWQgUGVyc2lzdGVuY2UgTWFuYWdlcgpjbGFzcyBFbmhhbmNlZFBlcnNpc3RlbmNlTWFuYWdlciB7CiAgY29uc3RydWN0b3IoKSB7CiAgICB0aGlzLnN0b3JhZ2VLZXlzID0gewogICAgICBDSEFUX0hJU1RPUlk6ICd3ZWJidWlsZGVyX2NoYXRfaGlzdG9yeScsCiAgICAgIFRFTVBMQVRFOiAnd2ViYnVpbGRlcl90ZW1wbGF0ZScsCiAgICAgIFFVQUxJVFlfU0VUVElORzogJ3dlYmJ1aWxkZXJfcXVhbGl0eScsCiAgICAgIFVJX1NUQVRFOiAnd2ViYnVpbGRlcl91aV9zdGF0ZScsCiAgICAgIFZJRVdfVE9HR0xFX1NUQVRFOiAnd2ViYnVpbGRlcl92aWV3X3RvZ2dsZV9zdGF0ZScsCiAgICAgIENVUlJFTlRfVVNFQ0FTRTogJ3dlYmJ1aWxkZXJfY3VycmVudF91c2VjYXNlJywKICAgICAgQ09OVEVYVF9NRVRBREFUQTogJ3dlYmJ1aWxkZXJfY29udGV4dF9tZXRhZGF0YScKICAgIH07CiAgICAKICAgIHRoaXMuY29udGV4dFZhbGlkYXRpb24gPSB7CiAgICAgIG1heENoYXRIaXN0b3J5U2l6ZTogNTAsCiAgICAgIG1heENvZGVGaWxlU2l6ZTogMTAyNCAqIDEwMjQsCiAgICAgIGNvbnRleHRFeHBpcnlIb3VyczogMjQKICAgIH07CiAgfQoKICAvLyBFbmhhbmNlZCBjaGF0IGhpc3Rvcnkgd2l0aCB2YWxpZGF0aW9uIGFuZCB1c2VjYXNlIGF3YXJlbmVzcwogIHNhdmVDaGF0SGlzdG9yeShwcm9tcHRzLCB1c2VjYXNlID0gJ2RlZmF1bHQnKSB7CiAgICB0cnkgewogICAgICAvLyBWYWxpZGF0ZSBhbmQgY2xlYW4gcHJvbXB0cwogICAgICBjb25zdCB2YWxpZGF0ZWRQcm9tcHRzID0gdGhpcy52YWxpZGF0ZUNoYXRIaXN0b3J5KHByb21wdHMpOwogICAgICAKICAgICAgLy8gU2F2ZSB3aXRoIG1ldGFkYXRhCiAgICAgIGNvbnN0IGNoYXREYXRhID0gewogICAgICAgIHByb21wdHM6IHZhbGlkYXRlZFByb21wdHMsCiAgICAgICAgdXNlY2FzZTogdXNlY2FzZSwKICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksCiAgICAgICAgdmVyc2lvbjogJzIuMCcgLy8gVmVyc2lvbiB0cmFja2luZyBmb3IgZnV0dXJlIG1pZ3JhdGlvbnMKICAgICAgfTsKICAgICAgCiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleXMuQ0hBVF9ISVNUT1JZLCBKU09OLnN0cmluZ2lmeShjaGF0RGF0YSkpOwogICAgICAKICAgICAgLy8gVXBkYXRlIGNvbnRleHQgbWV0YWRhdGEKICAgICAgdGhpcy51cGRhdGVDb250ZXh0TWV0YWRhdGEoewogICAgICAgIGxhc3RDaGF0U2F2ZTogRGF0ZS5ub3coKSwKICAgICAgICB1c2VjYXNlOiB1c2VjYXNlLAogICAgICAgIHByb21wdENvdW50OiB2YWxpZGF0ZWRQcm9tcHRzLmxlbmd0aAogICAgICB9KTsKICAgICAgCiAgICAgIGNvbnNvbGUubG9nKGDwn5K+IFNhdmVkICR7dmFsaWRhdGVkUHJvbXB0cy5sZW5ndGh9IGNoYXQgbWVzc2FnZXMgZm9yIHVzZWNhc2U6ICR7dXNlY2FzZX1gKTsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIHNhdmUgY2hhdCBoaXN0b3J5OicsIGVycm9yKTsKICAgIH0KICB9CgogIC8vIEVuaGFuY2VkIGNoYXQgaGlzdG9yeSBsb2FkaW5nIHdpdGggdmFsaWRhdGlvbgogIGxvYWRDaGF0SGlzdG9yeShleHBlY3RlZFVzZWNhc2UgPSBudWxsKSB7CiAgICB0cnkgewogICAgICBjb25zdCBzYXZlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleXMuQ0hBVF9ISVNUT1JZKTsKICAgICAgaWYgKCFzYXZlZCkgcmV0dXJuIFtdOwogICAgICAKICAgICAgY29uc3QgY2hhdERhdGEgPSBKU09OLnBhcnNlKHNhdmVkKTsKICAgICAgCiAgICAgIC8vIEhhbmRsZSBsZWdhY3kgZm9ybWF0IChhcnJheSBvZiBwcm9tcHRzKQogICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGF0RGF0YSkpIHsKICAgICAgICBjb25zb2xlLmxvZygn8J+TpiBNaWdyYXRpbmcgbGVnYWN5IGNoYXQgaGlzdG9yeSBmb3JtYXQnKTsKICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUNoYXRIaXN0b3J5KGNoYXREYXRhKTsKICAgICAgfQogICAgICAKICAgICAgLy8gVmFsaWRhdGUgY29udGV4dCBmcmVzaG5lc3MKICAgICAgaWYgKHRoaXMuaXNDb250ZXh0RXhwaXJlZChjaGF0RGF0YS50aW1lc3RhbXApKSB7CiAgICAgICAgY29uc29sZS5sb2coJ+KPsCBDaGF0IGNvbnRleHQgZXhwaXJlZCwgY2xlYXJpbmcuLi4nKTsKICAgICAgICB0aGlzLmNsZWFyQ2hhdEhpc3RvcnkoKTsKICAgICAgICByZXR1cm4gW107CiAgICAgIH0KICAgICAgCiAgICAgIC8vIFVzZWNhc2UgdmFsaWRhdGlvbgogICAgICBpZiAoZXhwZWN0ZWRVc2VjYXNlICYmIGNoYXREYXRhLnVzZWNhc2UgIT09IGV4cGVjdGVkVXNlY2FzZSkgewogICAgICAgIGNvbnNvbGUubG9nKGDwn5SEIFVzZWNhc2UgbWlzbWF0Y2g6IGV4cGVjdGVkICR7ZXhwZWN0ZWRVc2VjYXNlfSwgZm91bmQgJHtjaGF0RGF0YS51c2VjYXNlfWApOwogICAgICAgIC8vIERvbid0IGF1dG8tY2xlYXIsIGJ1dCB3YXJuCiAgICAgIH0KICAgICAgCiAgICAgIGNvbnN0IHZhbGlkYXRlZFByb21wdHMgPSB0aGlzLnZhbGlkYXRlQ2hhdEhpc3RvcnkoY2hhdERhdGEucHJvbXB0cyB8fCBbXSk7CiAgICAgIGNvbnNvbGUubG9nKGDwn5OWIExvYWRlZCAke3ZhbGlkYXRlZFByb21wdHMubGVuZ3RofSBjaGF0IG1lc3NhZ2VzIGZvciB1c2VjYXNlOiAke2NoYXREYXRhLnVzZWNhc2V9YCk7CiAgICAgIAogICAgICByZXR1cm4gdmFsaWRhdGVkUHJvbXB0czsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgY2hhdCBoaXN0b3J5OicsIGVycm9yKTsKICAgICAgcmV0dXJuIFtdOwogICAgfQogIH0KCiAgLy8gRW5oYW5jZWQgY29kZSBmaWxlcyB3aXRoIHZhbGlkYXRpb24gYW5kIHVzZWNhc2UgYXdhcmVuZXNzCiAgc2F2ZUNvZGVGaWxlcyhjb2RlRmlsZXMsIHVzZWNhc2UgPSAnZGVmYXVsdCcpIHsKICAgIHRyeSB7CiAgICAgIC8vIFZhbGlkYXRlIGNvZGUgZmlsZXMKICAgICAgY29uc3QgdmFsaWRhdGVkRmlsZXMgPSB0aGlzLnZhbGlkYXRlQ29kZUZpbGVzKGNvZGVGaWxlcyk7CiAgICAgIAogICAgICBjb25zdCBjb2RlRGF0YSA9IHsKICAgICAgICBmaWxlczogdmFsaWRhdGVkRmlsZXMsCiAgICAgICAgdXNlY2FzZTogdXNlY2FzZSwKICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksCiAgICAgICAgdmVyc2lvbjogJzIuMCcKICAgICAgfTsKICAgICAgCiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleXMuQ09ERV9GSUxFUywgSlNPTi5zdHJpbmdpZnkoY29kZURhdGEpKTsKICAgICAgCiAgICAgIC8vIFVwZGF0ZSBjb250ZXh0IG1ldGFkYXRhCiAgICAgIHRoaXMudXBkYXRlQ29udGV4dE1ldGFkYXRhKHsKICAgICAgICBsYXN0Q29kZVNhdmU6IERhdGUubm93KCksCiAgICAgICAgdXNlY2FzZTogdXNlY2FzZSwKICAgICAgICBmaWxlQ291bnQ6IE9iamVjdC5rZXlzKHZhbGlkYXRlZEZpbGVzKS5sZW5ndGgKICAgICAgfSk7CiAgICAgIAogICAgICBjb25zb2xlLmxvZyhg8J+SviBTYXZlZCAke09iamVjdC5rZXlzKHZhbGlkYXRlZEZpbGVzKS5sZW5ndGh9IGNvZGUgZmlsZXMgZm9yIHVzZWNhc2U6ICR7dXNlY2FzZX1gKTsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIHNhdmUgY29kZSBmaWxlczonLCBlcnJvcik7CiAgICB9CiAgfQoKICAvLyBFbmhhbmNlZCBjb2RlIGZpbGVzIGxvYWRpbmcgd2l0aCB2YWxpZGF0aW9uCiAgbG9hZENvZGVGaWxlcyhleHBlY3RlZFVzZWNhc2UgPSBudWxsKSB7CiAgICB0cnkgewogICAgICBjb25zdCBzYXZlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleXMuQ09ERV9GSUxFUyk7CiAgICAgIGlmICghc2F2ZWQpIHJldHVybiBudWxsOwogICAgICAKICAgICAgY29uc3QgY29kZURhdGEgPSBKU09OLnBhcnNlKHNhdmVkKTsKICAgICAgCiAgICAgIC8vIEhhbmRsZSBsZWdhY3kgZm9ybWF0IChkaXJlY3QgZmlsZXMgb2JqZWN0KQogICAgICBpZiAoIWNvZGVEYXRhLnZlcnNpb24gJiYgIWNvZGVEYXRhLnRpbWVzdGFtcCkgewogICAgICAgIGNvbnNvbGUubG9nKCfwn5OmIE1pZ3JhdGluZyBsZWdhY3kgY29kZSBmaWxlcyBmb3JtYXQnKTsKICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUNvZGVGaWxlcyhjb2RlRGF0YSk7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIFZhbGlkYXRlIGNvbnRleHQgZnJlc2huZXNzCiAgICAgIGlmICh0aGlzLmlzQ29udGV4dEV4cGlyZWQoY29kZURhdGEudGltZXN0YW1wKSkgewogICAgICAgIGNvbnNvbGUubG9nKCfij7AgQ29kZSBjb250ZXh0IGV4cGlyZWQsIGNsZWFyaW5nLi4uJyk7CiAgICAgICAgdGhpcy5jbGVhckNvZGVGaWxlcygpOwogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICAgIAogICAgICAvLyBVc2VjYXNlIHZhbGlkYXRpb24KICAgICAgaWYgKGV4cGVjdGVkVXNlY2FzZSAmJiBjb2RlRGF0YS51c2VjYXNlICE9PSBleHBlY3RlZFVzZWNhc2UpIHsKICAgICAgICBjb25zb2xlLmxvZyhg8J+UhCBDb2RlIHVzZWNhc2UgbWlzbWF0Y2g6IGV4cGVjdGVkICR7ZXhwZWN0ZWRVc2VjYXNlfSwgZm91bmQgJHtjb2RlRGF0YS51c2VjYXNlfWApOwogICAgICB9CiAgICAgIAogICAgICBjb25zdCB2YWxpZGF0ZWRGaWxlcyA9IHRoaXMudmFsaWRhdGVDb2RlRmlsZXMoY29kZURhdGEuZmlsZXMgfHwge30pOwogICAgICBjb25zb2xlLmxvZyhg8J+TliBMb2FkZWQgJHtPYmplY3Qua2V5cyh2YWxpZGF0ZWRGaWxlcykubGVuZ3RofSBjb2RlIGZpbGVzIGZvciB1c2VjYXNlOiAke2NvZGVEYXRhLnVzZWNhc2V9YCk7CiAgICAgIAogICAgICByZXR1cm4gdmFsaWRhdGVkRmlsZXM7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBsb2FkIGNvZGUgZmlsZXM6JywgZXJyb3IpOwogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIC8vIFNhdmUgY3VycmVudCB0ZW1wbGF0ZQogIHNhdmVUZW1wbGF0ZSh0ZW1wbGF0ZSkgewogICAgdHJ5IHsKICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlS2V5cy5URU1QTEFURSwgdGVtcGxhdGUpOwogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gc2F2ZSB0ZW1wbGF0ZTonLCBlcnJvcik7CiAgICB9CiAgfQoKICAvLyBMb2FkIGN1cnJlbnQgdGVtcGxhdGUKICBsb2FkVGVtcGxhdGUoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5cy5URU1QTEFURSkgfHwgJ3JlYWN0JzsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgdGVtcGxhdGU6JywgZXJyb3IpOwogICAgICByZXR1cm4gJ3JlYWN0JzsKICAgIH0KICB9CgogIC8vIFNhdmUgcXVhbGl0eSBzZXR0aW5nCiAgc2F2ZVF1YWxpdHlTZXR0aW5nKHF1YWxpdHkpIHsKICAgIHRyeSB7CiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleXMuUVVBTElUWV9TRVRUSU5HLCBxdWFsaXR5KTsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIHNhdmUgcXVhbGl0eSBzZXR0aW5nOicsIGVycm9yKTsKICAgIH0KICB9CgogIC8vIExvYWQgcXVhbGl0eSBzZXR0aW5nCiAgbG9hZFF1YWxpdHlTZXR0aW5nKCkgewogICAgdHJ5IHsKICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleXMuUVVBTElUWV9TRVRUSU5HKSB8fCAnc3RhbmRhcmQnOwogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gbG9hZCBxdWFsaXR5IHNldHRpbmc6JywgZXJyb3IpOwogICAgICByZXR1cm4gJ3N0YW5kYXJkJzsKICAgIH0KICB9CgogIC8vIFNhdmUgVUkgc3RhdGUKICBzYXZlVUlTdGF0ZSh1aVN0YXRlKSB7CiAgICB0cnkgewogICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlzLlVJX1NUQVRFLCBKU09OLnN0cmluZ2lmeSh1aVN0YXRlKSk7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBzYXZlIFVJIHN0YXRlOicsIGVycm9yKTsKICAgIH0KICB9CgogIC8vIExvYWQgVUkgc3RhdGUKICBsb2FkVUlTdGF0ZSgpIHsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHNhdmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5cy5VSV9TVEFURSk7CiAgICAgIHJldHVybiBzYXZlZCA/IEpTT04ucGFyc2Uoc2F2ZWQpIDogeyBjaGF0VmlzaWJsZTogZmFsc2UgfTsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgVUkgc3RhdGU6JywgZXJyb3IpOwogICAgICByZXR1cm4geyBjaGF0VmlzaWJsZTogZmFsc2UgfTsKICAgIH0KICB9CgogIC8vIFNhdmUgdmlldyB0b2dnbGUgc3RhdGUKICBzYXZlVmlld1RvZ2dsZVN0YXRlKHZpZXdTdGF0ZSkgewogICAgdHJ5IHsKICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlS2V5cy5WSUVXX1RPR0dMRV9TVEFURSwgSlNPTi5zdHJpbmdpZnkodmlld1N0YXRlKSk7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBzYXZlIHZpZXcgdG9nZ2xlIHN0YXRlOicsIGVycm9yKTsKICAgIH0KICB9CgogIC8vIExvYWQgdmlldyB0b2dnbGUgc3RhdGUKICBsb2FkVmlld1RvZ2dsZVN0YXRlKCkgewogICAgdHJ5IHsKICAgICAgY29uc3Qgc2F2ZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlzLlZJRVdfVE9HR0xFX1NUQVRFKTsKICAgICAgcmV0dXJuIHNhdmVkID8gSlNPTi5wYXJzZShzYXZlZCkgOiB7IGN1cnJlbnRWaWV3OiAnY29kZScgfTsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgdmlldyB0b2dnbGUgc3RhdGU6JywgZXJyb3IpOwogICAgICByZXR1cm4geyBjdXJyZW50VmlldzogJ2NvZGUnIH07CiAgICB9CiAgfQoKICAvLyBDbGVhciBhbGwgc2F2ZWQgZGF0YQogIGNsZWFyQWxsKCkgewogICAgT2JqZWN0LnZhbHVlcyh0aGlzLnN0b3JhZ2VLZXlzKS5mb3JFYWNoKGtleSA9PiB7CiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7CiAgICB9KTsKICB9CgogIC8vIENsZWFyIGFsbCBzYXZlZCBkYXRhIGV4Y2VwdCB0aGVtZSBhbmQgdmlldyB0b2dnbGUgc3RhdGUgKGZvciBIUSBtb2RlKQogIGNsZWFyQWxsRXhjZXB0Q3JpdGljYWwoKSB7CiAgICBjb25zdCBrZXlzVG9QcmVzZXJ2ZSA9IFsKICAgICAgdGhpcy5zdG9yYWdlS2V5cy5WSUVXX1RPR0dMRV9TVEFURSwKICAgICAgJ3RoZW1lJyAvLyBQcmVzZXJ2ZSB0aGVtZSBhcyB3ZWxsCiAgICBdOwogICAgCiAgICBPYmplY3QudmFsdWVzKHRoaXMuc3RvcmFnZUtleXMpLmZvckVhY2goa2V5ID0+IHsKICAgICAgaWYgKCFrZXlzVG9QcmVzZXJ2ZS5pbmNsdWRlcyhrZXkpKSB7CiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTsKICAgICAgfQogICAgfSk7CiAgICAKICAgIGNvbnNvbGUubG9nKCfwn6e5IENsZWFyZWQgYWxsIGRhdGEgZXhjZXB0IGNyaXRpY2FsIHNldHRpbmdzJyk7CiAgfQoKICAvLyBFbmhhbmNlZCB2YWxpZGF0aW9uIG1ldGhvZHMKICB2YWxpZGF0ZUNoYXRIaXN0b3J5KHByb21wdHMpIHsKICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9tcHRzKSkgcmV0dXJuIFtdOwogICAgCiAgICByZXR1cm4gcHJvbXB0cwogICAgICAuZmlsdGVyKHByb21wdCA9PiBwcm9tcHQgJiYgdHlwZW9mIHByb21wdCA9PT0gJ29iamVjdCcpCiAgICAgIC5maWx0ZXIocHJvbXB0ID0+IHByb21wdC5yb2xlICYmIHByb21wdC5jb250ZW50KQogICAgICAuc2xpY2UoLXRoaXMuY29udGV4dFZhbGlkYXRpb24ubWF4Q2hhdEhpc3RvcnlTaXplKSAvLyBLZWVwIG9ubHkgcmVjZW50IG1lc3NhZ2VzCiAgICAgIC5tYXAocHJvbXB0ID0+ICh7CiAgICAgICAgcm9sZTogU3RyaW5nKHByb21wdC5yb2xlKS50cmltKCksCiAgICAgICAgY29udGVudDogU3RyaW5nKHByb21wdC5jb250ZW50KS50cmltKCkKICAgICAgfSkpOwogIH0KCiAgdmFsaWRhdGVDb2RlRmlsZXMoY29kZUZpbGVzKSB7CiAgICBpZiAoIWNvZGVGaWxlcyB8fCB0eXBlb2YgY29kZUZpbGVzICE9PSAnb2JqZWN0JykgcmV0dXJuIHt9OwogICAgCiAgICBjb25zdCB2YWxpZGF0ZWRGaWxlcyA9IHt9OwogICAgCiAgICBPYmplY3QuZW50cmllcyhjb2RlRmlsZXMpLmZvckVhY2goKFtmaWxlUGF0aCwgZmlsZURhdGFdKSA9PiB7CiAgICAgIGlmICghZmlsZVBhdGggfHwgdHlwZW9mIGZpbGVQYXRoICE9PSAnc3RyaW5nJykgcmV0dXJuOwogICAgICAKICAgICAgLy8gSGFuZGxlIGJvdGggbGVnYWN5IGZvcm1hdCAoZGlyZWN0IGNvZGUgc3RyaW5nKSBhbmQgbmV3IGZvcm1hdCAob2JqZWN0IHdpdGggY29kZSBwcm9wZXJ0eSkKICAgICAgbGV0IGNvZGUgPSAnJzsKICAgICAgaWYgKHR5cGVvZiBmaWxlRGF0YSA9PT0gJ3N0cmluZycpIHsKICAgICAgICBjb2RlID0gZmlsZURhdGE7CiAgICAgIH0gZWxzZSBpZiAoZmlsZURhdGEgJiYgdHlwZW9mIGZpbGVEYXRhID09PSAnb2JqZWN0JyAmJiBmaWxlRGF0YS5jb2RlKSB7CiAgICAgICAgY29kZSA9IFN0cmluZyhmaWxlRGF0YS5jb2RlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm47IC8vIFNraXAgaW52YWxpZCBmaWxlIGRhdGEKICAgICAgfQogICAgICAKICAgICAgLy8gVmFsaWRhdGUgZmlsZSBzaXplCiAgICAgIGlmIChjb2RlLmxlbmd0aCA+IHRoaXMuY29udGV4dFZhbGlkYXRpb24ubWF4Q29kZUZpbGVTaXplKSB7CiAgICAgICAgY29uc29sZS53YXJuKGBGaWxlICR7ZmlsZVBhdGh9IGV4Y2VlZHMgc2l6ZSBsaW1pdCwgdHJ1bmNhdGluZy4uLmApOwogICAgICAgIGNvZGUgPSBjb2RlLnN1YnN0cmluZygwLCB0aGlzLmNvbnRleHRWYWxpZGF0aW9uLm1heENvZGVGaWxlU2l6ZSk7CiAgICAgIH0KICAgICAgCiAgICAgIHZhbGlkYXRlZEZpbGVzW2ZpbGVQYXRoXSA9IHsKICAgICAgICBjb2RlOiBjb2RlLAogICAgICAgIGhpZGRlbjogZmlsZURhdGEuaGlkZGVuIHx8IGZhbHNlCiAgICAgIH07CiAgICB9KTsKICAgIAogICAgcmV0dXJuIHZhbGlkYXRlZEZpbGVzOwogIH0KCiAgaXNDb250ZXh0RXhwaXJlZCh0aW1lc3RhbXApIHsKICAgIGlmICghdGltZXN0YW1wKSByZXR1cm4gdHJ1ZTsKICAgIGNvbnN0IGV4cGlyeVRpbWUgPSB0aGlzLmNvbnRleHRWYWxpZGF0aW9uLmNvbnRleHRFeHBpcnlIb3VycyAqIDYwICogNjAgKiAxMDAwOwogICAgcmV0dXJuIChEYXRlLm5vdygpIC0gdGltZXN0YW1wKSA+IGV4cGlyeVRpbWU7CiAgfQoKICAvLyBVc2VjYXNlIG1hbmFnZW1lbnQKICBzYXZlQ3VycmVudFVzZWNhc2UodXNlY2FzZSkgewogICAgdHJ5IHsKICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlS2V5cy5DVVJSRU5UX1VTRUNBU0UsIHVzZWNhc2UpOwogICAgICBjb25zb2xlLmxvZyhg8J+OryBTZXQgY3VycmVudCB1c2VjYXNlOiAke3VzZWNhc2V9YCk7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBzYXZlIGN1cnJlbnQgdXNlY2FzZTonLCBlcnJvcik7CiAgICB9CiAgfQoKICBsb2FkQ3VycmVudFVzZWNhc2UoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5cy5DVVJSRU5UX1VTRUNBU0UpIHx8ICdkZWZhdWx0JzsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgY3VycmVudCB1c2VjYXNlOicsIGVycm9yKTsKICAgICAgcmV0dXJuICdkZWZhdWx0JzsKICAgIH0KICB9CgogIC8vIENvbnRleHQgbWV0YWRhdGEgbWFuYWdlbWVudAogIHVwZGF0ZUNvbnRleHRNZXRhZGF0YShtZXRhZGF0YSkgewogICAgdHJ5IHsKICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmxvYWRDb250ZXh0TWV0YWRhdGEoKTsKICAgICAgY29uc3QgdXBkYXRlZCA9IHsgLi4uZXhpc3RpbmcsIC4uLm1ldGFkYXRhIH07CiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleXMuQ09OVEVYVF9NRVRBREFUQSwgSlNPTi5zdHJpbmdpZnkodXBkYXRlZCkpOwogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gdXBkYXRlIGNvbnRleHQgbWV0YWRhdGE6JywgZXJyb3IpOwogICAgfQogIH0KCiAgbG9hZENvbnRleHRNZXRhZGF0YSgpIHsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHNhdmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5cy5DT05URVhUX01FVEFEQVRBKTsKICAgICAgcmV0dXJuIHNhdmVkID8gSlNPTi5wYXJzZShzYXZlZCkgOiB7fTsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgY29udGV4dCBtZXRhZGF0YTonLCBlcnJvcik7CiAgICAgIHJldHVybiB7fTsKICAgIH0KICB9CgogIC8vIENsZWFyIHNwZWNpZmljIGRhdGEgdHlwZXMKICBjbGVhckNoYXRIaXN0b3J5KCkgewogICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5zdG9yYWdlS2V5cy5DSEFUX0hJU1RPUlkpOwogICAgY29uc29sZS5sb2coJ/Cfl5HvuI8gQ2xlYXJlZCBjaGF0IGhpc3RvcnknKTsKICB9CgogIGNsZWFyQ29kZUZpbGVzKCkgewogICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5zdG9yYWdlS2V5cy5DT0RFX0ZJTEVTKTsKICAgIGNvbnNvbGUubG9nKCfwn5eR77iPIENsZWFyZWQgY29kZSBmaWxlcycpOwogIH0KCiAgLy8gQ29udGV4dCBoZWFsdGggY2hlY2sKICBnZXRDb250ZXh0SGVhbHRoKCkgewogICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmxvYWRDb250ZXh0TWV0YWRhdGEoKTsKICAgIGNvbnN0IGNoYXRIaXN0b3J5ID0gdGhpcy5sb2FkQ2hhdEhpc3RvcnkoKTsKICAgIGNvbnN0IGNvZGVGaWxlcyA9IHRoaXMubG9hZENvZGVGaWxlcygpOwogICAgCiAgICByZXR1cm4gewogICAgICBoYXNBY3RpdmVDb250ZXh0OiBjaGF0SGlzdG9yeS5sZW5ndGggPiAwIHx8IChjb2RlRmlsZXMgJiYgT2JqZWN0LmtleXMoY29kZUZpbGVzKS5sZW5ndGggPiAwKSwKICAgICAgY2hhdE1lc3NhZ2VDb3VudDogY2hhdEhpc3RvcnkubGVuZ3RoLAogICAgICBjb2RlRmlsZUNvdW50OiBjb2RlRmlsZXMgPyBPYmplY3Qua2V5cyhjb2RlRmlsZXMpLmxlbmd0aCA6IDAsCiAgICAgIGxhc3RBY3Rpdml0eTogTWF0aC5tYXgobWV0YWRhdGEubGFzdENoY