{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8IS0tIFNVQkRPTUFJTjogYWlnZW5pdXMuYnJhbmRoYW5kc2hha2UuY29tIC0tPgogICAgPCEtLSBJTlRFUk46IFRlbmRvIFRhbGlxIC0tPgogICAgPCEtLSBDT01QQU5ZOiBHZW5pdXMgRGlnaXRhbCAtLT4KICAgIDwhLS0gVElUTEU6IEd1aWxkIFNwZWFrZXIsIEdSQyBTY2llbmNlIEFuZCBDb21wdXRpbmcgRmFjdWx0eSwgTmRlamplIFVuaXZlcnNpdHkgLS0+CiAgICA8IS0tIFBBWU1FTlRTIEdPIFRPOiBUZW5kbydzIE1vYmlsZSBNb25leSBESVJFQ1RMWSAtLT4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KICAgIDx0aXRsZT5HZW5pdXMgQW1iYXNzYWRvciB8IFRlbmRvIFRhbGlxIHwgQnJhbmRIYW5kc2hha2U8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkdldCB5b3VyIHByZW1pdW0gZGlnaXRhbCBidXNpbmVzcyBjYXJkIGZyb20gVGVuZG8gVGFsaXEgLSBHdWlsZCBTcGVha2VyLCBHUkMgU2NpZW5jZSBBbmQgQ29tcHV0aW5nIEZhY3VsdHksIE5kZWpqZSBVbml2ZXJzaXR5ICYgRm91bmRlciBvZiBHZW5pdXMgRGlnaXRhbC4gQ2FyZHMgZnJvbSAkMTAuIj4KICAgIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0iaW5kZXgsIGZvbGxvdyI+CiAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9haWdlbml1cy5icmFuZGhhbmRzaGFrZS5jb20iPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1QbGF5ZmFpcitEaXNwbGF5OndnaHRANDAwOzUwMDs2MDA7NzAwOzgwMCZmYW1pbHk9Q29ybW9yYW50K0dhcmFtb25kOml0YWwsd2dodEAwLDQwMDswLDUwMDswLDYwMDsxLDQwMCZmYW1pbHk9TnVuaXRvOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8c3R5bGU+CiAgICAgICAgOnJvb3QgewogICAgICAgICAgICAtLW5hdnk6ICMwRDFCMkE7CiAgICAgICAgICAgIC0taW5kaWdvOiAjMUMxRjRBOwogICAgICAgICAgICAtLWdvbGQ6ICNENEFGMzc7CiAgICAgICAgICAgIC0taXZvcnk6ICNGOEY0RUM7CiAgICAgICAgICAgIC0tZGVlcGdvbGQ6ICNCODk3MkU7CiAgICAgICAgICAgIC0tY2hhcmNvYWw6ICMwYTBhMTI7CiAgICAgICAgICAgIC0tYmx1ZTogIzI1NjNlYjsKICAgICAgICAgICAgLS1ibHVlLWxpZ2h0OiAjM2I4MmY2OwogICAgICAgICAgICAtLWN5YW46ICMwNmI2ZDQ7CiAgICAgICAgICAgIC0tZWxlY3RyaWM6ICM4MThjZjg7CiAgICAgICAgICAgIC0tZ3JlZW46ICMxMGI5ODE7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KICAgICAgICBodG1sIHsgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7IH0KICAgICAgICAKICAgICAgICBib2R5IHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdOdW5pdG8nLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGFyY29hbCk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjc7CiAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEFOSU1BVEVEIEJBQ0tHUk9VTkQgKi8KICAgICAgICAuYmctbWFzdGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB6LWluZGV4OiAwOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDIwJSAxMCUsIHJnYmEoMzcsIDk5LCAyMzUsIDAuMykgMCUsIHRyYW5zcGFyZW50IDUwJSksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA4MCUgOTAlLCByZ2JhKDYsIDE4MiwgMjEyLCAwLjI1KSAwJSwgdHJhbnNwYXJlbnQgNDAlKSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDUwJSA1MCUsIHJnYmEoMTI5LCAxNDAsIDI0OCwgMC4yKSAwJSwgdHJhbnNwYXJlbnQgNjAlKSwKICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLWNoYXJjb2FsKSAwJSwgdmFyKC0tbmF2eSkgNTAlLCB2YXIoLS1pbmRpZ28pIDEwMCUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBGTE9BVElORyBTVEFSUyAqLwogICAgICAgIC5zdGFycy1jb250YWluZXIgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHRvcDogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQogICAgICAgIC5zdGFyIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgYW5pbWF0aW9uOiB0d2lua2xlIDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHR3aW5rbGUgewogICAgICAgICAgICAwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogc2NhbGUoMC41KSByb3RhdGUoMGRlZyk7IH0KICAgICAgICAgICAgNTAlIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGUoMTgwZGVnKTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBGTE9BVElORyBPUkJTICovCiAgICAgICAgLm9yYiB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBmaWx0ZXI6IGJsdXIoNjBweCk7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgICAgICBhbmltYXRpb246IGZsb2F0T3JiIDE1cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgLm9yYi0xIHsgd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4OyBiYWNrZ3JvdW5kOiByZ2JhKDM3LCA5OSwgMjM1LCAwLjMpOyB0b3A6IDEwJTsgbGVmdDogLTUlOyBhbmltYXRpb24tZGVsYXk6IDBzOyB9CiAgICAgICAgLm9yYi0yIHsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDI1MHB4OyBiYWNrZ3JvdW5kOiByZ2JhKDYsIDE4MiwgMjEyLCAwLjI1KTsgdG9wOiA2MCU7IHJpZ2h0OiAtNSU7IGFuaW1hdGlvbi1kZWxheTogNXM7IH0KICAgICAgICAub3JiLTMgeyB3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjIpOyBib3R0b206IDEwJTsgbGVmdDogMzAlOyBhbmltYXRpb24tZGVsYXk6IDEwczsgfQogICAgICAgIEBrZXlmcmFtZXMgZmxvYXRPcmIgewogICAgICAgICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApIHNjYWxlKDEpOyB9CiAgICAgICAgICAgIDI1JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDMwcHgsIC0zMHB4KSBzY2FsZSgxLjEpOyB9CiAgICAgICAgICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC0yMHB4LCAyMHB4KSBzY2FsZSgwLjkpOyB9CiAgICAgICAgICAgIDc1JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDIwcHgsIDMwcHgpIHNjYWxlKDEuMDUpOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFNQQVJLTEUgUEFSVElDTEVTICovCiAgICAgICAgLnNwYXJrbGVzIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgICAgICB6LWluZGV4OiAyOwogICAgICAgIH0KICAgICAgICAuc3BhcmtsZSB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgd2lkdGg6IDZweDsgaGVpZ2h0OiA2cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc3BhcmtsZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBzcGFya2xlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHNjYWxlKDApIHRyYW5zbGF0ZVkoMCk7IH0KICAgICAgICAgICAgNTAlIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiBzY2FsZSgxKSB0cmFuc2xhdGVZKC0yMHB4KTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAucGFnZS1jb250YWluZXIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDEwOyB9CiAgICAgICAgCiAgICAgICAgLyogTkFWSUdBVElPTiAqLwogICAgICAgIC50b3BuYXYgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7CiAgICAgICAgICAgIHotaW5kZXg6IDEwMDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTMsIDI3LCA0MiwgMC45KTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpOwogICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDQwcHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkOwogICAgICAgICAgICBib3JkZXItaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tYmx1ZSksIHZhcigtLWdvbGQpLCB2YXIoLS1jeWFuKSkgMTsKICAgICAgICB9CiAgICAgICAgLm5hdi1icmFuZCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9CiAgICAgICAgLm5hdi1icmFuZCAubG9nbyB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYmx1ZSksIHZhcigtLWN5YW4pLCB2YXIoLS1nb2xkKSk7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSBhdXRvOwogICAgICAgICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICAgICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgICAgICBhbmltYXRpb246IHNoaW1tZXJUZXh0IDNzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBzaGltbWVyVGV4dCB7CiAgICAgICAgICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgY2VudGVyOyB9CiAgICAgICAgICAgIDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMDAlIGNlbnRlcjsgfQogICAgICAgIH0KICAgICAgICAubmF2LWxpbmtzIHsgZGlzcGxheTogZmxleDsgZ2FwOiAxNXB4OyB9CiAgICAgICAgLm5hdi1saW5rcyBhIHsgCiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNyk7IAogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IAogICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5uYXYtbGlua3MgYTpob3ZlciB7IGNvbG9yOiB2YXIoLS1nb2xkKTsgfQogICAgICAgIAogICAgICAgIC8qIENPTE9SIFNDUk9MTCBCQU5ORVIgKi8KICAgICAgICAuY29sb3Itc2Nyb2xsLWNvbnRhaW5lciB7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tbmF2eSksIHZhcigtLWluZGlnbyksIHZhcigtLW5hdnkpKTsKICAgICAgICAgICAgcGFkZGluZzogMTJweCAwOwogICAgICAgICAgICBtYXJnaW4tdG9wOiA3MHB4OwogICAgICAgICAgICBib3JkZXItdG9wOiAycHggc29saWQgdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1jeWFuKTsKICAgICAgICB9CiAgICAgICAgLmNvbG9yLXNjcm9sbCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc2Nyb2xsTGVmdCAyMHMgbGluZWFyIGluZmluaXRlOwogICAgICAgIH0KICAgICAgICAuY29sb3Itc2Nyb2xsOmhvdmVyIHsgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDsgfQogICAgICAgIEBrZXlmcmFtZXMgc2Nyb2xsTGVmdCB7CiAgICAgICAgICAgIDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyB9CiAgICAgICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7IH0KICAgICAgICB9CiAgICAgICAgLnNjcm9sbC1pdGVtIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAyMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAwIDQwcHg7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC45KTsKICAgICAgICB9CiAgICAgICAgLnNjcm9sbC1pdGVtIC5zdGFyIHsgY29sb3I6IHZhcigtLWdvbGQpOyBhbmltYXRpb246IHB1bHNlIDFzIGVhc2UtaW4tb3V0IGluZmluaXRlOyB9CiAgICAgICAgQGtleWZyYW1lcyBwdWxzZSB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfQogICAgICAgICAgICA1MCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMyk7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogQU1CQVNTQURPUiBIRVJPIC0gRklYRUQgU1BBQ0lORyAqLwogICAgICAgIC5hbWJhc3NhZG9yLWhlcm8gewogICAgICAgICAgICBwYWRkaW5nOiA2MHB4IDIwcHggNjBweDsgLyogSW5jcmVhc2VkIHRvcCBwYWRkaW5nICovCiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogVFJJUExFIEJPUkRFUiBDQVJEICovCiAgICAgICAgLmFtYmFzc2Fkb3ItY2FyZCB7CiAgICAgICAgICAgIG1heC13aWR0aDogNTAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYmx1ZSksIHZhcigtLWN5YW4pLCB2YXIoLS1nb2xkKSwgdmFyKC0tYmx1ZSkpOwogICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDMwMCUgMzAwJTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBib3JkZXJHbG93IDVzIGVhc2UgaW5maW5pdGU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDM1cHg7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgYm9yZGVyR2xvdyB7CiAgICAgICAgICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgNTAlOyB9CiAgICAgICAgICAgIDUwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgNTAlOyB9CiAgICAgICAgICAgIDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSA1MCU7IH0KICAgICAgICB9CiAgICAgICAgLmFtYmFzc2Fkb3ItY2FyZC1pbm5lci0xIHsKICAgICAgICAgICAgcGFkZGluZzogNHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweDsKICAgICAgICB9CiAgICAgICAgLmFtYmFzc2Fkb3ItY2FyZC1pbm5lci0yIHsKICAgICAgICAgICAgcGFkZGluZzogNHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tY3lhbiksIHZhcigtLWdvbGQpKTsKICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDAlIDIwMCU7CiAgICAgICAgICAgIGFuaW1hdGlvbjogYm9yZGVyR2xvdyAzcyBlYXNlIGluZmluaXRlIHJldmVyc2U7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI3cHg7CiAgICAgICAgfQogICAgICAgIC5hbWJhc3NhZG9yLWNhcmQtaW5uZXItMyB7CiAgICAgICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW5kaWdvKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjRweDsKICAgICAgICB9CiAgICAgICAgLmFtYmFzc2Fkb3ItY2FyZC1jb250ZW50IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgzNywgOTksIDIzNSwgMC4xNSksIHJnYmEoMTMsIDI3LCA0MiwgMC45OCkpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICBwYWRkaW5nOiA2MHB4IDM1cHggNTBweDsgLyogTW9yZSB0b3AgcGFkZGluZyBmb3IgYmFkZ2UgKi8KICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBBTklNQVRFRCBHTE9XIEJFSElORCBBVkFUQVIgKi8KICAgICAgICAuYXZhdGFyLWdsb3cgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogNzBweDsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgICAgICAgIHdpZHRoOiAxNTBweDsKICAgICAgICAgICAgaGVpZ2h0OiAxNTBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSgzNywgOTksIDIzNSwgMC41KSwgdHJhbnNwYXJlbnQgNzAlKTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBnbG93UHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBnbG93UHVsc2UgewogICAgICAgICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSBzY2FsZSgxKTsgb3BhY2l0eTogMC41OyB9CiAgICAgICAgICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSBzY2FsZSgxLjIpOyBvcGFjaXR5OiAwLjg7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmFtYmFzc2Fkb3ItYmFkZ2UgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogLTE4cHg7CiAgICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tZGVlcGdvbGQpKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDM1cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC40KTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBiYWRnZVB1bHNlIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBiYWRnZVB1bHNlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC40KTsgfQogICAgICAgICAgICA1MCUgeyBib3gtc2hhZG93OiAwIDE1cHggNDBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC42KSwgMCAwIDIwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMyk7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNvbG9yLWNvZGUtYmFkZ2UgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDM3LCA5OSwgMjM1LCAwLjMpOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ibHVlKTsKICAgICAgICAgICAgcGFkZGluZzogMTBweCAyNXB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyNXB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1ibHVlLWxpZ2h0KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBib3JkZXJQdWxzZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBib3JkZXJQdWxzZSB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1ibHVlKTsgfQogICAgICAgICAgICA1MCUgeyBib3JkZXItY29sb3I6IHZhcigtLWN5YW4pOyB9CiAgICAgICAgfQogICAgICAgIC5jb2xvci1kb3QgewogICAgICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1ibHVlKSwgdmFyKC0tY3lhbikpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZG90UHVsc2UgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBkb3RQdWxzZSB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfQogICAgICAgICAgICA1MCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMyk7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogQ09NUFVURVIgQVZBVEFSIFdJVEggQ09ERSAqLwogICAgICAgIC5hbWJhc3NhZG9yLWF2YXRhciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMjsKICAgICAgICAgICAgd2lkdGg6IDEzMHB4OwogICAgICAgICAgICBoZWlnaHQ6IDEzMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1ibHVlKSwgdmFyKC0tY3lhbiksIHZhcigtLWVsZWN0cmljKSk7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSAyMDAlOwogICAgICAgICAgICBhbmltYXRpb246IGF2YXRhckdyYWRpZW50IDRzIGVhc2UgaW5maW5pdGU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDIwcHg7CiAgICAgICAgICAgIGJvcmRlcjogNnB4IHNvbGlkIHZhcigtLWdvbGQpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDIwcHggNTBweCByZ2JhKDM3LCA5OSwgMjM1LCAwLjQpOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIGF2YXRhckdyYWRpZW50IHsKICAgICAgICAgICAgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSA1MCU7IH0KICAgICAgICAgICAgNTAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSA1MCU7IH0KICAgICAgICAgICAgMTAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAlIDUwJTsgfQogICAgICAgIH0KICAgICAgICAuYXZhdGFyLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDMuMnJlbTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KICAgICAgICAuY29kZS1icmFja2V0cyB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIH0KICAgICAgICAuY29kZS1sZWZ0IHsgdG9wOiA1MCU7IGxlZnQ6IDhweDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyB9CiAgICAgICAgLmNvZGUtcmlnaHQgeyB0b3A6IDUwJTsgcmlnaHQ6IDhweDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyB9CiAgICAgICAgCiAgICAgICAgLmFtYmFzc2Fkb3ItbmFtZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDIuM3JlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDMwcHggcmdiYSgzNywgOTksIDIzNSwgMC41KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmFtYmFzc2Fkb3ItY29tcGFueSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgfQogICAgICAgIC5hbWJhc3NhZG9yLWNvbXBhbnkgLmljb24geyBhbmltYXRpb246IGJvdW5jZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTsgfQogICAgICAgIEBrZXlmcmFtZXMgYm91bmNlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KICAgICAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5hbWJhc3NhZG9yLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1jeWFuKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS40OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuYW1iYXNzYWRvci1yb2xlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjcpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBTT0NJQUwgSUNPTlMgKi8KICAgICAgICAuc29jaWFsLWljb25zIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTVweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CiAgICAgICAgLnNvY2lhbC1pY29uIHsKICAgICAgICAgICAgd2lkdGg6IDQycHg7CiAgICAgICAgICAgIGhlaWdodDogNDJweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgfQogICAgICAgIC5zb2NpYWwtaWNvbjpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KSBzY2FsZSgxLjEpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yKTsKICAgICAgICB9CiAgICAgICAgLnNvY2lhbC1pY29uLmxpbmtlZGluIHsgY29sb3I6ICMwQTY2QzI7IH0KICAgICAgICAuc29jaWFsLWljb24ubGlua2VkaW46aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDEwLCAxMDIsIDE5NCwgMC4yKTsgYm9yZGVyLWNvbG9yOiAjMEE2NkMyOyB9CiAgICAgICAgLnNvY2lhbC1pY29uLmluc3RhZ3JhbSB7IGNvbG9yOiAjRTQ0MDVGOyB9CiAgICAgICAgLnNvY2lhbC1pY29uLnRpa3RvayB7IGNvbG9yOiAjZmZmOyB9CiAgICAgICAgLnNvY2lhbC1pY29uLnggeyBjb2xvcjogI2ZmZjsgfQogICAgICAgIC5zb2NpYWwtaWNvbi5uZXdzbGV0dGVyIHsgY29sb3I6IHZhcigtLWdvbGQpOyB9CiAgICAgICAgLnNvY2lhbC1pY29uLm5ld3NsZXR0ZXI6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTsgfQogICAgICAgIAogICAgICAgIC5hbWJhc3NhZG9yLWNvbnRhY3QgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgfQogICAgICAgIC5jb250YWN0LWJ0biB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDhweDsKICAgICAgICAgICAgcGFkZGluZzogMTRweCAyNHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzNXB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQogICAgICAgIC5jb250YWN0LWJ0bjo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOyBsZWZ0OiAtMTAwJTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsMjU1LDI1NSwwLjMpLCB0cmFuc3BhcmVudCk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlOwogICAgICAgIH0KICAgICAgICAuY29udGFjdC1idG46aG92ZXI6OmJlZm9yZSB7IGxlZnQ6IDEwMCU7IH0KICAgICAgICAuY29udGFjdC1idG4ud2hhdHNhcHAgeyAKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzI1RDM2NiwgIzEyOEM3RSk7IAogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMzcsIDIxMSwgMTAyLCAwLjMpOwogICAgICAgIH0KICAgICAgICAuY29udGFjdC1idG4uY2FsbCB7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1ibHVlKSwgdmFyKC0tY3lhbikpOyAKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDM3LCA5OSwgMjM1LCAwLjMpOwogICAgICAgIH0KICAgICAgICAuY29udGFjdC1idG4ud2Vic2l0ZSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1kZWVwZ29sZCkpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpOwogICAgICAgIH0KICAgICAgICAuY29udGFjdC1idG46aG92ZXIgeyAKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpIHNjYWxlKDEuMDMpOyAKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogVkFMVUUgU0VDVElPTiAqLwogICAgICAgIC52YWx1ZS1zZWN0aW9uIHsKICAgICAgICAgICAgcGFkZGluZzogNTBweCAyMHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIC52YWx1ZS1zZWN0aW9uIGgyIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS44cmVtLCA0dncsIDIuNXJlbSk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQogICAgICAgIC52YWx1ZS1zZWN0aW9uIGgyIC5oaWdobGlnaHQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1ibHVlKSwgdmFyKC0tY3lhbiksIHZhcigtLWdvbGQpLCB2YXIoLS1ibHVlKSk7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMzAwJSBhdXRvOwogICAgICAgICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICAgICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgICAgICBhbmltYXRpb246IHNoaW1tZXJUZXh0IDRzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgLnZhbHVlLXNlY3Rpb24gcCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC44KTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1NTBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gMjVweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnByaWNlLWhpZ2hsaWdodCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBwYWRkaW5nOiAxOHB4IDUwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDJyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWJsdWUpLCB2YXIoLS1jeWFuKSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTVweCA0MHB4IHJnYmEoMzcsIDk5LCAyMzUsIDAuNCk7CiAgICAgICAgICAgIGFuaW1hdGlvbjogcHJpY2VHbG93IDJzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHByaWNlR2xvdyB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgYm94LXNoYWRvdzogMCAxNXB4IDQwcHggcmdiYSgzNywgOTksIDIzNSwgMC40KTsgfQogICAgICAgICAgICA1MCUgeyBib3gtc2hhZG93OiAwIDIwcHggNTBweCByZ2JhKDM3LCA5OSwgMjM1LCAwLjYpLCAwIDAgMzBweCByZ2JhKDYsIDE4MiwgMjEyLCAwLjMpOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFBSSUNJTkcgU0VDVElPTiAqLwogICAgICAgIC5wcmljaW5nLXNlY3Rpb24geyBwYWRkaW5nOiA1MHB4IDIwcHg7IH0KICAgICAgICAucHJpY2luZy1jb250YWluZXIgeyBtYXgtd2lkdGg6IDk1MHB4OyBtYXJnaW46IDAgYXV0bzsgfQogICAgICAgIC5wcmljaW5nLWhlYWRlciB7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLWJvdHRvbTogMzVweDsgfQogICAgICAgIC5wcmljaW5nLWhlYWRlciBoMyB7IAogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsgCiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tY3lhbikpOwogICAgICAgICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICAgICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBDVVJSRU5DWSBUT0dHTEUgKi8KICAgICAgICAuY3VycmVuY3ktdG9nZ2xlIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzcsIDk5LCAyMzUsIDAuMik7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWJsdWUpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyNXB4OwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLmN1cnJlbmN5LXRvZ2dsZTpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzcsIDk5LCAyMzUsIDAuNCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDIwcHggcmdiYSgzNywgOTksIDIzNSwgMC4zKTsKICAgICAgICB9CiAgICAgICAgLmN1cnJlbmN5LXRvZ2dsZS5hY3RpdmUgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tZGVlcGdvbGQpKTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICAgIH0KICAgICAgICAuY3VycmVuY3ktaWNvbiB7IGZvbnQtc2l6ZTogMS4xcmVtOyB9CiAgICAgICAgCiAgICAgICAgLnByaWNpbmctZ3JpZCB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7IGdhcDogMjBweDsgfQogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA4MDBweCkgeyAucHJpY2luZy1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IG1heC13aWR0aDogMzUwcHg7IG1hcmdpbjogMCBhdXRvOyB9IH0KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHsgCiAgICAgICAgICAgIC5oZXJvIHsgcGFkZGluZy10b3A6IDYwcHg7IH0KICAgICAgICAgICAgLmFtYmFzc2Fkb3ItYmFkZ2UgeyB0b3A6IC0xMHB4OyBwYWRkaW5nOiAxMHB4IDI1cHg7IGZvbnQtc2l6ZTogMC42cmVtOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wcmljaW5nLWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCByZ2JhKDI4LCAzMSwgNzQsIDAuNyksIHJnYmEoMTMsIDI3LCA0MiwgMC45NSkpOwogICAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYm9yZGVyLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1ibHVlKSwgdmFyKC0tY3lhbikpIDE7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDMwcHggMjBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWNhcmQ6OmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogLTUwJTsgbGVmdDogLTUwJTsKICAgICAgICAgICAgd2lkdGg6IDIwMCU7IGhlaWdodDogMjAwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgzNywgOTksIDIzNSwgMC4xKSwgdHJhbnNwYXJlbnQpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2U7CiAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWNhcmQ6aG92ZXI6OmJlZm9yZSB7IG9wYWNpdHk6IDE7IGFuaW1hdGlvbjogc2hpbmUgMS41cyBlYXNlOyB9CiAgICAgICAgQGtleWZyYW1lcyBzaGluZSB7CiAgICAgICAgICAgIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZVkoMTAwJSk7IH0KICAgICAgICAgICAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVZKC0xMDAlKTsgfQogICAgICAgIH0KICAgICAgICAucHJpY2luZy1jYXJkOmhvdmVyIHsgCiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCkgc2NhbGUoMS4wMik7IAogICAgICAgICAgICBib3JkZXItaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWN5YW4pLCB2YXIoLS1nb2xkKSwgdmFyKC0tYmx1ZSkpIDE7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWNhcmQuZmVhdHVyZWQgewogICAgICAgICAgICBib3JkZXItaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1jeWFuKSwgdmFyKC0tZ29sZCkpIDE7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoNiwgMTgyLCAyMTIsIDAuMiksIHJnYmEoMTMsIDI3LCA0MiwgMC45OCkpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwogICAgICAgIH0KICAgICAgICAucHJpY2luZy1jYXJkLmZlYXR1cmVkOmhvdmVyIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjA4KSB0cmFuc2xhdGVZKC0xMHB4KTsgfQogICAgICAgIAogICAgICAgIC5wcmljaW5nLWljb24geyAKICAgICAgICAgICAgZm9udC1zaXplOiAyLjhyZW07IAogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAgICAgICBhbmltYXRpb246IGljb25GbG9hdCAzcyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBpY29uRmxvYXQgewogICAgICAgICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogICAgICAgICAgICA1MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpOyB9CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLW5hbWUgeyAKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7IAogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsgCiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1jeWFuKTsgCiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsgCiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWZvciB7IGZvbnQtc2l6ZTogMC43NXJlbTsgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC41KTsgbWFyZ2luLWJvdHRvbTogMTJweDsgfQogICAgICAgIC5wcmljaW5nLXByaWNlIHsgCiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOyAKICAgICAgICAgICAgZm9udC1zaXplOiAyLjhyZW07IAogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOyAKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0taXZvcnkpLCB2YXIoLS1nb2xkKSk7CiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgICAgICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLXByaWNlIC5jdXJyZW5jeS1zeW1ib2wgeyBmb250LXNpemU6IDEuM3JlbTsgdmVydGljYWwtYWxpZ246IHN1cGVyOyB9CiAgICAgICAgLnByaWNpbmctcHJpY2UudWd4IHsgZm9udC1zaXplOiAxLjhyZW07IH0KICAgICAgICAucHJpY2luZy1wcmljZS51Z3ggLmN1cnJlbmN5LXN5bWJvbCB7IGZvbnQtc2l6ZTogMC45cmVtOyB9CiAgICAgICAgLnByaWNpbmctZmVhdHVyZXMgeyBsaXN0LXN0eWxlOiBub25lOyB0ZXh0LWFsaWduOiBsZWZ0OyBtYXJnaW4tYm90dG9tOiAyMHB4OyBmb250LXNpemU6IDAuODVyZW07IH0KICAgICAgICAucHJpY2luZy1mZWF0dXJlcyBsaSB7IAogICAgICAgICAgICBwYWRkaW5nOiA2cHggMDsgCiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7IAogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOyAKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDM3LCA5OSwgMjM1LCAwLjEpOwogICAgICAgIH0KICAgICAgICAucHJpY2luZy1mZWF0dXJlcyBsaTpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfQogICAgICAgIC5wcmljaW5nLWZlYXR1cmVzIC5jaGVjayB7IGNvbG9yOiB2YXIoLS1ncmVlbik7IGZvbnQtc2l6ZTogMXJlbTsgfQogICAgICAgIAogICAgICAgIC5wcmljaW5nLWJ0biB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOyAKICAgICAgICAgICAgd2lkdGg6IDEwMCU7IAogICAgICAgICAgICBwYWRkaW5nOiAxNHB4IDIwcHg7IAogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07IAogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OyAKICAgICAgICAgICAgYm9yZGVyOiBub25lOyAKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1ibHVlKSwgdmFyKC0tY3lhbikpOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAyNXB4IHJnYmEoMzcsIDk5LCAyMzUsIDAuMyk7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWJ0bjpob3ZlciB7IAogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7IAogICAgICAgICAgICBib3gtc2hhZG93OiAwIDE1cHggMzVweCByZ2JhKDM3LCA5OSwgMjM1LCAwLjUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBQUklDSU5HIFRFUk1TICovCiAgICAgICAgLnByaWNpbmctdGVybXMgewogICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICAgICAgICBtYXJnaW46IDMwcHggYXV0byAwOwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4IDI1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNywgOTksIDIzNSwgMC4yKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICB9CiAgICAgICAgLnRlcm1zLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIC50ZXJtcy1saXN0IHsKICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjgpOwogICAgICAgIH0KICAgICAgICAudGVybXMtbGlzdCBsaSB7CiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAwOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgfQogICAgICAgIC50ZXJtcy1jaGVjayB7IGNvbG9yOiB2YXIoLS1ncmVlbik7IH0KICAgICAgICAudGVybXMtd2FybiB7IGNvbG9yOiAjZjU5ZTBiOyB9CiAgICAgICAgCiAgICAgICAgLyogUEFZTUVOVCBTRUNUSU9OICovCiAgICAgICAgLnBheW1lbnQtc2VjdGlvbiB7IAogICAgICAgICAgICBwYWRkaW5nOiA1MHB4IDIwcHg7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgzNywgOTksIDIzNSwgMC4xKSwgdHJhbnNwYXJlbnQpOyAKICAgICAgICB9CiAgICAgICAgLnBheW1lbnQtYm94IHsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1MDBweDsgCiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHBhZGRpbmc6IDZweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYmx1ZSksIHZhcigtLWdvbGQpLCB2YXIoLS1jeWFuKSk7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSAyMDAlOwogICAgICAgICAgICBhbmltYXRpb246IGJvcmRlckdsb3cgNHMgZWFzZSBpbmZpbml0ZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweDsKICAgICAgICB9CiAgICAgICAgLnBheW1lbnQtYm94LWlubmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgzNywgOTksIDIzNSwgMC4xNSksIHJnYmEoMTMsIDI3LCA0MiwgMC45OCkpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyNXB4OwogICAgICAgICAgICBwYWRkaW5nOiA0NXB4IDM1cHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgLnBheW1lbnQtYm94IGgzIHsgCiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOyAKICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07IAogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OyAKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOyAKICAgICAgICB9CiAgICAgICAgLnBheW1lbnQtbnVtYmVyIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41cmVtOyAKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsgCiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsgCiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAzcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgICAgICAgcGFkZGluZzogMjBweCAzMHB4OyAKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMThweDsgCiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgYm9yZGVyOiAzcHggc29saWQ7CiAgICAgICAgICAgIGJvcmRlci1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYmx1ZSksIHZhcigtLWN5YW4pKSAxOwogICAgICAgICAgICBhbmltYXRpb246IG51bWJlckdsb3cgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgbnVtYmVyR2xvdyB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgYm94LXNoYWRvdzogMCAwIDIwcHggcmdiYSgzNywgOTksIDIzNSwgMC4zKTsgfQogICAgICAgICAgICA1MCUgeyBib3gtc2hhZG93OiAwIDAgNDBweCByZ2JhKDM3LCA5OSwgMjM1LCAwLjUpLCAwIDAgNjBweCByZ2JhKDYsIDE4MiwgMjEyLCAwLjMpOyB9CiAgICAgICAgfQogICAgICAgIC5wYXltZW50LW5hbWUgeyAKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07IAogICAgICAgICAgICBjb2xvcjogdmFyKC0tY3lhbik7IAogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIH0KICAgICAgICAucGF5bWVudC1zdGVwcyB7IAogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OyAKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjMpOyAKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMThweDsgCiAgICAgICAgICAgIHBhZGRpbmc6IDI1cHg7IAogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDM3LCA5OSwgMjM1LCAwLjIpOwogICAgICAgIH0KICAgICAgICAucGF5bWVudC1zdGVwcyBoNCB7IAogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07IAogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OyAKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgfQogICAgICAgIC5wYXltZW50LXN0ZXBzIG9sIHsgbWFyZ2luLWxlZnQ6IDIwcHg7IGZvbnQtc2l6ZTogMC45cmVtOyBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjkpOyB9CiAgICAgICAgLnBheW1lbnQtc3RlcHMgbGkgeyBtYXJnaW4tYm90dG9tOiAxMnB4OyB9CiAgICAgICAgLnBheW1lbnQtc3RlcHMgc3Ryb25nIHsgY29sb3I6IHZhcigtLWN5YW4pOyB9CiAgICAgICAgCiAgICAgICAgLyogT1JERVIgU0VDVElPTiAqLwogICAgICAgIC5vcmRlci1zZWN0aW9uIHsgcGFkZGluZzogNTBweCAyMHB4OyB9CiAgICAgICAgLm9yZGVyLWJveCB7CiAgICAgICAgICAgIG1heC13aWR0aDogNTAwcHg7IAogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgcGFkZGluZzogNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1ibHVlKSwgdmFyKC0tY3lhbiksIHZhcigtLWJsdWUpKTsKICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDAlIDIwMCU7CiAgICAgICAgICAgIGFuaW1hdGlvbjogYm9yZGVyR2xvdyA1cyBlYXNlIGluZmluaXRlOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgIH0KICAgICAgICAub3JkZXItYm94LWlubmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgyOCwgMzEsIDc0LCAwLjgpLCByZ2JhKDEzLCAyNywgNDIsIDAuOTgpKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjZweDsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAzMHB4OwogICAgICAgIH0KICAgICAgICAub3JkZXItYm94IGgzIHsgCiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOyAKICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07IAogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IAogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tY3lhbikpOwogICAgICAgICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICAgICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIH0KICAgICAgICAuZm9ybS1ncm91cCB7IG1hcmdpbi1ib3R0b206IDE4cHg7IH0KICAgICAgICAuZm9ybS1ncm91cCBsYWJlbCB7IAogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsgCiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTsgCiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAxLjVweDsgCiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IAogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjYpOyAKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OyAKICAgICAgICB9CiAgICAgICAgLmZvcm0tZ3JvdXAgaW5wdXQsIC5mb3JtLWdyb3VwIHNlbGVjdCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOyAKICAgICAgICAgICAgcGFkZGluZzogMTRweCAxOHB4OwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDM3LCA5OSwgMjM1LCAwLjMpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7IAogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5mb3JtLWdyb3VwIGlucHV0OmZvY3VzLCAuZm9ybS1ncm91cCBzZWxlY3Q6Zm9jdXMgeyAKICAgICAgICAgICAgb3V0bGluZTogbm9uZTsgCiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY3lhbik7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoNiwgMTgyLCAyMTIsIDAuMik7CiAgICAgICAgfQogICAgICAgIC5mb3JtLWdyb3VwIHNlbGVjdCB7IAogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7IAogICAgICAgICAgICBhcHBlYXJhbmNlOiBub25lOyAKICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEyJyBoZWlnaHQ9JzEyJyB2aWV3Qm94PScwIDAgMTIgMTInJTNFJTNDcGF0aCBmaWxsPSclMjMwNmI2ZDQnIGQ9J002IDhMMSAzaDEweicvJTNFJTNDL3N2ZyUzRSIpOyAKICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgCiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDE1cHggY2VudGVyOyAKICAgICAgICB9CiAgICAgICAgLmZvcm0tcm93IHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyBnYXA6IDE1cHg7IH0KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHsgLmZvcm0tcm93IHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH0gfQogICAgICAgIAogICAgICAgIC5zdWJtaXQtYnRuIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7IAogICAgICAgICAgICBwYWRkaW5nOiAxOHB4IDMwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1kZWVwZ29sZCkpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmF2eSk7IAogICAgICAgICAgICBmb250LXNpemU6IDFyZW07IAogICAgICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7IAogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzNXB4OyAKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOyAKICAgICAgICAgICAgbWFyZ2luLXRvcDogMTJweDsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxNXB4IDQwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuNCk7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgfQogICAgICAgIC5zdWJtaXQtYnRuOmhvdmVyIHsgCiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KSBzY2FsZSgxLjAyKTsgCiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMjBweCA1MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAub3JkZXItc3VjY2VzcyB7IGRpc3BsYXk6IG5vbmU7IHRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzogMzVweDsgfQogICAgICAgIC5vcmRlci1zdWNjZXNzIC5pY29uIHsgCiAgICAgICAgICAgIGZvbnQtc2l6ZTogNC41cmVtOyAKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBzdWNjZXNzQm91bmNlIDFzIGVhc2UtaW4tb3V0OwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHN1Y2Nlc3NCb3VuY2UgewogICAgICAgICAgICAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMCk7IH0KICAgICAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjIpOyB9CiAgICAgICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9CiAgICAgICAgfQogICAgICAgIC5vcmRlci1zdWNjZXNzIGgzIHsgCiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOyAKICAgICAgICAgICAgZm9udC1zaXplOiAxLjZyZW07IAogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ3JlZW4pOyAKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIERJU0NMQUlNRVIgKi8KICAgICAgICAuZGlzY2xhaW1lciB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjM0LCA4OCwgMTIsIDAuMTUpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIzNCwgODgsIDEyLCAwLjMpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuOCk7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgfQogICAgICAgIC5kaXNjbGFpbWVyIHN0cm9uZyB7IGNvbG9yOiB2YXIoLS1nb2xkKTsgfQogICAgICAgIAogICAgICAgIC8qIEFERC1PTlMgKi8KICAgICAgICAuYWRkb25zLXNlY3Rpb24gewogICAgICAgICAgICBtYXJnaW4tdG9wOiAyNXB4OwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDM3LCA5OSwgMjM1LCAwLjEpOwogICAgICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgcmdiYSgzNywgOTksIDIzNSwgMC4zKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgICAgICAuYWRkb25zLXNlY3Rpb24gaDQgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQogICAgICAgIC5hZGRvbi1pdGVtcyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTBweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgICB9CiAgICAgICAgLmFkZG9uLWl0ZW0gewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMzcsIDk5LCAyMzUsIDAuMik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjgpOwogICAgICAgIH0KICAgICAgICAuYWRkb24taXRlbS5ib251cyB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOwogICAgICAgIH0KICAgICAgICAuYWRkb24taXRlbS5ib251cyBzbWFsbCB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjZyZW07CiAgICAgICAgfQogICAgICAgIC5hZGRvbi1pY29uIHsgZm9udC1zaXplOiAwLjlyZW07IH0KICAgICAgICAuYWRkb24tbm90ZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjUpOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIPCfjrAgQ0FTSU5PIFNFQ1RJT04gKi8KICAgICAgICAuY2FzaW5vLXNlY3Rpb24gewogICAgICAgICAgICBwYWRkaW5nOiA1MHB4IDIwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xKSwgdHJhbnNwYXJlbnQpOwogICAgICAgIH0KICAgICAgICAuY2FzaW5vLWNvbnRhaW5lciB7CiAgICAgICAgICAgIG1heC13aWR0aDogNTAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIC5jYXNpbm8taGVhZGVyIGgzIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tY3lhbiksIHZhcigtLWdvbGQpKTsKICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDAlIGF1dG87CiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgICAgICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc2hpbW1lclRleHQgM3MgbGluZWFyIGluZmluaXRlOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICAgIH0KICAgICAgICAuY2FzaW5vLWhlYWRlciBwIHsgZm9udC1zaXplOiAxcmVtOyBjb2xvcjogdmFyKC0taXZvcnkpOyBtYXJnaW4tYm90dG9tOiA1cHg7IH0KICAgICAgICAuY2FzaW5vLWhlYWRlciAuY2FzaW5vLW5vdGUgeyBmb250LXNpemU6IDAuOHJlbTsgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC41KTsgbWFyZ2luLWJvdHRvbTogMjVweDsgfQogICAgICAgIAogICAgICAgIC5zbG90LW1hY2hpbmUgeyBwb3NpdGlvbjogcmVsYXRpdmU7IG1hcmdpbi1ib3R0b206IDI1cHg7IH0KICAgICAgICAuc2xvdC1mcmFtZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBnYXA6IDE1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsICMxYTFhMmUsICMxNjIxM2UpOwogICAgICAgICAgICBib3JkZXI6IDRweCBzb2xpZCB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICAgICAgcGFkZGluZzogMjVweCAyMHB4OwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggNDBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKSwgaW5zZXQgMCAwIDMwcHggcmdiYSgwLDAsMCwwLjUpOwogICAgICAgIH0KICAgICAgICAuc2xvdC1kaXNwbGF5IHsgZGlzcGxheTogZmxleDsgZ2FwOiA4cHg7IH0KICAgICAgICAuc2xvdC1yZWVsIHsKICAgICAgICAgICAgd2lkdGg6IDcwcHg7CiAgICAgICAgICAgIGhlaWdodDogODBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgIzBhMGExMiwgIzFDMUY0QSwgIzBhMGExMik7CiAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkIHZhcigtLWJsdWUpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDIwcHggcmdiYSgwLDAsMCwwLjgpOwogICAgICAgIH0KICAgICAgICAuc2xvdC1zeW1ib2wgeyBmb250LXNpemU6IDIuNXJlbTsgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXM7IH0KICAgICAgICAuc2xvdC1yZWVsLnNwaW5uaW5nIC5zbG90LXN5bWJvbCB7IGFuaW1hdGlvbjogc3BpblN5bWJvbCAwLjFzIGxpbmVhciBpbmZpbml0ZTsgfQogICAgICAgIEBrZXlmcmFtZXMgc3BpblN5bWJvbCB7CiAgICAgICAgICAgIDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsgfQogICAgICAgICAgICAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zbG90LWxldmVyIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yczsKICAgICAgICB9CiAgICAgICAgLnNsb3QtbGV2ZXI6aG92ZXIgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7IH0KICAgICAgICAuc2xvdC1sZXZlcjphY3RpdmUgeyB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpIHJvdGF0ZSgyMGRlZyk7IH0KICAgICAgICAubGV2ZXItYmFsbCB7CiAgICAgICAgICAgIHdpZHRoOiAyNXB4OwogICAgICAgICAgICBoZWlnaHQ6IDI1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZjZiNmIsICNjMDM5MmIpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEwcHggcmdiYSgwLDAsMCwwLjQpOwogICAgICAgIH0KICAgICAgICAubGV2ZXItc3RpY2sgewogICAgICAgICAgICB3aWR0aDogOHB4OwogICAgICAgICAgICBoZWlnaHQ6IDUwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2JkYzNjNywgIzk1YTVhNiwgI2JkYzNjNyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogLTVweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnNwaW4tYnRuIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgICAgICAgICAgcGFkZGluZzogMTZweCA0MHB4OwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWRlZXBnb2xkKSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjQpOwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgICAgIH0KICAgICAgICAuc3Bpbi1idG46aG92ZXIgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7IGJveC1zaGFkb3c6IDAgMTVweCA0MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjUpOyB9CiAgICAgICAgLnNwaW4tYnRuOmRpc2FibGVkIHsgb3BhY2l0eTogMC41OyBjdXJzb3I6IG5vdC1hbGxvd2VkOyB0cmFuc2Zvcm06IG5vbmU7IH0KICAgICAgICAKICAgICAgICAuc3Bpbi1yZXN1bHQgewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgICBwYWRkaW5nOiAyNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMzcsIDk5LCAyMzUsIDAuMyk7CiAgICAgICAgfQogICAgICAgIC5zcGluLXJlc3VsdC5zaG93IHsgZGlzcGxheTogYmxvY2s7IGFuaW1hdGlvbjogZmFkZUluVXAgMC41cyBlYXNlOyB9CiAgICAgICAgQGtleWZyYW1lcyBmYWRlSW5VcCB7CiAgICAgICAgICAgIGZyb20geyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7IH0KICAgICAgICAgICAgdG8geyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KICAgICAgICB9CiAgICAgICAgLnJlc3VsdC1pY29uIHsgZm9udC1zaXplOiAzcmVtOyBtYXJnaW4tYm90dG9tOiAxMHB4OyB9CiAgICAgICAgLnJlc3VsdC1tZXNzYWdlIHsgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7IGZvbnQtc2l6ZTogMS4zcmVtOyBjb2xvcjogdmFyKC0tZ29sZCk7IG1hcmdpbi1ib3R0b206IDhweDsgfQogICAgICAgIC5yZXN1bHQtc3VibWVzc2FnZSB7IGZvbnQtc2l6ZTogMC45cmVtOyBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjcpOyB9CiAgICAgICAgCiAgICAgICAgLndpbm5lci1jbGFpbSB7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgICAgIHBhZGRpbmc6IDMwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMTYsIDE4NSwgMTI5LCAwLjIpLCByZ2JhKDEzLCAyNywgNDIsIDAuOTUpKTsKICAgICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tZ3JlZW4pOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyNXB4OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIGFuaW1hdGlvbjogd2lubmVyUHVsc2UgMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgd2lubmVyUHVsc2UgewogICAgICAgICAgICAwJSwgMTAwJSB7IGJveC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjQpOyB9CiAgICAgICAgICAgIDUwJSB7IGJveC1zaGFkb3c6IDAgMCA0MHB4IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjYpLCAwIDAgNjBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTsgfQogICAgICAgIH0KICAgICAgICAud2lubmVyLWNsYWltLnNob3cgeyBkaXNwbGF5OiBibG9jazsgfQogICAgICAgIC53aW5uZXItY2xhaW0gaDQgeyBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsgZm9udC1zaXplOiAxLjVyZW07IGNvbG9yOiB2YXIoLS1nb2xkKTsgbWFyZ2luLWJvdHRvbTogMTBweDsgfQogICAgICAgIC5jbGFpbS1mb3JtIHsgbWFyZ2luLXRvcDogMjBweDsgfQogICAgICAgIC5jbGFpbS1mb3JtIGlucHV0IHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDE0cHggMThweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxNiwgMTg1LCAxMjksIDAuMyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgIH0KICAgICAgICAuY2xhaW0tZm9ybSBpbnB1dDpmb2N1cyB7IGJvcmRlci1jb2xvcjogdmFyKC0tZ3JlZW4pOyBvdXRsaW5lOiBub25lOyB9CiAgICAgICAgLmNsYWltLWZvcm0gYnV0dG9uIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdyZWVuKSwgIzA1OTY2OSk7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNvbmZldHRpLWNvbnRhaW5lciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyByaWdodDogMDsgYm90dG9tOiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTsgb3ZlcmZsb3c6IGhpZGRlbjsgfQogICAgICAgIC5jb25mZXR0aSB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgd2lkdGg6IDEwcHg7CiAgICAgICAgICAgIGhlaWdodDogMTBweDsKICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBjb25mZXR0aUZhbGwgM3MgZWFzZS1vdXQgZm9yd2FyZHM7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgY29uZmV0dGlGYWxsIHsKICAgICAgICAgICAgMCUgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMHB4KSByb3RhdGUoMGRlZyk7IH0KICAgICAgICAgICAgMTAwJSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MDBweCkgcm90YXRlKDcyMGRlZyk7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNhc2luby1mb290ZXIgeyBtYXJnaW4tdG9wOiAyNXB4OyB9CiAgICAgICAgLmNhc2luby1mb290ZXIgcCB7IGZvbnQtc2l6ZTogMC44NXJlbTsgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC42KTsgfQogICAgICAgIC5jYXNpbm8tZm9vdGVyIGEgeyBjb2xvcjogdmFyKC0tZ29sZCk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQogICAgICAgIAogICAgICAgIC8qIFBSTyBTRUNUSU9OICovCiAgICAgICAgLnByby1zZWN0aW9uIHsgcGFkZGluZzogNDBweCAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KICAgICAgICAucHJvLXNlY3Rpb24gcCB7IGNvbG9yOiByZ2JhKDI0OCwyNDQsMjM2LDAuNik7IG1hcmdpbi1ib3R0b206IDE1cHg7IGZvbnQtc2l6ZTogMC45NXJlbTsgfQogICAgICAgIC5wcm8tbGluayB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyAKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgCiAgICAgICAgICAgIGdhcDogMTBweDsKICAgICAgICAgICAgcGFkZGluZzogMTZweCAzNXB4OyAKICAgICAgICAgICAgYm9yZGVyOiAzcHggc29saWQ7CiAgICAgICAgICAgIGJvcmRlci1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWN5YW4pKSAxOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7IAogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IAogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzNXB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgfQogICAgICAgIC5wcm8tbGluazpob3ZlciB7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBGT09URVIgKi8KICAgICAgICAuZm9vdGVyIHsgCiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgCiAgICAgICAgICAgIHBhZGRpbmc6IDUwcHggMjBweCA0MHB4OyAKICAgICAgICAgICAgYm9yZGVyLXRvcDogM3B4IHNvbGlkOwogICAgICAgICAgICBib3JkZXItaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tYmx1ZSksIHZhcigtLWdvbGQpLCB2YXIoLS1jeWFuKSkgMTsKICAgICAgICB9CiAgICAgICAgLmZvb3Rlci1icmFuZCB7IAogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsgCiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtOyAKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYmx1ZSksIHZhcigtLWN5YW4pLCB2YXIoLS1nb2xkKSk7IAogICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgYXV0bzsKICAgICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7IAogICAgICAgICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc2hpbW1lclRleHQgM3MgbGluZWFyIGluZmluaXRlOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OyAKICAgICAgICB9CiAgICAgICAgLmZvb3Rlci10YWdsaW5lIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjYpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgfQogICAgICAgIC5mb290ZXItY29tcGFueSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFBST0pFQ1RTIFNFQ1RJT04gSU4gRk9PVEVSICovCiAgICAgICAgLmZvb3Rlci1wcm9qZWN0cyB7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDI1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzcsIDk5LCAyMzUsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogNjAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgfQogICAgICAgIC5mb290ZXItcHJvamVjdHMgaDQgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQogICAgICAgIC5wcm9qZWN0LWxpbmtzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIH0KICAgICAgICAucHJvamVjdC1saW5rIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogNnB4OwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE4cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNywgOTksIDIzNSwgMC4zKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tY3lhbik7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLnByb2plY3QtbGluazpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzcsIDk5LCAyMzUsIDAuMik7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY3lhbik7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgICAgICB9CiAgICAgICAgLnByb2plY3QtbGluayAuaWNvbiB7IGZvbnQtc2l6ZTogMC45cmVtOyB9CiAgICAgICAgCiAgICAgICAgLmZvb3Rlci1jb3B5IHsgZm9udC1zaXplOiAwLjdyZW07IGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuMyk7IH0KICAgICAgICAuZm9vdGVyLWNvcHkgYSB7IGNvbG9yOiB2YXIoLS1jeWFuKTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogICAgPGRpdiBjbGFzcz0iYmctbWFzdGVyIj48L2Rpdj4KICAgIAogICAgPCEtLSBGTE9BVElORyBPUkJTIC0tPgogICAgPGRpdiBjbGFzcz0ib3JiIG9yYi0xIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im9yYiBvcmItMiI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJvcmIgb3JiLTMiPjwvZGl2PgogICAgCiAgICA8IS0tIEZMT0FUSU5HIFNUQVJTIC0tPgogICAgPGRpdiBjbGFzcz0ic3RhcnMtY29udGFpbmVyIj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3RhciIgc3R5bGU9InRvcDogNSU7IGxlZnQ6IDEwJTsgYW5pbWF0aW9uLWRlbGF5OiAwczsiPuKtkDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3RhciIgc3R5bGU9InRvcDogMTUlOyBsZWZ0OiA4NSU7IGFuaW1hdGlvbi1kZWxheTogMC41czsiPuKcqDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3RhciIgc3R5bGU9InRvcDogMjUlOyBsZWZ0OiAyMCU7IGFuaW1hdGlvbi1kZWxheTogMXM7Ij7wn5K7PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJzdGFyIiBzdHlsZT0idG9wOiAzNSU7IGxlZnQ6IDc1JTsgYW5pbWF0aW9uLWRlbGF5OiAxLjVzOyI+4pyoPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJzdGFyIiBzdHlsZT0idG9wOiA0NSU7IGxlZnQ6IDUlOyBhbmltYXRpb24tZGVsYXk6IDJzOyI+4q2QPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJzdGFyIiBzdHlsZT0idG9wOiA1NSU7IGxlZnQ6IDkwJTsgYW5pbWF0aW9uLWRlbGF5OiAyLjVzOyI+8J+Suzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3RhciIgc3R5bGU9InRvcDogNjUlOyBsZWZ0OiAxNSU7IGFuaW1hdGlvbi1kZWxheTogMC4zczsiPuKtkDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3RhciIgc3R5bGU9InRvcDogNzUlOyBsZWZ0OiA4MCU7IGFuaW1hdGlvbi1kZWxheTogMC44czsiPuKcqDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3RhciIgc3R5bGU9InRvcDogODUlOyBsZWZ0OiAyNSU7IGFuaW1hdGlvbi1kZWxheTogMS4zczsiPvCfkrs8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InN0YXIiIHN0eWxlPSJ0b3A6IDk1JTsgbGVmdDogNzAlOyBhbmltYXRpb24tZGVsYXk6IDEuOHM7Ij7inKg8L3NwYW4+CiAgICA8L2Rpdj4KICAgIAogICAgPCEtLSBTUEFSS0xFUyAtLT4KICAgIDxkaXYgY2xhc3M9InNwYXJrbGVzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFya2xlIiBzdHlsZT0idG9wOiAxMCU7IGxlZnQ6IDMwJTsgYW5pbWF0aW9uLWRlbGF5OiAwczsiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNwYXJrbGUiIHN0eWxlPSJ0b3A6IDIwJTsgbGVmdDogNjAlOyBhbmltYXRpb24tZGVsYXk6IDAuM3M7Ij48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFya2xlIiBzdHlsZT0idG9wOiA0MCU7IGxlZnQ6IDQ1JTsgYW5pbWF0aW9uLWRlbGF5OiAwLjZzOyI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhcmtsZSIgc3R5bGU9InRvcDogNjAlOyBsZWZ0OiAyNSU7IGFuaW1hdGlvbi1kZWxheTogMC45czsiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNwYXJrbGUiIHN0eWxlPSJ0b3A6IDcwJTsgbGVmdDogNzAlOyBhbmltYXRpb24tZGVsYXk6IDEuMnM7Ij48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFya2xlIiBzdHlsZT0idG9wOiA4MCU7IGxlZnQ6IDQwJTsgYW5pbWF0aW9uLWRlbGF5OiAxLjVzOyI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0icGFnZS1jb250YWluZXIiPgogICAgICAgIDwhLS0gTkFWSUdBVElPTiAtLT4KICAgICAgICA8bmF2IGNsYXNzPSJ0b3BuYXYiPgogICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0ibmF2LWJyYW5kIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsb2dvIj5CcmFuZC5IYW5kc2hha2U8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWxpbmtzIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcmljaW5nIj5DYXJkczwvYT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwYXltZW50Ij5QYXk8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3JkZXIiPk9yZGVyPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L25hdj4KICAgICAgICAKICAgICAgICA8IS0tIENPTE9SIFNDUk9MTCBCQU5ORVIgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iY29sb3Itc2Nyb2xsLWNvbnRhaW5lciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLXNjcm9sbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGwtaXRlbSI+PHNwYW4gY2xhc3M9InN0YXIiPvCfkrs8L3NwYW4+IERpZ2l0YWwgQnVzaW5lc3MgQ2FyZHM8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1pdGVtIj48c3BhbiBjbGFzcz0ic3RhciI+4pyoPC9zcGFuPiBTdGFydGluZyBhdCAkMTA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1pdGVtIj48c3BhbiBjbGFzcz0ic3RhciI+8J+agDwvc3Bhbj4gR2VuaXVzIERpZ2l0YWw8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1pdGVtIj48c3BhbiBjbGFzcz0ic3RhciI+8J+Sszwvc3Bhbj4gT3duIFlvdXIgSWRlbnRpdHk8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1pdGVtIj48c3BhbiBjbGFzcz0ic3RhciI+8J+Okzwvc3Bhbj4gTmRlamplIFVuaXZlcnNpdHk8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1pdGVtIj48c3BhbiBjbGFzcz0ic3RhciI+8J+RkTwvc3Bhbj4gU3RhbmQgT3V0PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGwtaXRlbSI+PHNwYW4gY2xhc3M9InN0YXIiPvCfkrs8L3NwYW4+IERpZ2l0YWwgQnVzaW5lc3MgQ2FyZHM8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1pdGVtIj48c3BhbiBjbGFzcz0ic3RhciI+4pyoPC9zcGFuPiBTdGFydGluZyBhdCAkMTA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1pdGVtIj48c3BhbiBjbGFzcz0ic3RhciI+8J+agDwvc3Bhbj4gR2VuaXVzIERpZ2l0YWw8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1pdGVtIj48c3BhbiBjbGFzcz0ic3RhciI+8J+Sszwvc3Bhbj4gT3duIFlvdXIgSWRlbnRpdHk8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1pdGVtIj48c3BhbiBjbGFzcz0ic3RhciI+8J+Okzwvc3Bhbj4gTmRlamplIFVuaXZlcnNpdHk8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1pdGVtIj48c3BhbiBjbGFzcz0ic3RhciI+8J+RkTwvc3Bhbj4gU3RhbmQgT3V0PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDwhLS0gQU1CQVNTQURPUiBIRVJPIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJhbWJhc3NhZG9yLWhlcm8iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhbWJhc3NhZG9yLWNhcmQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW1iYXNzYWRvci1jYXJkLWlubmVyLTEiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFtYmFzc2Fkb3ItY2FyZC1pbm5lci0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW1iYXNzYWRvci1jYXJkLWlubmVyLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW1iYXNzYWRvci1jYXJkLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFtYmFzc2Fkb3ItYmFkZ2UiPuKcpiBJbnRlcm4gQnJhbmQgQW1iYXNzYWRvciDinKY8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdmF0YXItZ2xvdyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItY29kZS1iYWRnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1kb3QiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+R2VuaXVzIEFtYmFzc2Fkb3I8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDT01QVVRFUiBXSVRIIENPREUgQVZBVEFSIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFtYmFzc2Fkb3ItYXZhdGFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvZGUtYnJhY2tldHMgY29kZS1sZWZ0Ij4mbHQ7LyZndDs8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhdmF0YXItaWNvbiI+8J+Suzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvZGUtYnJhY2tldHMgY29kZS1yaWdodCI+Jmx0Oy8mZ3Q7PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz0iYW1iYXNzYWRvci1uYW1lIj5UZW5kbyBUYWxpcTwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImFtYmFzc2Fkb3ItY29tcGFueSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uIj7wn5KhPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Gb3VuZGVyLCBHZW5pdXMgRGlnaXRhbDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImFtYmFzc2Fkb3ItdGl0bGUiPkd1aWxkIFNwZWFrZXIsIEdSQyBTY2llbmNlIEFuZCBDb21wdXRpbmcgRmFjdWx0eTxicj5OZGVqamUgVW5pdmVyc2l0eTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYW1iYXNzYWRvci1yb2xlIj5LYW1wYWxhLCBVZ2FuZGE8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTT0NJQUwgSUNPTlMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic29jaWFsLWljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL3RlbmRvLXRhbGlxLTVhNjZiMDJiYi8iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0ic29jaWFsLWljb24gbGlua2VkaW4iIHRpdGxlPSJMaW5rZWRJbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5pbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vbmV3c2xldHRlcnMvNzQxMDI0ODI4MzAzMTQ0NTUwNC8iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0ic29jaWFsLWljb24gbmV3c2xldHRlciIgdGl0bGU9Ik5ld3NsZXR0ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+8J+TsDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0ic29jaWFsLWljb24gaW5zdGFncmFtIiB0aXRsZT0iSW5zdGFncmFtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPvCfk7c8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9InNvY2lhbC1pY29uIHRpa3RvayIgdGl0bGU9IlRpa1RvayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7wn461PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJzb2NpYWwtaWNvbiB4IiB0aXRsZT0iWCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7wnZWPPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW1iYXNzYWRvci1jb250YWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93YS5tZS8yNTY3MDg4NzU3MzgiIGNsYXNzPSJjb250YWN0LWJ0biB3aGF0c2FwcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7wn5KsPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+V2hhdHNBcHA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0idGVsOisyNTY3MDg4NzU3MzgiIGNsYXNzPSJjb250YWN0LWJ0biBjYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPvCfk548L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5DYWxsPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9nZW5pdXNkaWdpdGFsc29sdXRpb25zLmNvbS90ZW5kby10YWxpcS1ncmMtdm90ZSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJjb250YWN0LWJ0biB3ZWJzaXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPvCfjJA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5XZWJzaXRlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIAogICAgICAgIDwhLS0gVkFMVUUgU0VDVElPTiAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0idmFsdWUtc2VjdGlvbiI+CiAgICAgICAgICAgIDxoMj5Zb3VyIDxzcGFuIGNsYXNzPSJoaWdobGlnaHQiPkRpZ2l0YWwgQnVzaW5lc3MgQ2FyZDwvc3Bhbj4gQXdhaXRzPC9oMj4KICAgICAgICAgICAgPHA+U3RhbmQgb3V0IGF0IGNhcmVlciBmYWlycywgaW50ZXJ2aWV3cywgYW5kIG5ldHdvcmtpbmcgZXZlbnRzLiBJJ2xsIHBlcnNvbmFsbHkgaGVscCB5b3UgZ2V0IHlvdXIgcHJvZmVzc2lvbmFsIGRpZ2l0YWwgcHJlc2VuY2Ugc2V0IHVwLjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtaGlnaGxpZ2h0Ij5TdGFydGluZyBhdCAkMTA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgCiAgICAgICAgPCEtLSBQUklDSU5HIEdSSUQgLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InByaWNpbmctc2VjdGlvbiIgaWQ9InByaWNpbmciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPuKcqCBDaG9vc2UgWW91ciBDYXJkIFRpZXIg4pyoPC9oMz4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdXJyZW5jeS10b2dnbGUiIGlkPSJjdXJyZW5jeVRvZ2dsZSIgb25jbGljaz0idG9nZ2xlQ3VycmVuY3koKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdXJyZW5jeS1pY29uIj7wn5KxPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iY3VycmVuY3lMYWJlbCI+U2hvdyBpbiBVR1gg8J+HuvCfh6w8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1ncmlkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWljb24iPvCfk7E8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1uYW1lIj5QZXJzb25hbDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWZvciI+QnVpbGRpbmcgY29ubmVjdGlvbnM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1wcmljZSIgZGF0YS11c2Q9IjEwIiBkYXRhLXVneD0iMzUsNTcxIj48c3BhbiBjbGFzcz0iY3VycmVuY3ktc3ltYm9sIj4kPC9zcGFuPjxzcGFuIGNsYXNzPSJwcmljZS1hbW91bnQiPjEwPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InByaWNpbmctZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiBDaG9pY2Ugb2YgY29sb3VyczwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IFVwIHRvIDMgbGlua3M8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiBTb2NpYWwgaWNvbnM8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiBZb3VyIGZhdm91cml0ZSBxdW90ZTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InByaWNpbmctYnRuIiBvbmNsaWNrPSJzZWxlY3RUaWVyKCdwZXJzb25hbCcsIDEwKSI+U2VsZWN0IOKGkjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctY2FyZCBmZWF0dXJlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctaWNvbiI+8J+SoTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLW5hbWUiPlN0YXJ0dXA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1mb3IiPlNpZGUgdmVudHVyZXM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1wcmljZSIgZGF0YS11c2Q9IjIwIiBkYXRhLXVneD0iNzEsMTQxIj48c3BhbiBjbGFzcz0iY3VycmVuY3ktc3ltYm9sIj4kPC9zcGFuPjxzcGFuIGNsYXNzPSJwcmljZS1hbW91bnQiPjIwPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InByaWNpbmctZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiBVcCB0byA3IGxpbmtzPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gUG9ydGZvbGlvIHNlY3Rpb248L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyTPC9zcGFuPiBMaW5rZWRJbiBpbnRlZ3JhdGlvbjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IEN1c3RvbSBjb2xvcnM8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmljaW5nLWJ0biIgb25jbGljaz0ic2VsZWN0VGllcignc3RhcnR1cCcsIDIwKSI+U2VsZWN0IOKGkjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctaWNvbiI+8J+agDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLW5hbWUiPkVudHJlcHJlbmV1cjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWZvciI+QWN0aXZlIGJ1c2luZXNzZXM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1wcmljZSIgZGF0YS11c2Q9IjMwIiBkYXRhLXVneD0iMTA2LDcxMiI+PHNwYW4gY2xhc3M9ImN1cnJlbmN5LXN5bWJvbCI+JDwvc3Bhbj48c3BhbiBjbGFzcz0icHJpY2UtYW1vdW50Ij4zMDwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJwcmljaW5nLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gU29jaWFsLCBlY29tbWVyY2UgJiB3ZWJzaXRlIGxpbmtzPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKckzwvc3Bhbj4gUHJvZHVjdCBzaG93Y2FzZTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IEJvb2tpbmcgbGluazwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJM8L3NwYW4+IEJyYW5kZWQgUVI8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmljaW5nLWJ0biIgb25jbGljaz0ic2VsZWN0VGllcignZW50cmVwcmVuZXVyJywgMzApIj5TZWxlY3Qg4oaSPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPCEtLSBQUklDSU5HIFRFUk1TIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy10ZXJtcyI+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRlcm1zLXRpdGxlIj7wn5OLIFdoYXQncyBJbmNsdWRlZCAmIFRlcm1zPC9wPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idGVybXMtbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0idGVybXMtY2hlY2siPuKckzwvc3Bhbj4gPHN0cm9uZz5TU0wgJiBob3N0aW5nIGluY2x1ZGVkPC9zdHJvbmc+IOKAkyB5b3VyIGNhcmQgaXMgc2VjdXJlICYgbGl2ZSAyNC83PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJ0ZXJtcy1jaGVjayI+4pyTPC9zcGFuPiA8c3Ryb25nPkRlbGl2ZXJ5PC9zdHJvbmc+IOKAkyBiYXNlZCBvbiByZWNlaXB0IG9mIGFsbCBjb3JyZWN0LCBzZWxmLXZlcmlmaWVkIGNhcmQgZGV0YWlsczwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0idGVybXMtd2FybiI+4pqg77iPPC9zcGFuPiA8c3Ryb25nPkFsbCBsaW5rcyBtdXN0IGJlIG93bmVkIGJ5IHlvdTwvc3Ryb25nPiDigJMgbm8gdGhpcmQtcGFydHkgb3IgcmVkaXJlY3QgbGlua3MgYWxsb3dlZDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0idGVybXMtd2FybiI+4pqg77iPPC9zcGFuPiA8c3Ryb25nPlZlcmlmeSBiZWZvcmUgc3VibWl0dGluZzwvc3Ryb25nPiDigJMgY29ycmVjdGlvbnMgYWZ0ZXIgZGVsaXZlcnkgYXJlIGJpbGxlZCBhdCA8c3Ryb25nPiQ1IHBlciBmaXg8L3N0cm9uZz48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIAogICAgICAgIDwhLS0gUEFZTUVOVCBTRUNUSU9OIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJwYXltZW50LXNlY3Rpb24iIGlkPSJwYXltZW50Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1ib3giPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1ib3gtaW5uZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz7wn5OxIFBheSB2aWEgTW9iaWxlIE1vbmV5PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXltZW50LW51bWJlciI+MDcwOC04NzUtNzM4PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBheW1lbnQtbmFtZSI+VGVuZG8gVGFsaXE8L3A+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1zdGVwcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoND7wn46vIEhvdyB0byBPcmRlcjo8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8b2w+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+Q2hvb3NlIHlvdXIgY2FyZCB0aWVyIGFib3ZlPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5TZW5kIHBheW1lbnQgdG8gPHN0cm9uZz4wNzA4LTg3NS03Mzg8L3N0cm9uZz48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkZpbGwgb3V0IHRoZSBvcmRlciBmb3JtIGJlbG93PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5JJ2xsIFdoYXRzQXBwIHlvdSB3aXRoaW4gMjQgaG91cnMhPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgCiAgICAgICAgPCEtLSDwn46wIExVQ0tZIFNQSU4gQ0FTSU5PIFNFQ1RJT04gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImNhc2luby1zZWN0aW9uIiBpZD0ibHVja3kiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXNpbm8tY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhc2luby1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz7wn46wIE1vbnRobHkgTHVja3kgRHJhdyDwn46wPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cD5TcGluIGZvciBhIGNoYW5jZSB0byB3aW4gYSA8c3Ryb25nPkZSRUUgUGVyc29uYWwgQ2FyZCE8L3N0cm9uZz48L3A+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImNhc2luby1ub3RlIj5PbmUgbHVja3kgd2lubmVyIHNlbGVjdGVkIGVhY2ggbW9udGghPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsb3QtbWFjaGluZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xvdC1mcmFtZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsb3QtZGlzcGxheSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbG90LXJlZWwiIGlkPSJyZWVsMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xvdC1zeW1ib2wiPvCfpoE8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xvdC1yZWVsIiBpZD0icmVlbDIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsb3Qtc3ltYm9sIj7wn5GRPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsb3QtcmVlbCIgaWQ9InJlZWwzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbG90LXN5bWJvbCI+8J+SjjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbG90LWxldmVyIiBpZD0ic2xvdExldmVyIiBvbmNsaWNrPSJzcGluU2xvdHMoKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZXZlci1iYWxsIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxldmVyLXN0aWNrIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic3Bpbi1idG4iIGlkPSJzcGluQnRuIiBvbmNsaWNrPSJzcGluU2xvdHMoKSI+8J+OsCBTUElOIFRPIFdJTiE8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGluLXJlc3VsdCIgaWQ9InNwaW5SZXN1bHQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdC1pY29uIiBpZD0icmVzdWx0SWNvbiI+8J+OsjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdC1tZXNzYWdlIiBpZD0icmVzdWx0TWVzc2FnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVzdWx0LXN1Ym1lc3NhZ2UiIGlkPSJyZXN1bHRTdWJtZXNzYWdlIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8IS0tIFdJTk5FUiBDTEFJTSBGT1JNIChIaWRkZW4gdW50aWwgd2luKSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Indpbm5lci1jbGFpbSIgaWQ9Indpbm5lckNsYWltIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb25mZXR0aS1jb250YWluZXIiIGlkPSJjb25mZXR0aSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGg0PvCfjokgQ09OR1JBVFVMQVRJT05TISDwn46JPC9oND4KICAgICAgICAgICAgICAgICAgICA8cD5Zb3UndmUgd29uIGEgPHN0cm9uZz5GUkVFIFBlcnNvbmFsIERpZ2l0YWwgQ2FyZCE8L3N0cm9uZz48L3A+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gaWQ9ImNsYWltRm9ybSIgY2xhc3M9ImNsYWltLWZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IllvdXIgRnVsbCBOYW1lIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRlbCIgcGxhY2Vob2xkZXI9IldoYXRzQXBwIE51bWJlciIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJlbWFpbCIgcGxhY2Vob2xkZXI9IkVtYWlsIEFkZHJlc3MiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCI+Q2xhaW0gTXkgRnJlZSBDYXJkISDwn46BPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhc2luby1mb290ZXIiPgogICAgICAgICAgICAgICAgICAgIDxwPvCfkqEgPGVtPkRvbid0IHdhbnQgdG8gd2FpdD8gPGEgaHJlZj0iI3ByaWNpbmciPkdldCB5b3VyIGNhcmQgdG9kYXkhPC9hPjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAKICAgICAgICA8IS0tIE9SREVSIEZPUk0gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9Im9yZGVyLXNlY3Rpb24iIGlkPSJvcmRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9yZGVyLWJveCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJvcmRlci1ib3gtaW5uZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz7wn5OdIFN1Ym1pdCBZb3VyIE9yZGVyPC9oMz4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8Zm9ybSBpZD0ib3JkZXJGb3JtIiBhY3Rpb249Imh0dHBzOi8vYWlnZW5pdXMuYnJhbmRoYW5kc2hha2UuY29tL3dlbGNvbWUtcG9ydGFsIiBtZXRob2Q9IkdFVCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFtYmFzc2Fkb3IiIHZhbHVlPSJURU5ETy1HRU5JVVMiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzb3VyY2UiIHZhbHVlPSJhaWdlbml1cy5icmFuZGhhbmRzaGFrZS5jb20iPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1yb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkZpcnN0IE5hbWU8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaXJzdE5hbWUiIHBsYWNlaG9sZGVyPSJZb3VyIGZpcnN0IG5hbWUiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TGFzdCBOYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibGFzdE5hbWUiIHBsYWNlaG9sZGVyPSJZb3VyIGxhc3QgbmFtZSIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5FbWFpbDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZW1haWwiIG5hbWU9ImVtYWlsIiBwbGFjZWhvbGRlcj0ieW91ckBlbWFpbC5jb20iIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPldoYXRzQXBwIE51bWJlcjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGVsIiBuYW1lPSJ3aGF0c2FwcCIgcGxhY2Vob2xkZXI9IisyNTYgeHh4IHh4eCB4eHgiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tcm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Vbml2ZXJzaXR5L1NjaG9vbDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVuaXZlcnNpdHkiIHBsYWNlaG9sZGVyPSJZb3VyIHNjaG9vbCIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5ZZWFyPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9InllYXIiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPlNlbGVjdC4uLjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj4xc3QgWWVhcjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyIj4ybmQgWWVhcjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIzIj4zcmQgWWVhcjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI0Ij40dGggWWVhcjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI1Ij41dGggWWVhcis8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZ3JhZCI+R3JhZHVhdGU8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0icHJvIj5Qcm9mZXNzaW9uYWw8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkNhcmQgVGllcjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9InRpZXJTZWxlY3QiIGlkPSJ0aWVyU2VsZWN0IiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPkNob29zZSBhIHRpZXIuLi48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJwZXJzb25hbC0xMCI+UGVyc29uYWwgLSAkMTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJzdGFydHVwLTIwIj5TdGFydHVwIC0gJDIwPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZW50cmVwcmVuZXVyLTMwIj5FbnRyZXByZW5ldXIgLSAkMzA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0ic3VibWl0LWJ0biI+U3VibWl0IE9yZGVyIOKGkjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBESVNDTEFJTUVSIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXNjbGFpbWVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPuKaoO+4jyA8c3Ryb25nPkltcG9ydGFudDo8L3N0cm9uZz4gWW91IG11c3QgYmUgPHN0cm9uZz4xOCB5ZWFycyBvciBvbGRlcjwvc3Ryb25nPiB0byBvcmRlci4gT3JkZXJzIHBsYWNlZCB3aXRoIGZhbHNlIG5hbWVzLCBwaG9uZSBudW1iZXJzLCBvciBwYXltZW50IGluZm9ybWF0aW9uIHdpbGwgYmUgcmVqZWN0ZWQuIEJ5IHN1Ym1pdHRpbmcsIHlvdSBjb25maXJtIGFsbCBpbmZvcm1hdGlvbiBpcyBhY2N1cmF0ZS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBREQtT04gRkVBVFVSRVMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkZG9ucy1zZWN0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND7inKggT3B0aW9uYWwgQWRkLU9ucyAoQWRkaXRpb25hbCBDb3N0KTwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZGRvbi1pdGVtcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRkb24taXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhZGRvbi1pY29uIj7wn46sPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5WaWRlbyBFbWJlZDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZGRvbi1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFkZG9uLWljb24iPvCflrzvuI88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlNvY2lhbCBQcm9maWxlIEJhbm5lciBTZXQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRkb24taXRlbSBib251cyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhZGRvbi1pY29uIj7wn46BPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5RUiBDb2RlIDxzbWFsbD4oQm9udXMgd2l0aCBzZWxlY3QgdGllcnMpPC9zbWFsbD48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJhZGRvbi1ub3RlIj5Bc2sgYWJvdXQgYWRkLW9ucyB3aGVuIEkgY29udGFjdCB5b3UhPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3JkZXItc3VjY2VzcyIgaWQ9Im9yZGVyU3VjY2VzcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imljb24iPvCfjok8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPk9yZGVyIFJlY2VpdmVkITwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRoYW5rcyBmb3Igb3JkZXJpbmchIFRlbmRvIHdpbGwgV2hhdHNBcHAgeW91IHdpdGhpbiAyNCBob3VycyB0byBjb25maXJtIHBheW1lbnQgYW5kIGdldCB5b3VyIGNhcmQgZGV0YWlscy48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIAogICAgICAgIDwhLS0gUFJPIExJTksgLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InByby1zZWN0aW9uIj4KICAgICAgICAgICAgPHA+TmVlZCBhIHByZW1pdW0gcHJvZmVzc2lvbmFsIGNhcmQ/ICgkNTArKTwvcD4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9oYW5kc2hha2UuYWZyaWNhIiBjbGFzcz0icHJvLWxpbmsiPgogICAgICAgICAgICAgICAgPHNwYW4+VmlldyBQcm8gQ2FyZHM8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3Bhbj7ihpI8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgCiAgICAgICAgPCEtLSBGT09URVIgLS0+CiAgICAgICAgPGZvb3RlciBjbGFzcz0iZm9vdGVyIj4KICAgICAgICAgICAgPHAgY2xhc3M9ImZvb3Rlci1icmFuZCI+Z2VuaXVzLmJyYW5kaGFuZHNoYWtlLmNvbTwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImZvb3Rlci10YWdsaW5lIj5UZW5kbyBUYWxpcSB+IEludGVybiBCcmFuZCBBbWJhc3NhZG9yPC9wPgogICAgICAgICAgICA8cCBjbGFzcz0iZm9vdGVyLWNvbXBhbnkiPkZvdW5kZXIsIEdlbml1cyBEaWdpdGFsIHwgR3VpbGQgU3BlYWtlciwgR1JDIFNjaWVuY2UgJiBDb21wdXRpbmcsIE5kZWpqZSBVbml2ZXJzaXR5PC9wPgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBURU5ETydTIFBST0pFQ1RTIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItcHJvamVjdHMiPgogICAgICAgICAgICAgICAgPGg0PvCfk4IgTXkgSW50ZXJuIFByb2plY3RzPC9oND4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2plY3QtbGlua3MiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYmVzdGFmcmljYWRpcmVjdG9yeS5jb20iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0icHJvamVjdC1saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPvCfk4E8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkJlc3QgQWZyaWNhIERpcmVjdG9yeTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hZnJpY2Fmcm9udGxpbmVtZWRpYS5jb20vYmxvZyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJwcm9qZWN0LWxpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+8J+TnTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QWZyaWNhIEZyb250bGluZSBCbG9nPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FmcmljYWZyb250bGluZW5leHVzLm5ld3MiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0icHJvamVjdC1saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24iPvCfk7A8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkFmcmljYSBGcm9udGxpbmUgTmV4dXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vc2FuY3R1YXJ5LmFmcmljYS9tdXNpYyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJwcm9qZWN0LWxpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+8J+OtTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+U2FuY3R1YXJ5IEFmcmljYSBNdXNpYzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8cCBjbGFzcz0iZm9vdGVyLWNvcHkiPgogICAgICAgICAgICAgICAgwqkgMjAyNiA8YSBocmVmPSJodHRwczovL2JyYW5kaGFuZHNoYWtlLmNvbSI+QnJhbmRIYW5kc2hha2U8L2E+IH4gQSA8YSBocmVmPSJodHRwczovL2hhbmRzaGFrZS5hZnJpY2EiPkhhbmRzaGFrZS5BZnJpY2E8L2E+IFByb2R1Y3Rpb248YnI+CiAgICAgICAgICAgICAgICBQYXJ0IG9mIFRoZSBTb3ZlcmVpZ24gQXJjaGl0ZWN0cyBOZXR3b3JrCiAgICAgICAgICAgIDwvcD4KICAgICAgICA8L2Zvb3Rlcj4KICAgIDwvZGl2PgogICAgCiAgICA8c2NyaXB0PgogICAgICAgIC8vIElQIFByb3RlY3Rpb24KICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIGUgPT4gZS5wcmV2ZW50RGVmYXVsdCgpKTsKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZSA9PiB7IGlmIChlLmN0cmxLZXkgJiYgWydzJywndScsJ3AnXS5pbmNsdWRlcyhlLmtleSkpIGUucHJldmVudERlZmF1bHQoKTsgfSk7CiAgICAgICAgCiAgICAgICAgLy8g8J+SsSBDVVJSRU5DWSBUT0dHTEUKICAgICAgICBsZXQgc2hvd1VHWCA9IGZhbHNlOwogICAgICAgIGZ1bmN0aW9uIHRvZ2dsZUN1cnJlbmN5KCkgewogICAgICAgICAgICBzaG93VUdYID0gIXNob3dVR1g7CiAgICAgICAgICAgIGNvbnN0IHRvZ2dsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXJyZW5jeVRvZ2dsZScpOwogICAgICAgICAgICBjb25zdCBsYWJlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXJyZW5jeUxhYmVsJyk7CiAgICAgICAgICAgIGNvbnN0IHByaWNlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wcmljaW5nLXByaWNlJyk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoc2hvd1VHWCkgewogICAgICAgICAgICAgICAgdG9nZ2xlLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSAnU2hvdyBpbiBVU0Qg8J+HuvCfh7gnOwogICAgICAgICAgICAgICAgcHJpY2VzLmZvckVhY2gocCA9PiB7CiAgICAgICAgICAgICAgICAgICAgcC5jbGFzc0xpc3QuYWRkKCd1Z3gnKTsKICAgICAgICAgICAgICAgICAgICBwLnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW5jeS1zeW1ib2wnKS50ZXh0Q29udGVudCA9ICdVR1ggJzsKICAgICAgICAgICAgICAgICAgICBwLnF1ZXJ5U2VsZWN0b3IoJy5wcmljZS1hbW91bnQnKS50ZXh0Q29udGVudCA9IHAuZGF0YXNldC51Z3g7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRvZ2dsZS5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgIGxhYmVsLnRleHRDb250ZW50ID0gJ1Nob3cgaW4gVUdYIPCfh7rwn4esJzsKICAgICAgICAgICAgICAgIHByaWNlcy5mb3JFYWNoKHAgPT4gewogICAgICAgICAgICAgICAgICAgIHAuY2xhc3NMaXN0LnJlbW92ZSgndWd4Jyk7CiAgICAgICAgICAgICAgICAgICAgcC5xdWVyeVNlbGVjdG9yKCcuY3VycmVuY3ktc3ltYm9sJykudGV4dENvbnRlbnQgPSAnJCc7CiAgICAgICAgICAgICAgICAgICAgcC5xdWVyeVNlbGVjdG9yKCcucHJpY2UtYW1vdW50JykudGV4dENvbnRlbnQgPSBwLmRhdGFzZXQudXNkOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gc2VsZWN0VGllcih0aWVyLCBhbW91bnQpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpZXJTZWxlY3QnKS52YWx1ZSA9IGAke3RpZXJ9LSR7YW1vdW50fWA7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmRlcicpLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkZXJGb3JtJykuYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0JywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAvLyBGb3JtIHdpbGwgc3VibWl0IHRvIENSTSBVUkwgLSBubyBuZWVkIHRvIHByZXZlbnQgZGVmYXVsdAogICAgICAgICAgICAvLyBEYXRhIHdpbGwgYmUgcGFzc2VkIGFzIFVSTCBwYXJhbWV0ZXJzCiAgICAgICAgICAgIC8vIENSTSBoYW5kbGVzIGVtYWlsIHZlcmlmaWNhdGlvbiAmIHJlZGlyZWN0cyB0byBUZW5kbydzIG5ld3NsZXR0ZXIKICAgICAgICB9KTsKICAgICAgICAKICAgICAgICAvLyDwn46wIFNMT1QgTUFDSElORSBHQU1FCiAgICAgICAgY29uc3Qgc3ltYm9scyA9IFsn8J+mgScsICfwn5GRJywgJ/Cfko4nLCAn4q2QJywgJ/CfjI0nLCAn8J+UpScsICfwn5KwJywgJ/Cfjq8nXTsKICAgICAgICBjb25zdCBsb3NpbmdNZXNzYWdlcyA9IFsKICAgICAgICAgICAgeyBpY29uOiAn8J+SqicsIG1zZzogIkFsbW9zdCEiLCBzdWI6ICJZb3UgbWlzcyAxMDAlIG9mIHRoZSBzaG90cyB5b3UgZG9uJ3QgdGFrZSEiIH0sCiAgICAgICAgICAgIHsgaWNvbjogJ/CfjJ8nLCBtc2c6ICJTbyBDbG9zZSEiLCBzdWI6ICJXaW5uZXJzIG5ldmVyIHF1aXQsIHF1aXR0ZXJzIG5ldmVyIHdpbiEiIH0sCiAgICAgICAgICAgIHsgaWNvbjogJ/CflKUnLCBtc2c6ICJOaWNlIFRyeSEiLCBzdWI6ICJTdWNjZXNzIGlzIG5vdCBmaW5hbCwgZmFpbHVyZSBpcyBub3QgZmF0YWwhIiB9LAogICAgICAgICAgICB7IGljb246ICfwn5qAJywgbXNnOiAiS2VlcCBHb2luZyEiLCBzdWI6ICJUaGUgb25seSB3YXkgdG8gZmFpbCBpcyB0byBnaXZlIHVwISIgfSwKICAgICAgICAgICAgeyBpY29uOiAn8J+RkScsIG1zZzogIkdyZWF0IFNob3QhIiwgc3ViOiAiWW91ciB0aW1lIGlzIGNvbWluZywga2VlcCBiZWxpZXZpbmchIiB9LAogICAgICAgICAgICB7IGljb246ICfwn5KOJywgbXNnOiAiQWxtb3N0IFRoZXJlISIsIHN1YjogIkRpYW1vbmRzIGFyZSBtYWRlIHVuZGVyIHByZXNzdXJlISIgfSwKICAgICAgICAgICAgeyBpY29uOiAn8J+OrycsIG1zZzogIkNsb3NlIE9uZSEiLCBzdWI6ICJFdmVyeSBjaGFtcGlvbiB3YXMgb25jZSBhIGNvbnRlbmRlciEiIH0sCiAgICAgICAgICAgIHsgaWNvbjogJ+KaoScsIG1zZzogIk5leHQgVGltZSEiLCBzdWI6ICJGYWxsIHNldmVuIHRpbWVzLCBzdGFuZCB1cCBlaWdodCEiIH0sCiAgICAgICAgICAgIHsgaWNvbjogJ/CfjIgnLCBtc2c6ICJHb29kIFNwaW4hIiwgc3ViOiAiQWZ0ZXIgZXZlcnkgc3Rvcm0gY29tZXMgYSByYWluYm93ISIgfSwKICAgICAgICAgICAgeyBpY29uOiAn8J+PhicsIG1zZzogIk5pY2UgRWZmb3J0ISIsIHN1YjogIkNoYW1waW9ucyBrZWVwIHBsYXlpbmcgdW50aWwgdGhleSB3aW4hIiB9CiAgICAgICAgXTsKICAgICAgICAKICAgICAgICBsZXQgaXNTcGlubmluZyA9IGZhbHNlOwogICAgICAgIAogICAgICAgIC8vIENoZWNrIGlmIHdpbm5lciBtb2RlIChzZWNyZXQgbGluazogP2x1Y2t5PXdpbikKICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpOwogICAgICAgIGNvbnN0IGlzV2lubmVyID0gdXJsUGFyYW1zLmdldCgnbHVja3knKSA9PT0gJ3dpbic7CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gc3BpblNsb3RzKCkgewogICAgICAgICAgICBpZiAoaXNTcGlubmluZykgcmV0dXJuOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gQ2hlY2sgZGFpbHkgbGltaXQKICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpOwogICAgICAgICAgICBjb25zdCBsYXN0U3BpbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYXN0U3BpbkRhdGVfdGVuZG8nKTsKICAgICAgICAgICAgaWYgKGxhc3RTcGluID09PSB0b2RheSAmJiAhaXNXaW5uZXIpIHsKICAgICAgICAgICAgICAgIGFsZXJ0KCfwn46wIFlvdSBhbHJlYWR5IHNwdW4gdG9kYXkhIENvbWUgYmFjayB0b21vcnJvdyBmb3IgYW5vdGhlciBjaGFuY2UhJyk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlzU3Bpbm5pbmcgPSB0cnVlOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BpbkJ0bicpLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwaW5SZXN1bHQnKS5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3aW5uZXJDbGFpbScpLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFN0YXJ0IHNwaW5uaW5nIGFuaW1hdGlvbgogICAgICAgICAgICBjb25zdCByZWVscyA9IFtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVlbDEnKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZWwyJyksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWVsMycpXTsKICAgICAgICAgICAgcmVlbHMuZm9yRWFjaChyZWVsID0+IHJlZWwuY2xhc3NMaXN0LmFkZCgnc3Bpbm5pbmcnKSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBSYXBpZCBzeW1ib2wgY2hhbmdlcyBkdXJpbmcgc3BpbgogICAgICAgICAgICBsZXQgc3BpbkNvdW50ID0gMDsKICAgICAgICAgICAgY29uc3Qgc3BpbkludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gewogICAgICAgICAgICAgICAgcmVlbHMuZm9yRWFjaChyZWVsID0+IHsKICAgICAgICAgICAgICAgICAgICByZWVsLnF1ZXJ5U2VsZWN0b3IoJy5zbG90LXN5bWJvbCcpLnRleHRDb250ZW50ID0gc3ltYm9sc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBzeW1ib2xzLmxlbmd0aCldOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzcGluQ291bnQrKzsKICAgICAgICAgICAgfSwgMTAwKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFN0b3Agc3Bpbm5pbmcgYWZ0ZXIgMiBzZWNvbmRzCiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChzcGluSW50ZXJ2YWwpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBsZXQgZmluYWxTeW1ib2xzOwogICAgICAgICAgICAgICAgaWYgKGlzV2lubmVyKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gV0lOTkVSISBBbGwgbWF0Y2hpbmcgc3ltYm9scwogICAgICAgICAgICAgICAgICAgIGZpbmFsU3ltYm9scyA9IFsn8J+RkScsICfwn5GRJywgJ/CfkZEnXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gUmVndWxhciBzcGluIC0gbWFrZSBzdXJlIHRoZXkgRE9OJ1QgYWxsIG1hdGNoCiAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFN5bWJvbHMgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHN5bWJvbHMubGVuZ3RoKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHN5bWJvbHMubGVuZ3RoKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHN5bWJvbHMubGVuZ3RoKV0KICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChmaW5hbFN5bWJvbHNbMF0gPT09IGZpbmFsU3ltYm9sc1sxXSAmJiBmaW5hbFN5bWJvbHNbMV0gPT09IGZpbmFsU3ltYm9sc1syXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIFNob3cgZmluYWwgc3ltYm9scwogICAgICAgICAgICAgICAgcmVlbHMuZm9yRWFjaCgocmVlbCwgaSkgPT4gewogICAgICAgICAgICAgICAgICAgIHJlZWwuY2xhc3NMaXN0LnJlbW92ZSgnc3Bpbm5pbmcnKTsKICAgICAgICAgICAgICAgICAgICByZWVsLnF1ZXJ5U2VsZWN0b3IoJy5zbG90LXN5bWJvbCcpLnRleHRDb250ZW50ID0gZmluYWxTeW1ib2xzW2ldOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIFNhdmUgc3BpbiBkYXRlCiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFzdFNwaW5EYXRlX3RlbmRvJywgdG9kYXkpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBTaG93IHJlc3VsdCBhZnRlciBhIGJyaWVmIHBhdXNlCiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNXaW5uZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1dpbm5lcigpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dMb3NpbmdNZXNzYWdlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlzU3Bpbm5pbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BpbkJ0bicpLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9LCA1MDApOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0sIDIwMDApOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBzaG93TG9zaW5nTWVzc2FnZSgpIHsKICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gbG9zaW5nTWVzc2FnZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbG9zaW5nTWVzc2FnZXMubGVuZ3RoKV07CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRJY29uJykudGV4dENvbnRlbnQgPSByZXN1bHQuaWNvbjsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdE1lc3NhZ2UnKS50ZXh0Q29udGVudCA9IHJlc3VsdC5tc2c7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRTdWJtZXNzYWdlJykudGV4dENvbnRlbnQgPSByZXN1bHQuc3ViOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BpblJlc3VsdCcpLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gc2hvd1dpbm5lcigpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dpbm5lckNsYWltJykuY2xhc3NMaXN0LmFkZCgnc2hvdycpOwogICAgICAgICAgICBjcmVhdGVDb25mZXR0aSgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBjcmVhdGVDb25mZXR0aSgpIHsKICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbmZldHRpJyk7CiAgICAgICAgICAgIGNvbnN0IGNvbG9ycyA9IFsnI0Q0QUYzNycsICcjMDZiNmQ0JywgJyMxMGI5ODEnLCAnI2Y5NzMxNicsICcjZWM0ODk5JywgJyM4YjVjZjYnXTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7IGkrKykgewogICAgICAgICAgICAgICAgY29uc3QgY29uZmV0dGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgICAgIGNvbmZldHRpLmNsYXNzTmFtZSA9ICdjb25mZXR0aSc7CiAgICAgICAgICAgICAgICBjb25mZXR0aS5zdHlsZS5sZWZ0ID0gTWF0aC5yYW5kb20oKSAqIDEwMCArICclJzsKICAgICAgICAgICAgICAgIGNvbmZldHRpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9yc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjb2xvcnMubGVuZ3RoKV07CiAgICAgICAgICAgICAgICBjb25mZXR0aS5zdHlsZS5hbmltYXRpb25EZWxheSA9IE1hdGgucmFuZG9tKCkgKiAyICsgJ3MnOwogICAgICAgICAgICAgICAgY29uZmV0dGkuc3R5bGUuYm9yZGVyUmFkaXVzID0gTWF0aC5yYW5kb20oKSA+IDAuNSA/ICc1MCUnIDogJzAnOwogICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNvbmZldHRpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gQ2xlYW4gdXAgY29uZmV0dGkgYWZ0ZXIgYW5pbWF0aW9uCiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICcnOwogICAgICAgICAgICB9LCA1MDAwKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gQ2xhaW0gZm9ybSBzdWJtaXNzaW9uCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsYWltRm9ybScpPy5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgYWxlcnQoJ/CfjokgQ29uZ3JhdHVsYXRpb25zISBZb3VyIGZyZWUgY2FyZCBjbGFpbSBoYXMgYmVlbiBzdWJtaXR0ZWQhIFRlbmRvIHdpbGwgY29udGFjdCB5b3Ugc29vbiEnKTsKICAgICAgICAgICAgdGhpcy5yZXNldCgpOwogICAgICAgIH0pOwogICAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==","embed":""}
β
β¨
π»
β¨
β
π»
β
β¨
π»
β¨
π» Digital Business Cards
β¨ Starting at $10
π Genius Digital
π³ Own Your Identity
π Ndejje University
π Stand Out
π» Digital Business Cards
β¨ Starting at $10
π Genius Digital
π³ Own Your Identity
π Ndejje University
π Stand Out
β¦ Intern Brand Ambassador β¦
Genius Ambassador
</>
π»
</>
Tendo Taliq
π‘ Founder, Genius Digital
Guild Speaker, GRC Science And Computing Faculty
Ndejje University
Kampala, Uganda
Your Digital Business Card Awaits
Stand out at career fairs, interviews, and networking events. I'll personally help you get your professional digital presence set up.
Starting at $10
β¨ Choose Your Card Tier β¨
π±
Personal
Building connections
$10
- β Choice of colours
- β Up to 3 links
- β Social icons
- β Your favourite quote
π‘
Startup
Side ventures
$20
- β Up to 7 links
- β Portfolio section
- β LinkedIn integration
- β Custom colors
π
Entrepreneur
Active businesses
$30
- β Social, ecommerce & website links
- β Product showcase
- β Booking link
- β Branded QR
π What's Included & Terms
- β SSL & hosting included β your card is secure & live 24/7
- β Delivery β based on receipt of all correct, self-verified card details
- β οΈ All links must be owned by you β no third-party or redirect links allowed
- β οΈ Verify before submitting β corrections after delivery are billed at $5 per fix
π± Pay via Mobile Money
0708-875-738
Tendo Taliq
π― How to Order:
- Choose your card tier above
- Send payment to 0708-875-738
- Fill out the order form below
- I'll WhatsApp you within 24 hours!
π° Monthly Lucky Draw π°
Spin for a chance to win a FREE Personal Card!
One lucky winner selected each month!
π¦
π
π
π²
π CONGRATULATIONS! π
You've won a FREE Personal Digital Card!
π‘ Don't want to wait? Get your card today!
π Submit Your Order
π
Order Received!
Thanks for ordering! Tendo will WhatsApp you within 24 hours to confirm payment and get your card details.
Need a premium professional card? ($50+)
View Pro Cards β