Build Data Visualization Dashboards in Minutes with AIRoshan Gehlot2026-01-05T04:45:46+00:00
PGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+Q29kaW5nIEFJIC0gV3JpdGVjcmVhbSBBSTwvdGl0bGU+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgIDx0aXRsZT5BSSBEYXRhIFZpc3VhbGl6YXRpb24gUGxhdGZvcm0gfCBDcmVhdGUgQmVhdXRpZnVsIENoYXJ0cyAmIERhc2hib2FyZHMgLSBXcml0ZWNyZWFtIEFJPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUcmFuc2Zvcm0geW91ciBkYXRhIGludG8gc3R1bm5pbmcgdmlzdWFsaXphdGlvbnMgd2l0aCBWaXpBSSdzIGludGVsbGlnZW50IHBsYXRmb3JtLiBDcmVhdGUgaW50ZXJhY3RpdmUgY2hhcnRzLCBkYXNoYm9hcmRzLCBhbmQgZGF0YSBzdG9yaWVzIHBvd2VyZWQgYnkgQUkuIiAvPgogICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9IkFJIGRhdGEgdmlzdWFsaXphdGlvbiwgY2hhcnRzIGdlbmVyYXRvciwgZGFzaGJvYXJkIGJ1aWxkZXIsIGRhdGEgYW5hbHl0aWNzLCBpbnRlcmFjdGl2ZSBjaGFydHMsIGJ1c2luZXNzIGludGVsbGlnZW5jZSwgZGF0YSBzdG9yeXRlbGxpbmcsIHZpc3VhbGl6YXRpb24gdG9vbHMiIC8+CiAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IldyaXRlY3JlYW0gQUkiIC8+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9ImluZGV4LCBmb2xsb3csIG1heC1zbmlwcGV0Oi0xLCBtYXgtaW1hZ2UtcHJldmlldzpsYXJnZSwgbWF4LXZpZGVvLXByZXZpZXc6LTEiIC8+CiAgICA8bWV0YSBuYW1lPSJsYW5ndWFnZSIgY29udGVudD0iRW5nbGlzaCIgLz4KICAgIDxtZXRhIG5hbWU9ImRpc3RyaWJ1dGlvbiIgY29udGVudD0iZ2xvYmFsIiAvPgogICAgPG1ldGEgbmFtZT0icmF0aW5nIiBjb250ZW50PSJHZW5lcmFsIiAvPgogICAgPG1ldGEgbmFtZT0icmV2aXNpdC1hZnRlciIgY29udGVudD0iNyBkYXlzIiAvPgogICAgPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiNmZmZmZmYiIC8+CiAgICA8bWV0YSBuYW1lPSJhcHBsaWNhdGlvbi1uYW1lIiBjb250ZW50PSJWaXpBSSBQbGF0Zm9ybSIgLz4KCiAgICA8IS0tIENhbm9uaWNhbCAtLT4KICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS92aXotYWkvIiAvPgoKICAgIDwhLS0gRmF2aWNvbnMgLS0+CiAgICA8bGluayByZWw9Imljb24iIGhyZWY9Ii9mYXZpY29uLmljbyIgLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjE4MHgxODAiIGhyZWY9Ii9hcHBsZS10b3VjaC1pY29uLnBuZyIgLz4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iMzJ4MzIiIGhyZWY9Ii9mYXZpY29uLTMyeDMyLnBuZyIgLz4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iMTZ4MTYiIGhyZWY9Ii9mYXZpY29uLTE2eDE2LnBuZyIgLz4KCiAgICA8IS0tIE9wZW4gR3JhcGggLyBGYWNlYm9vayAtLT4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vdml6LWFpLyIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iVml6QUkgLSBJbnRlbGxpZ2VudCBEYXRhIFZpc3VhbGl6YXRpb24gUG93ZXJlZCBieSBBSSIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iQ3JlYXRlIHN0dW5uaW5nIGRhdGEgdmlzdWFsaXphdGlvbnMsIGludGVyYWN0aXZlIGRhc2hib2FyZHMsIGFuZCBkYXRhIHN0b3JpZXMgaW5zdGFudGx5IHdpdGggQUkuIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMy92aXotYWkucG5nIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iV3JpdGVjcmVhbSBBSSIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpsb2NhbGUiIGNvbnRlbnQ9ImVuX1VTIiAvPgoKICAgIDwhLS0gVHdpdHRlciBDYXJkcyAtLT4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6Y2FyZCIgY29udGVudD0ic3VtbWFyeV9sYXJnZV9pbWFnZSIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6dXJsIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS92aXotYWkvIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0iVml6QUkgLSBBSS1Qb3dlcmVkIERhdGEgVmlzdWFsaXphdGlvbiIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkNyZWF0ZSBiZWF1dGlmdWwgY2hhcnRzLCBkYXNoYm9hcmRzLCBhbmQgZGF0YSB2aXN1YWxpemF0aW9ucyBpbnN0YW50bHkgd2l0aCBBSS4gVHJhbnNmb3JtIHlvdXIgZGF0YSBpbnRvIGluc2lnaHRzLiIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzAzL3Zpei1haS5wbmciIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNyZWF0b3IiIGNvbnRlbnQ9IkBXcml0ZUNyZWFtQUkiIC8+CgogICAgPCEtLSBJbnN0YWdyYW0gLS0+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6c2VlX2Fsc28iIGNvbnRlbnQ9Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vd3JpdGVjcmVhbWFpLyIgLz4KICAgIDxtZXRhIG5hbWU9Imluc3RhZ3JhbTpzaXRlIiBjb250ZW50PSJAd3JpdGVjcmVhbWFpIiAvPgogICAgPG1ldGEgbmFtZT0iaW5zdGFncmFtOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMy9sZWFybi1haS5wbmciIC8+CgogICAgPCEtLSBBZGRpdGlvbmFsIFNFTyBNZXRhIFRhZ3MgLS0+CiAgICA8bWV0YSBuYW1lPSJnZW8ucmVnaW9uIiBjb250ZW50PSJVUyIgLz4KICAgIDxtZXRhIG5hbWU9Imdlby5wbGFjZW5hbWUiIGNvbnRlbnQ9Ik5ldyBZb3JrLCBVU0EiIC8+CiAgICA8bWV0YSBuYW1lPSJnZW8ucG9zaXRpb24iIGNvbnRlbnQ9IjQwLjcxMjg7LTc0LjAwNjAiIC8+CiAgICA8bWV0YSBuYW1lPSJJQ0JNIiBjb250ZW50PSI0MC43MTI4LCAtNzQuMDA2MCIgLz4KICAgIDxtZXRhIG5hbWU9Im1vYmlsZS13ZWItYXBwLWNhcGFibGUiIGNvbnRlbnQ9InllcyIgLz4KICAgIDxtZXRhIG5hbWU9IkhhbmRoZWxkRnJpZW5kbHkiIGNvbnRlbnQ9InRydWUiIC8+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiIC8+CgogICAgPCEtLSBTY2hlbWEgTWFya3VwIChKU09OLUxEKSAtLT4KICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+CiAgewogICAgIkBjb250ZXh0IjogImh0dHBzOi8vc2NoZW1hLm9yZyIsCiAgICAiQHR5cGUiOiAiV2ViQXBwbGljYXRpb24iLAogICAgIm5hbWUiOiAiVml6QUkgLSBXcml0ZWNyZWFtIEFJIiwKICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vdml6LWFpLyIsCiAgICAiZGVzY3JpcHRpb24iOiAiSW50ZWxsaWdlbnQgZGF0YSB2aXN1YWxpemF0aW9uIHBsYXRmb3JtIHdpdGggQUktcG93ZXJlZCBjaGFydHMsIGludGVyYWN0aXZlIGRhc2hib2FyZHMsIGFuZCBkYXRhIHN0b3J5dGVsbGluZyB0b29scy4iLAogICAgImFwcGxpY2F0aW9uQ2F0ZWdvcnkiOiAiQnVzaW5lc3NBcHBsaWNhdGlvbiIsCiAgICAib3BlcmF0aW5nU3lzdGVtIjogIkFsbCIsCiAgICAib2ZmZXJzIjogewogICAgICAiQHR5cGUiOiAiT2ZmZXIiLAogICAgICAicHJpY2UiOiAiMC4wMCIsCiAgICAgICJwcmljZUN1cnJlbmN5IjogIlVTRCIKICAgIH0sCiAgICAicHVibGlzaGVyIjogewogICAgICAiQHR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICAgIm5hbWUiOiAiV3JpdGVjcmVhbSBBSSIsCiAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vIgogICAgfSwKICAgICJhZ2dyZWdhdGVSYXRpbmciOiB7CiAgICAgICJAdHlwZSI6ICJBZ2dyZWdhdGVSYXRpbmciLAogICAgICAicmF0aW5nVmFsdWUiOiAiNC45IiwKICAgICAgInJldmlld0NvdW50IjogIjQyMDAiCiAgICB9CiAgfQogIDwvc2NyaXB0PgoKICAgIDwhLS0gRm9udHMgYW5kIENTUyAtLT4KICAgIDwhLS0gPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIiAvPgogIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4gLz4KICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PU91dGZpdDp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZmYW1pbHk9U3BhY2UrR3JvdGVzazp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCIgLz4KICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ZvbnQtYXdlc29tZS82LjAuMC9jc3MvYWxsLm1pbi5jc3MiIC8+IC0tPgogICAgPHNjcmlwdCB0eXBlPSJpbXBvcnRtYXAiPgogICAgICB7CiAgICAgICAgImltcG9ydHMiOiB7CiAgICAgICAgICAicmVhY3QiOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3RAMTguMi4wIiwKICAgICAgICAgICJyZWFjdC1kb20iOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3QtZG9tQDE4LjIuMCIsCiAgICAgICAgICAicmVhY3QtZG9tLyI6ICJodHRwczovL2VzbS5zaC9yZWFjdC1kb21AMTguMi4wLyIsCiAgICAgICAgICAiQGNvZGVzYW5kYm94L3NhbmRwYWNrLXJlYWN0IjogImh0dHBzOi8vZXNtLnNoL0Bjb2Rlc2FuZGJveC9zYW5kcGFjay1yZWFjdEAyLjguMD9kZXBzPXJlYWN0QDE4LjIuMCZkZXBzPXJlYWN0LWRvbUAxOC4yLjAiCiAgICAgICAgfQogICAgICB9CiAgICA8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2tpdC5mb250YXdlc29tZS5jb20vYmMwODE3OTJkNC5qcyIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+CgogICAgPHN0eWxlPgogICAgICAgIDpyb290IHsKICAgICAgICAgICAgLS1wcmltYXJ5LWNvbG9yOiAjMmQyZDJkOwogICAgICAgICAgICAtLWFjY2VudC1jb2xvcjogIzRhOTBlMjsKICAgICAgICAgICAgLS1ibHVlLWNvbG9yOiAjNGE5MGUyOwoKICAgICAgICAgICAgLyogRGFyayB0aGVtZSBjb2xvcnMgKGRlZmF1bHQgYW5kIG9ubHkgdGhlbWUpICovCiAgICAgICAgICAgIC0tYmctY29sb3I6ICMwMDAwMDA7CiAgICAgICAgICAgIC0tc3VyZmFjZS1jb2xvcjogIzJkMmQyZDsKICAgICAgICAgICAgLS10ZXh0LWNvbG9yOiAjZTBlMGUwOwogICAgICAgICAgICAtLWJvcmRlci1jb2xvcjogIzQwNDA0MDsKICAgICAgICAgICAgLS1pbnB1dC1iZzogIzJkMmQyZDsKICAgICAgICAgICAgLS1pbnB1dC1ib3JkZXI6ICM0MDQwNDA7CiAgICAgICAgICAgIC0tcGlsbC1iZzogIzMzMzMzMzsKICAgICAgICAgICAgLS1idXR0b24tYmc6ICM0MDQwNDA7CiAgICAgICAgICAgIC0tc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICAgICAgICAgIC0taGVhZGVyLWJvcmRlcjogIzQwNDA0MDsKICAgICAgICAgICAgLS1mb290ZXItYmc6ICMyZDJkMmQ7CiAgICAgICAgICAgIC0tY2FyZC1iZzogIzMzMzMzMzsKICAgICAgICAgICAgLS1iZy1zZWNvbmRhcnk6ICM0NDQ0NDQ7CiAgICAgICAgICAgIC0tdGV4dC1zZWNvbmRhcnk6ICNjY2NjY2M7CiAgICAgICAgICAgIC0tYmx1ZS1ob3ZlcjogIzNhN2JjODsKICAgICAgICB9CgogICAgICAgIC8qIFNjcm9sbGJhciB3aWR0aCAqLwogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgICAgICB3aWR0aDogMTJweDsKICAgICAgICB9CgogICAgICAgIC8qIFRyYWNrIChiYWNrZ3JvdW5kKSAqLwogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMWExYTFhOwogICAgICAgICAgICAvKiBkYXJrIGJhY2tncm91bmQgKi8KICAgICAgICB9CgogICAgICAgIC8qIEhhbmRsZSAodGh1bWIpICovCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICM1NTU7CiAgICAgICAgICAgIC8qIGRhcmsgZ3JheSAqLwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgfQoKICAgICAgICAvKiBIYW5kbGUgb24gaG92ZXIgKi8KICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzc3NzsKICAgICAgICB9CgogICAgICAgIC8qIEJhc2UgY2hhdCBidWJibGUgc3R5bGVzIGZvciBkYXJrIHRoZW1lICovCiAgICAgICAgLmNoYXQtYnViYmxlLmFpIHsKICAgICAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNhM2EzYTsKICAgICAgICAgICAgLyogTW9yZSBzcGVjaWZpYyB0aGFuIC0tc3VyZmFjZS1jb2xvciAqLwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM1MDUwNTA7CiAgICAgICAgICAgIC8qIE1vcmUgc3BlY2lmaWMgdGhhbiAtLWJvcmRlci1jb2xvciAqLwogICAgICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLmNoYXQtYnViYmxlLmFpOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIGxlZnQ6IC04cHg7CiAgICAgICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgICAgIGhlaWdodDogOHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2EzYTNhOwogICAgICAgICAgICAvKiBNYXRjaGVzIHRoZSBidWJibGUgYmFja2dyb3VuZCAqLwogICAgICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTAwJSAwLCAwJSAxMDAlLCAxMDAlIDEwMCUpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5naXRodWItc3RhcnMsCiAgICAgICAgLmdpdGh1Yi1sYWJlbCB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgICAgICB9CgogICAgICAgIC5iYWRnZS10b2dldGhlciB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgIH0KCiAgICAgICAgKiB7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzIFRoZW1lIENvbXBhdGliaWxpdHkgLSBGdWxsIFBhZ2UgQmFja2dyb3VuZCAqLwogICAgICAgIGJvZHksCiAgICAgICAgaHRtbCB7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFdvcmRQcmVzcyBjb250YWluZXIgYWRqdXN0bWVudHMgLSBGdWxsIHdpZHRoICovCiAgICAgICAgLmNvbnRhaW5lciwKICAgICAgICAuY29udGFpbmVyLWZsdWlkLAogICAgICAgIC53cmFwcGVyLAogICAgICAgIC5jb250ZW50LAogICAgICAgIC5tYWluLAogICAgICAgIC5zaXRlLWNvbnRlbnQsCiAgICAgICAgLmVudHJ5LWNvbnRlbnQsCiAgICAgICAgLnBhZ2UtY29udGVudCB7CiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGb290ZXIgZnVsbCB3aWR0aCBvdmVycmlkZSBmb3IgV29yZFByZXNzIGNvbnRhaW5lcnMgKi8KICAgICAgICAjd3JhcHBlciAuZm9vdGVyLCAKICAgICAgICAuZnVzaW9uLXdyYXBwZXIgLmZvb3RlciwKICAgICAgICAuZnVzaW9uLXBhZ2Utd3JhcHBlciAuZm9vdGVyLAogICAgICAgIC5mdXNpb24tcGFnZS13cmFwcGVyLXJvdyAuZm9vdGVyLAogICAgICAgIGJvZHkgLmZvb3RlciwKICAgICAgICBmb290ZXIuZm9vdGVyIHsKICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBBZGRpdGlvbmFsIFdvcmRQcmVzcyB3cmFwcGVyIG92ZXJyaWRlcyBmb3IgZm9vdGVyIGFyZWEgKi8KICAgICAgICAjbWFpbiAuZm9vdGVyLAogICAgICAgIC5mdXNpb24tcGFnZS13cmFwcGVyIC5mb290ZXIsCiAgICAgICAgLmZ1c2lvbi13cmFwcGVyIC5mb290ZXIsCiAgICAgICAgLmZ1c2lvbi1wYWdlLXdyYXBwZXItcm93IC5mb290ZXIsCiAgICAgICAgLmZ1c2lvbi1idWlsZGVyLXJvdyAuZm9vdGVyIHsKICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBFbnN1cmUgb3VyIGNvbnRlbnQgd29ya3Mgd2l0aGluIFdvcmRQcmVzcyAqLwogICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICAgICAgICAgIGNvbG9yOiAjZTBlMGUwOwogICAgICAgIH0KCiAgICAgICAgLyogRml4IGhlcm8gc2VjdGlvbiBjb250ZW50IGNlbnRlcmluZyAtIGtlZXAgY29udGVudCBjZW50ZXJlZCBidXQgYmFja2dyb3VuZCBmdWxsLXdpZHRoICovCiAgICAgICAgLmhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmhlcm8tY29udGVudCwKICAgICAgICAuaGVyby10ZXh0IHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDgwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IHN0YXIgbG9nbyBwb3NpdGlvbmluZyAtIGtlZXAgaXQgY2VudGVyZWQgKi8KICAgICAgICAuaGVyby1zZWN0aW9uIGgxIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDE1cHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5oZXJvLXNlY3Rpb24gcCB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IHRoZSBhY3R1YWwgaW5wdXQgY29udGFpbmVyIGNsYXNzZXMgZnJvbSBIVE1MICovCiAgICAgICAgLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmlucHV0LWlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5pbnB1dC1pbm5lci1jb250YWluZXIudmVydGljYWwgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5pbnB1dC1jb250cm9scy1yb3cgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDEycHggMTJweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgZ2FwOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCBwcm9tcHQgaW5wdXQgc3R5bGluZyB0byBtYXRjaCBvcmlnaW5hbCAqLwogICAgICAgIC5wcm9tcHQtaW5wdXQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgIWltcG9ydGFudDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweCAxMnB4IDAgMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICAgICAgcmVzaXplOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDYwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LWhlaWdodDogMjAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgIH0KCgoKICAgICAgICAvKiBGaXggc3VnZ2VzdGVkIGFwcHMgc2VjdGlvbiAtIGNlbnRlcmVkIHdpdGggcHJvcGVyIHdpZHRoICovCiAgICAgICAgLnN1Z2dlc3RlZC1hcHBzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5zdWdnZXN0ZWQtYXBwIHsKICAgICAgICAgICAgbWFyZ2luOiA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCBmZWF0dXJlcyBncmlkIC0gMyBjYXJkcyBpbiBhIHJvdywgY2VudGVyZWQgKi8KICAgICAgICAuZmVhdHVyZXMtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMjgwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGdhcDogMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlLWNhcmQgewogICAgICAgICAgICB3aWR0aDogMjgwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAyODBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRW5zdXJlIGFsbCBzZWN0aW9ucyBhcmUgcHJvcGVybHkgY2VudGVyZWQgKi8KICAgICAgICAuZmVhdHVyZXMtc2VjdGlvbiwKICAgICAgICAuaG93LWl0LXdvcmtzLXNlY3Rpb24sCiAgICAgICAgLnBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICAuZGVtby1zZWN0aW9uLAogICAgICAgIC5jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICAudGVzdGltb25pYWxzLXNlY3Rpb24sCiAgICAgICAgLmN0YS1zZWN0aW9uIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzIHBhZ2Utc3BlY2lmaWMgc3R5bGluZyAtIEZ1bGwgYmFja2dyb3VuZCBjb3ZlcmFnZSAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBjb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IC00MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC0xNTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogNDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDE5MHB4KSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzLXNwZWNpZmljIGNlbnRlcmluZyBmb3IgSG93IEl0IFdvcmtzIHNlY3Rpb24gKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRm9yY2UgY2VudGVyIG9ubHkgdGhlIHN1YnRpdGxlIHRleHQgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogQ2VudGVyIEFMTCBzZWN0aW9uIHN1YnRpdGxlcyBpbiBXb3JkUHJlc3MgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhlcm8tc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYWN0aW9uLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY3RhLXN1YnRpdGxlIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDcwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBFbnN1cmUgc2VjdGlvbiB0aXRsZXMgYXJlIGNlbnRlcmVkICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3MtdGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYWN0aW9uLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS10aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY3RhLXRpdGxlIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzLXNwZWNpZmljIGNlbnRlcmluZyBmb3IgYWxsIHNlY3Rpb25zICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnJlYWR5LXRvLWNvZGUtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEFkZGl0aW9uYWwgV29yZFByZXNzIGNvbnRhaW5lciBvdmVycmlkZXMgZm9yIHByb3BlciBjZW50ZXJpbmcgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuaG93LWl0LXdvcmtzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLm1vcmUtY2FwYWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAucmVhZHktdG8tY29kZS1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAuZW5kbGVzcy1wb3NzaWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLnNlZS1pdC1pbi1hY3Rpb24tc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAubG92ZWQtYnktZGV2ZWxvcGVycy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5yZWFkeS10by1jb2RlLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmhvdy1pdC13b3Jrcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAuc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5tb3JlLWNhcGFiaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLnJlYWR5LXRvLWNvZGUtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuZW5kbGVzcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuYWN0aW9uLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5tb3JlLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5sb3ZlZC1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuY3RhLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmVuZGxlc3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmFjdGlvbi1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAubW9yZS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAubG92ZWQtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmN0YS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAuaG93LWl0LXdvcmtzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5lbmRsZXNzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5hY3Rpb24tc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLm1vcmUtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmxvdmVkLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5jdGEtc3VidGl0bGUgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEVuc3VyZSBXb3JkUHJlc3MgY29udGFpbmVycyBkb24ndCBhZGQgd2hpdGUgc3BhY2UgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndyYXBwZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmVudHJ5LWNvbnRlbnQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5wYWdlLWNvbnRlbnQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSBleGNlc3NpdmUgV29yZFByZXNzIG92ZXJyaWRlcyAtIGtlZXAgbWluaW1hbCAqLwoKICAgICAgICAvKiBXb3JkUHJlc3MgY29udGFpbmVyIGNvbXBhdGliaWxpdHkgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndyYXBwZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICB9CgogICAgICAgIC8qIFJlc3BvbnNpdmUgRGVzaWduIEltcHJvdmVtZW50cyAqLwogICAgICAgIC8qIEZvciBzY3JlZW5zIDkwMHB4IGFuZCBiZWxvdyAtIFNUQUNLIFZFUlRJQ0FMTFkgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgICAgICAgICAgLnN0ZXBzLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnN0ZXAtYXJyb3cgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc3RlcC1jYXJkIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogOTAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogOTAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEuNXJlbSAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc3RlcC10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5zdGVwLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS40ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIE1vYmlsZSByZXNwb25zaXZlIGZpeGVzICovCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBmb290ZXIgYmFja2dyb3VuZCBmaXggLSBpbmNyZWFzZWQgZXh0ZW5zaW9uICovCiAgICAgICAgICAgIGJvZHkgewogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNDBweDsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDQwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDMwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBFeHRlbmQgYmFja2dyb3VuZCBwYXR0ZXJuIGRvd24gc2lnbmlmaWNhbnRseSAqLwogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDMwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgaGVybyBzZWN0aW9uIGltcHJvdmVtZW50cyAqLwogICAgICAgICAgICAuaGVyby1zZWN0aW9uIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaW5zaWRlLWhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWljb24gaW1nIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAyLjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGhlaWdodDogMi41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS40ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDEwcHggMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAucG93ZXJlZC1waWxsIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvKiBFbnN1cmUgbGFuZGluZ1NlY3Rpb24gaGFzIHByb3BlciBwYWRkaW5nIG9uIG1vYmlsZSB0byBwcmV2ZW50IGVsZW1lbnRzIHRvdWNoaW5nIGVkZ2VzICovCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5wb3dlcmVkLXBpbGwgewogICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBpbnB1dCBzZWN0aW9uIGZpeGVzICovCiAgICAgICAgICAgIC5pbnB1dC1zZWN0aW9uIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5pbnB1dC1pbm5lci1jb250YWluZXIudmVydGljYWwgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb24gLnByb21wdC1pbnB1dCB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjg3NXJlbSAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDE1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtY29udHJvbHMtcm93IHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDhweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5xdWFsaXR5LXNlbGVjdG9yIHsKICAgICAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDEwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDE0MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5xdWFsaXR5LWRyb3Bkb3duIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDhweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnF1YWxpdHktdG9vbHRpcCB7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnF1YWxpdHktdG9vbHRpcCAudG9vbHRpcC1jb250ZW50IHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDIwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICByaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZ2VuZXJhdGUtY29kZS1idG4gewogICAgICAgICAgICAgICAgcGFkZGluZzogMC42MjVyZW0gMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTQwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmlucHV0LWNvbnRhaW5lciwKICAgICAgICAgICAgLnByb21wdC1pbnB1dCwKICAgICAgICAgICAgLmlucHV0LWdyb3VwIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgaGVybyBjb250ZW50ICovCiAgICAgICAgICAgIC5oZXJvLXNlY3Rpb24gewogICAgICAgICAgICAgICAgcGFkZGluZzogMnJlbSAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMiAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXN1YnRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXN1YnRpdGxlIGJyIHsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1jb250ZW50LAogICAgICAgICAgICAuaGVyby10ZXh0IHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBmZWF0dXJlcyBncmlkIC0gc2luZ2xlIGNvbHVtbiAqLwogICAgICAgICAgICAuZmVhdHVyZXMtZ3JpZCB7CiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDNyZW0gMCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZmVhdHVyZS1jYXJkIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxLjVyZW0gMS4yNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZmVhdHVyZS10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5mZWF0dXJlLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5mZWF0dXJlLWRlc2NyaXB0aW9uIGJyIHsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIGlucHV0IGNvbnRhaW5lcnMgKi8KICAgICAgICAgICAgLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5pbnB1dC1pbm5lci1jb250YWluZXIgewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnByb21wdC1pbnB1dCB7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIHF1aWNrIGFwcHMgKi8KICAgICAgICAgICAgLnF1aWNrLWFwcHMgewogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDAuNzVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5xdWljay1hcHAtYnRuIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtIDEuMjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZmxleDogMCAxIGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi13aWR0aDogZml0LWNvbnRlbnQgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIHN1Z2dlc3RlZCBhcHBzICovCiAgICAgICAgICAgIC5zdWdnZXN0ZWQtYXBwcyB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZS1zcGVjaWZpYyBiYWNrZ3JvdW5kIGhlaWdodCByZWR1Y3Rpb24gKi8KICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLAogICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0yMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDE3MHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBGdXJ0aGVyIHJlZHVjdGlvbiBmb3IgdmVyeSBzbWFsbCBzY3JlZW5zICovCiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkgewoKICAgICAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciwKICAgICAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0xMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTYwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkgewoKICAgICAgICAgICAgLyogRXh0cmEgc21hbGwgc2NyZWVucyAtIGltcHJvdmVkIGhlcm8gcmVzcG9uc2l2ZW5lc3MgKi8KICAgICAgICAgICAgLmhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxLjVyZW0gMC43NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1zZWN0aW9uIGgxIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXNlY3Rpb24gcCB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tdGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXN1YnRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBFeHRyYSBzbWFsbCBpbnB1dCBzZWN0aW9uICovCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5wcm9tcHQtaW5wdXQgewogICAgICAgICAgICAgICAgcGFkZGluZzogMC43NXJlbSAwLjg3NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5pbnB1dC1jb250cm9scy1yb3cgewogICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDhweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZ2FwOiA2cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnF1YWxpdHktZHJvcGRvd24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweCA2cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmdlbmVyYXRlLWNvZGUtYnRuIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwLjg3NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnF1aWNrLWFwcHMgewogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDAuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAucXVpY2stYXBwLWJ0biB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDhweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiA4cHggMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMyAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1pY29uIGltZyB7CiAgICAgICAgICAgICAgICB3aWR0aDogMnJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5wb3dlcmVkLXBpbGwgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDhweCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBFeHRyYSBzbWFsbCBzY3JlZW5zIC0gaW1wcm92ZWQgdGVzdGltb25pYWwgcmVzcG9uc2l2ZW5lc3MgKi8KICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAzMDBweDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMC41cmVtOwogICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gMS41cmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtbmF2IHsKICAgICAgICAgICAgICAgIHdpZHRoOiAzNXB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1uYXYucHJldi1idG4gewogICAgICAgICAgICAgICAgbGVmdDogNXB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtbmF2Lm5leHQtYnRuIHsKICAgICAgICAgICAgICAgIHJpZ2h0OiA1cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1jYXJkIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW07CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgNXB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtYXZhdGFyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAzNXB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtcXVvdGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWF1dGhvci1uYW1lIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWF1dGhvci10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItY29tcGFueSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWRvdHMgewogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgICAgICAgICAgICAgZ2FwOiAwLjVyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1kb3RzIC5kb3QgewogICAgICAgICAgICAgICAgd2lkdGg6IDhweDsKICAgICAgICAgICAgICAgIGhlaWdodDogOHB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZmVhdHVyZXMtZ3JpZCwKICAgICAgICAgICAgLnBvc3NpYmlsaXRpZXMtZ3JpZCwKICAgICAgICAgICAgLmNhcGFiaWxpdGllcy1ncmlkIHsKICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogQWRqdXN0IHRvcCBtYXJnaW4gZm9yIHZlcnkgc21hbGwgc2NyZWVucyAtIGluY3JlYXNlZCBleHRlbnNpb24gKi8KICAgICAgICAgICAgYm9keSB7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA1MHB4OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmFwcC1jb250YWluZXIgewogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIEV4dGVuZCBiYWNrZ3JvdW5kIHBhdHRlcm4gZG93biBmdXJ0aGVyIG9uIHNtYWxsIHNjcmVlbnMgKi8KICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uOjpiZWZvcmUgewogICAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyA2MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdTZWdvZSBVSScsIEFyaWFsLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZSwgY29sb3IgMC4zcyBlYXNlOwogICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgfQoKICAgICAgICAvKiBIaWRlIG1haW4gcGFnZSBzY3JvbGxiYXIgd2hlbiBhcHAgaXMgYWN0aXZlICovCiAgICAgICAgYm9keS5hcHAtYWN0aXZlIHsKICAgICAgICAgICAgLyogb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGhlaWdodDogMTAwdmg7ICovCiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgIH0KCiAgICAgICAgLyogTW9iaWxlIGJvZHkgaGFuZGxpbmcgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlIHsKICAgICAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIERlc2t0b3Agc2NyZWVucyBhYm92ZSA3NjhweCAtIHJlbW92ZSB3aGl0ZSBzcGFjZXMgKi8KICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIHsKICAgICAgICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZWFkZXItZmxleCB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC5jb250YWluZXIgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICB9CgogICAgICAgIC5oZWFkZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOSk7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTsKICAgICAgICAgICAgcGFkZGluZzogMXJlbSAwOwogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICB6LWluZGV4OiAxMDA7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSwgb3BhY2l0eSAwLjNzIGVhc2UsIHRyYW5zZm9ybSAwLjNzIGVhc2U7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgICAgIC8qIEhpZGRlbiBieSBkZWZhdWx0IG9uIGxhbmRpbmcgcGFnZSAqLwogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICB9CgogICAgICAgIC8qIFNob3cgaGVhZGVyIG9ubHkgd2hlbiBjb252ZXJzYXRpb24gaGFzIHN0YXJ0ZWQgKi8KICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmhlYWRlciB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQoKICAgICAgICAvKiBGdWxsLXdpZHRoIGhlYWRlciBmaXggb25seSB3aGVuIGFwcCBpcyBhY3RpdmUgKGR1cmluZyBnZW5lcmF0aW9uKSAtIGFib3ZlIDEwMjRweCAqLwogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHsKICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlIC5oZWFkZXIsCiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAjd3JhcHBlciAuaGVhZGVyLAogICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmZ1c2lvbi13cmFwcGVyIC5oZWFkZXIsCiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXBhZ2Utd3JhcHBlciAuaGVhZGVyLAogICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmZ1c2lvbi1wYWdlLXdyYXBwZXItcm93IC5oZWFkZXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiBjYWxjKDFyZW0gKyA1MHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmhlYWRlci1mbGV4IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB9CgogICAgICAgIC5sb2dvLWdyb3VwIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28tZ3JvdXA6aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xNSk7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgICAgICB9CgogICAgICAgIC5sb2dvLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgICAgICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogLTFweDsKICAgICAgICB9CgogICAgICAgIC5sb2dvLXRleHQgewogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIHRleHQtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28tdGV4dCAuYm9sZCB7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIH0KCiAgICAgICAgLmhlYWRlci1yaWdodCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgcGFkZGluZzogNnB4IDEycHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICByaWdodDogMjBweDsKICAgICAgICB9CgogICAgICAgIC5naXRodWItYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA1cHg7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgfQoKICAgICAgICAuZG93bmxvYWQtYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNGE5MGUyLCAjMzU3YWJkKTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB9CgogICAgICAgIC5kb3dubG9hZC1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMzU3YWJkLCAjMmE2YWEwKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLmRvd25sb2FkLWJ0bjphY3RpdmUgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQoKICAgICAgICAuZGVwbG95LW5ldGxpZnktYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDBhZDlmLCAjMDBkNGFhKTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgfQoKICAgICAgICAuZGVwbG95LW5ldGxpZnktYnRuOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwOTQ3ZiwgIzAwYjM5NCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDE3MywgMTU5LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLmRlcGxveS1uZXRsaWZ5LWJ0bjphY3RpdmUgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQoKICAgICAgICAvKiBTZXQgVG9rZW4gYnV0dG9uIHN0eWxlZCB0byBtYXRjaCBEZXBsb3kgdG8gTmV0bGlmeSAqLwogICAgICAgIC5zZXQtdG9rZW4tYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDBhZDlmLCAjMDBkNGFhKTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgfQoKICAgICAgICAuc2V0LXRva2VuLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk0N2YsICMwMGIzOTQpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAxNzMsIDE1OSwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC5zZXQtdG9rZW4tYnRuOmFjdGl2ZSB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CgogICAgICAgIC5kb3dubG9hZC1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLyogUG93ZXJlZCBwaWxsIHdyYXBwZXIgLSBlbnN1cmVzIGl0IHN0YXlzIHdpdGhpbiBzY3JlZW4gYm91bmRhcmllcyAqLwogICAgICAgICNsYW5kaW5nU2VjdGlvbiA+IGEgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgbWFyZ2luOiAycmVtIDA7CiAgICAgICAgfQoKICAgICAgICAucG93ZXJlZC1waWxsIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMjBweDsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50OwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLCBjb2xvciAwLjNzIGVhc2U7CiAgICAgICAgICAgIC8qIE1lcmdlZCBkYXJrIHRoZW1lIHN0eWxlcyAqLwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgfQoKICAgICAgICAubWFpbi1oZWFkaW5nIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBmb250LXNpemU6IDIuN3JlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMi41cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC8qIFR5cGluZyBhbmltYXRpb24gc3R5bGVzICovCiAgICAgICAgI2FuaW1hdGVkLXdvcmQgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgI