{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8IS0tIFVSTDogaGFuZHNoYWtlLmFmcmljYS9kaWdpdGFsLWNhcmRzIC0tPgogICAgPCEtLSBQVVJQT1NFOiBNYWluIEFnZW5jeSBEaWdpdGFsIENhcmQgU2FsZXMgUGFnZSAtLT4KICAgIDwhLS0gUEFZTUVOVFM6IFVnYW5kYSBDYXJkIEJhbmsgRnVuZCB2aWEgTW9iaWxlIE1vbmV5IC0tPgogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPHRpdGxlPkRpZ2l0YWwgQnVzaW5lc3MgQ2FyZHMgfCBPd24gWW91ciBEaWdpdGFsIFByZXNlbmNlIHwgSGFuZHNoYWtlIEFmcmljYTwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iUHJlbWl1bSBkaWdpdGFsIGJ1c2luZXNzIGNhcmRzIGZvciBBZnJpY2EgYW5kIHRoZSBEaWFzcG9yYS4gT3duIHlvdXIgZGlnaXRhbCBwcmVzZW5jZSB3aXRoIFNTTC1zZWN1cmVkLCBtb2JpbGUtZnJpZW5kbHkgY2FyZHMuIFN0YXJ0aW5nIGF0ICQxMC4gU2hhcmUgYW55d2hlcmUsIGFueXRpbWUuIj4KICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL2hhbmRzaGFrZS5hZnJpY2EvZGlnaXRhbC1jYXJkcyI+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVBsYXlmYWlyK0Rpc3BsYXk6d2dodEA0MDA7NTAwOzYwMDs3MDA7ODAwJmZhbWlseT1Db3Jtb3JhbnQrR2FyYW1vbmQ6aXRhbCx3Z2h0QDAsNDAwOzAsNTAwOzAsNjAwOzEsNDAwJmZhbWlseT1OdW5pdG86d2dodEAzMDA7NDAwOzUwMDs2MDA7NzAwOzgwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8c3R5bGU+CiAgICAgICAgOnJvb3QgewogICAgICAgICAgICAtLW5hdnk6ICMwRDFCMkE7CiAgICAgICAgICAgIC0taW5kaWdvOiAjMUMxRjRBOwogICAgICAgICAgICAtLWdvbGQ6ICNENEFGMzc7CiAgICAgICAgICAgIC0taXZvcnk6ICNGOEY0RUM7CiAgICAgICAgICAgIC0tZGVlcGdvbGQ6ICNCODk3MkU7CiAgICAgICAgICAgIC0tY2hhcmNvYWw6ICMwYTBhMTI7CiAgICAgICAgICAgIC0tZ3JlZW46ICMxMGI5ODE7CiAgICAgICAgICAgIC0tcm9zZTogI0M1OUI3NjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQogICAgICAgIGh0bWwgeyBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDsgfQogICAgICAgIAogICAgICAgIGJvZHkgewogICAgICAgICAgICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoYXJjb2FsKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuODsKICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEFOSU1BVEVEIEJBQ0tHUk9VTkQgKi8KICAgICAgICAuYmctbWFzdGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB6LWluZGV4OiAwOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDIwJSAxMCUsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjE1KSAwJSwgdHJhbnNwYXJlbnQgNTAlKSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDgwJSA5MCUsIHJnYmEoMTk3LCAxNTUsIDExOCwgMC4xMikgMCUsIHRyYW5zcGFyZW50IDQwJSksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA1MCUgNTAlLCByZ2JhKDI4LCAzMSwgNzQsIDAuNCkgMCUsIHRyYW5zcGFyZW50IDYwJSksCiAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1jaGFyY29hbCkgMCUsIHZhcigtLW5hdnkpIDUwJSwgdmFyKC0taW5kaWdvKSAxMDAlKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogRkxPQVRJTkcgT1JCUyAqLwogICAgICAgIC5vcmIgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgZmlsdGVyOiBibHVyKDgwcHgpOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmbG9hdE9yYiAyMHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIC5vcmItMSB7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiA0MDBweDsgYmFja2dyb3VuZDogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMTUpOyB0b3A6IDUlOyBsZWZ0OiAtMTAlOyBhbmltYXRpb24tZGVsYXk6IDBzOyB9CiAgICAgICAgLm9yYi0yIHsgd2lkdGg6IDM1MHB4OyBoZWlnaHQ6IDM1MHB4OyBiYWNrZ3JvdW5kOiByZ2JhKDE5NywgMTU1LCAxMTgsIDAuMTIpOyB0b3A6IDUwJTsgcmlnaHQ6IC0xMCU7IGFuaW1hdGlvbi1kZWxheTogN3M7IH0KICAgICAgICAub3JiLTMgeyB3aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHg7IGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOyBib3R0b206IDEwJTsgbGVmdDogMjAlOyBhbmltYXRpb24tZGVsYXk6IDE0czsgfQogICAgICAgIEBrZXlmcmFtZXMgZmxvYXRPcmIgewogICAgICAgICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApIHNjYWxlKDEpOyBvcGFjaXR5OiAwLjY7IH0KICAgICAgICAgICAgMjUlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNDBweCwgLTQwcHgpIHNjYWxlKDEuMSk7IG9wYWNpdHk6IDAuODsgfQogICAgICAgICAgICA1MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMzBweCwgMzBweCkgc2NhbGUoMC45KTsgb3BhY2l0eTogMC41OyB9CiAgICAgICAgICAgIDc1JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDMwcHgsIDQwcHgpIHNjYWxlKDEuMDUpOyBvcGFjaXR5OiAwLjc7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogRkxPQVRJTkcgU1RBUlMgKi8KICAgICAgICAuc3RhcnMtY29udGFpbmVyIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgICAgICB6LWluZGV4OiAyOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KICAgICAgICAuc3RhciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07CiAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgIGFuaW1hdGlvbjogdHdpbmtsZSA0cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyB0d2lua2xlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHNjYWxlKDAuNSkgcm90YXRlKDBkZWcpOyB9CiAgICAgICAgICAgIDUwJSB7IG9wYWNpdHk6IDAuODsgdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGUoMTgwZGVnKTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBTUEFSS0xFIFBBUlRJQ0xFUyAqLwogICAgICAgIC5zcGFya2xlIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB3aWR0aDogNHB4OwogICAgICAgICAgICBoZWlnaHQ6IDRweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICAgIHotaW5kZXg6IDI7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc3BhcmtsZVB1bHNlIDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHNwYXJrbGVQdWxzZSB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiBzY2FsZSgwKTsgfQogICAgICAgICAgICA1MCUgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHNjYWxlKDEpOyBib3gtc2hhZG93OiAwIDAgMTBweCB2YXIoLS1nb2xkKSwgMCAwIDIwcHggdmFyKC0tZ29sZCk7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNvbnRlbnQtd3JhcHBlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEhFUk8gU0VDVElPTiAqLwogICAgICAgIC5oZXJvIHsKICAgICAgICAgICAgcGFkZGluZzogMTAwcHggMjVweCA4MHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDkwdmg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuaGVyby1sb2dvIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAzcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgfQogICAgICAgIC5oZXJvLWxvZ28gc3BhbiB7IGZvbnQtd2VpZ2h0OiAzMDA7IGNvbG9yOiB2YXIoLS1pdm9yeSk7IH0KICAgICAgICAKICAgICAgICAuaGVybyBoMSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDIuOHJlbSwgOHZ3LCA1cmVtKTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWl2b3J5KSwgdmFyKC0tZ29sZCkpOwogICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgYXV0bzsKICAgICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBzaGltbWVyIDRzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBzaGltbWVyIHsKICAgICAgICAgICAgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSBjZW50ZXI7IH0KICAgICAgICAgICAgMTAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDIwMCUgY2VudGVyOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5oZXJvLXN1YnRpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjNyZW0sIDR2dywgMS44cmVtKTsKICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjgpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4OwogICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuaGVyby1jdGEgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggNTBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWRlZXBnb2xkKSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxNXB4IDQwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMyk7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgfQogICAgICAgIC5oZXJvLWN0YTpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KSBzY2FsZSgxLjAzKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAyMHB4IDUwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuNSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zY3JvbGwtaW5kaWNhdG9yIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogNjBweDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBib3VuY2UgMnMgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIC5zY3JvbGwtaW5kaWNhdG9yIHNwYW4gewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgd2lkdGg6IDMwcHg7CiAgICAgICAgICAgIGhlaWdodDogNTBweDsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQogICAgICAgIC5zY3JvbGwtaW5kaWNhdG9yIHNwYW46OmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogOHB4OwogICAgICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgICAgICAgd2lkdGg6IDZweDsKICAgICAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgICAgICBhbmltYXRpb246IHNjcm9sbERvdCAycyBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBib3VuY2UgewogICAgICAgICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogICAgICAgICAgICA1MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7IH0KICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBzY3JvbGxEb3QgewogICAgICAgICAgICAwJSwgMTAwJSB7IHRvcDogOHB4OyBvcGFjaXR5OiAxOyB9CiAgICAgICAgICAgIDUwJSB7IHRvcDogMjVweDsgb3BhY2l0eTogMC4zOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFdIWSBTRUNUSU9OICovCiAgICAgICAgLndoeS1zZWN0aW9uIHsKICAgICAgICAgICAgcGFkZGluZzogODBweCAyNXB4OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMDBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMnJlbSwgNXZ3LCAyLjhyZW0pOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDUwcHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmJlbmVmaXRzLWdyaWQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI4MHB4LCAxZnIpKTsKICAgICAgICAgICAgZ2FwOiAzMHB4OwogICAgICAgIH0KICAgICAgICAuYmVuZWZpdC1jYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDQwcHggMzBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xNSk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5iZW5lZml0LWNhcmQ6aG92ZXIgewogICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMjBweCA1MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjE1KTsKICAgICAgICB9CiAgICAgICAgLmJlbmVmaXQtaWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMy41cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIH0KICAgICAgICAuYmVuZWZpdC10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAgIH0KICAgICAgICAuYmVuZWZpdC1kZXNjIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjc1KTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogUFJJQ0lORyBTRUNUSU9OICovCiAgICAgICAgLnByaWNpbmctc2VjdGlvbiB7CiAgICAgICAgICAgIHBhZGRpbmc6IDgwcHggMjVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjA1KSwgdHJhbnNwYXJlbnQpOwogICAgICAgIH0KICAgICAgICAucHJpY2luZy1jb250YWluZXIgewogICAgICAgICAgICBtYXgtd2lkdGg6IDkwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnByaWNpbmctaW50cm8gewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDUwcHg7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWludHJvIHAgewogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC43KTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA2MDBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gMjVweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogQ1VSUkVOQ1kgVE9HR0xFICovCiAgICAgICAgLmN1cnJlbmN5LXRvZ2dsZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMjVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWdvbGQpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLmN1cnJlbmN5LXRvZ2dsZTpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjIpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwogICAgICAgIH0KICAgICAgICAuY3VycmVuY3ktdG9nZ2xlLmFjdGl2ZSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1kZWVwZ29sZCkpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFBSSUNJTkcgQ0FSRFMgLSBBQ0NPUkRJT04gU1RZTEUgKi8KICAgICAgICAucHJpY2luZy1jYXJkcyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMjBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnByaWNlLWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjIpOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgICAgIH0KICAgICAgICAucHJpY2UtY2FyZDpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgfQogICAgICAgIC5wcmljZS1jYXJkLmZlYXR1cmVkIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDQwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wcmljZS1oZWFkZXIgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDI1cHggMzBweDsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLnByaWNlLWhlYWRlcjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjA1KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnByaWNlLWxlZnQgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5wcmljZS1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgfQogICAgICAgIC5wcmljZS1pbmZvIGgzIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzcHg7CiAgICAgICAgfQogICAgICAgIC5wcmljZS1pbmZvIHNwYW4gewogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC41KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnByaWNlLXJpZ2h0IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAyMHB4OwogICAgICAgIH0KICAgICAgICAucHJpY2UtYW1vdW50IHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgIH0KICAgICAgICAucHJpY2UtYW1vdW50LnVneCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtOwogICAgICAgIH0KICAgICAgICAucHJpY2UtdG9nZ2xlIHsKICAgICAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAucHJpY2UtY2FyZC5vcGVuIC5wcmljZS10b2dnbGUgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnByaWNlLWRldGFpbHMgewogICAgICAgICAgICBtYXgtaGVpZ2h0OiAwOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuNXMgZWFzZTsKICAgICAgICB9CiAgICAgICAgLnByaWNlLWNhcmQub3BlbiAucHJpY2UtZGV0YWlscyB7CiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucHJpY2UtY29udGVudCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMzBweCAzMHB4OwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgfQogICAgICAgIC5wcmljZS1mZWF0dXJlcyB7CiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICAgICAgICAgIHBhZGRpbmc6IDI1cHggMDsKICAgICAgICB9CiAgICAgICAgLnByaWNlLWZlYXR1cmVzIGxpIHsKICAgICAgICAgICAgcGFkZGluZzogMTBweCAwOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC44NSk7CiAgICAgICAgfQogICAgICAgIC5wcmljZS1mZWF0dXJlcyBsaTo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJ+Kckyc7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1ncmVlbik7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnNlbGVjdC1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1kZWVwZ29sZCkpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5zZWxlY3QtYnRuOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC40KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogUEFZTUVOVCBTRUNUSU9OICovCiAgICAgICAgLnBheW1lbnQtc2VjdGlvbiB7CiAgICAgICAgICAgIHBhZGRpbmc6IDYwcHggMjVweDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA2MDBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIC5wYXltZW50LWJveCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpLCByZ2JhKDEzLCAyNywgNDIsIDAuOCkpOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjVweDsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAzMHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIC5wYXltZW50LWJveCBoMyB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIH0KICAgICAgICAucGF5bWVudC1udW1iZXIgewogICAgICAgICAgICBmb250LXNpemU6IDJyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICAgICAgcGFkZGluZzogMjBweCAzMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgICAgICBhbmltYXRpb246IGdsb3dQdWxzZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBnbG93UHVsc2UgewogICAgICAgICAgICAwJSwgMTAwJSB7IGJveC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjIpOyB9CiAgICAgICAgICAgIDUwJSB7IGJveC1zaGFkb3c6IDAgMCAzMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjQpOyB9CiAgICAgICAgfQogICAgICAgIC5wYXltZW50LW5vdGUgewogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNik7CiAgICAgICAgfQogICAgICAgIC5wYXltZW50LWZsYWcgewogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogT1JERVIgRk9STSAqLwogICAgICAgIC5vcmRlci1zZWN0aW9uIHsKICAgICAgICAgICAgcGFkZGluZzogNjBweCAyNXB4OwogICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgLm9yZGVyLWJveCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjVweDsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAzMHB4OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yKTsKICAgICAgICB9CiAgICAgICAgLm9yZGVyLWJveCBoMyB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5mb3JtLWdyb3VwIHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CiAgICAgICAgLmZvcm0tZ3JvdXAgbGFiZWwgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjcpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgfQogICAgICAgIC5mb3JtLWdyb3VwIGlucHV0LAogICAgICAgIC5mb3JtLWdyb3VwIHNlbGVjdCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAxNnB4IDIwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLmZvcm0tZ3JvdXAgaW5wdXQ6Zm9jdXMsCiAgICAgICAgLmZvcm0tZ3JvdXAgc2VsZWN0OmZvY3VzIHsKICAgICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDIwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgfQogICAgICAgIC5mb3JtLWdyb3VwIGlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5mb3JtLXJvdyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsKICAgICAgICAgICAgZ2FwOiAxNXB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc3VibWl0LWJ0biB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAxOHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tZGVlcGdvbGQpKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgICAgfQogICAgICAgIC5zdWJtaXQtYnRuOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDE1cHggNDBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC40KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZvcm0tZGlzY2xhaW1lciB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjM0LCA4OCwgMTIsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjM0LCA4OCwgMTIsIDAuMyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC43KTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgICAgICAuZm9ybS1kaXNjbGFpbWVyIHN0cm9uZyB7CiAgICAgICAgICAgIGNvbG9yOiAjZjU5ZTBiOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBURVJNUyAqLwogICAgICAgIC50ZXJtcy1zZWN0aW9uIHsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAyNXB4OwogICAgICAgICAgICBtYXgtd2lkdGg6IDcwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgLnRlcm1zLWJveCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICAgICAgcGFkZGluZzogMzBweDsKICAgICAgICB9CiAgICAgICAgLnRlcm1zLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgLnRlcm1zLWdyaWQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTsKICAgICAgICAgICAgZ2FwOiAxNXB4OwogICAgICAgIH0KICAgICAgICAudGVybS1pdGVtIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAgICAgIGdhcDogMTBweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNyk7CiAgICAgICAgfQogICAgICAgIC50ZXJtLWljb24geyBmb250LXNpemU6IDFyZW07IH0KICAgICAgICAudGVybS1pY29uLmdyZWVuIHsgY29sb3I6IHZhcigtLWdyZWVuKTsgfQogICAgICAgIC50ZXJtLWljb24ud2FybiB7IGNvbG9yOiAjZjU5ZTBiOyB9CiAgICAgICAgCiAgICAgICAgLyogUkVXQVJEUyBDVEEgKi8KICAgICAgICAucmV3YXJkcy1jdGEgewogICAgICAgICAgICBwYWRkaW5nOiA2MHB4IDI1cHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgLnJld2FyZHMtYm94IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSksIHJnYmEoMTMsIDI3LCA0MiwgMC44KSk7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWdvbGQpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyNXB4OwogICAgICAgICAgICBwYWRkaW5nOiA1MHB4IDMwcHg7CiAgICAgICAgICAgIG1heC13aWR0aDogNjAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAucmV3YXJkcy1ib3ggaDMgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICB9CiAgICAgICAgLnJld2FyZHMtYm94IHAgewogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjcpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgICAgIH0KICAgICAgICAucmV3YXJkcy1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIHBhZGRpbmc6IDE2cHggNDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWRlZXBnb2xkKSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAucmV3YXJkcy1idG46aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTVweCA0MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjQpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBGT09URVIgKi8KICAgICAgICBmb290ZXIgewogICAgICAgICAgICBwYWRkaW5nOiA2MHB4IDI1cHggNDBweDsKICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjE1KTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgICAgICAuZm9vdGVyLWJyYW5kIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgfQogICAgICAgIC5mb290ZXItdGFnbGluZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC41KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZvb3Rlci1saW5rcyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBnYXA6IDMwcHg7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICB9CiAgICAgICAgLmZvb3Rlci1saW5rcyBhIHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC42KTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLmZvb3Rlci1saW5rcyBhOmhvdmVyIHsgY29sb3I6IHZhcigtLWdvbGQpOyB9CiAgICAgICAgCiAgICAgICAgLmNhbXB1cy1hbWJhc3NhZG9ycyB7CiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAyNXB4OwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC40KTsKICAgICAgICB9CiAgICAgICAgLmNhbXB1cy1hbWJhc3NhZG9ycyBhIHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC41KTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBtYXJnaW46IDAgOHB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5jYW1wdXMtYW1iYXNzYWRvcnMgYTpob3ZlciB7IGNvbG9yOiB2YXIoLS1nb2xkKTsgfQogICAgICAgIAogICAgICAgIC5jb3B5cmlnaHQgewogICAgICAgICAgICBtYXJnaW4tdG9wOiAyNXB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC4zKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogUkVTUE9OU0lWRSAqLwogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICBib2R5IHsgZm9udC1zaXplOiAxNnB4OyB9CiAgICAgICAgICAgIC5oZXJvIHsgcGFkZGluZzogODBweCAyMHB4IDYwcHg7IG1pbi1oZWlnaHQ6IGF1dG87IH0KICAgICAgICAgICAgLmhlcm8gaDEgeyBmb250LXNpemU6IDIuNHJlbTsgfQogICAgICAgICAgICAuZm9ybS1yb3cgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfQogICAgICAgICAgICAucHJpY2UtaGVhZGVyIHsgcGFkZGluZzogMjBweDsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDE1cHg7IH0KICAgICAgICAgICAgLnByaWNlLWxlZnQgeyBnYXA6IDE1cHg7IH0KICAgICAgICAgICAgLnByaWNlLWljb24geyBmb250LXNpemU6IDJyZW07IH0KICAgICAgICAgICAgLnByaWNlLWluZm8gaDMgeyBmb250LXNpemU6IDEuMnJlbTsgfQogICAgICAgICAgICAucHJpY2UtYW1vdW50IHsgZm9udC1zaXplOiAxLjZyZW07IH0KICAgICAgICAgICAgLnByaWNlLWFtb3VudC51Z3ggeyBmb250LXNpemU6IDEuMXJlbTsgfQogICAgICAgICAgICAudGVybXMtZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9CiAgICAgICAgICAgIC5wYXltZW50LW51bWJlciB7IGZvbnQtc2l6ZTogMS41cmVtOyBwYWRkaW5nOiAxNXB4IDIwcHg7IH0KICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogICAgPGRpdiBjbGFzcz0iYmctbWFzdGVyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im9yYiBvcmItMSI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJvcmIgb3JiLTIiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ib3JiIG9yYi0zIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InN0YXJzLWNvbnRhaW5lciIgaWQ9InN0YXJzIj48L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0iY29udGVudC13cmFwcGVyIj4KICAgICAgICA8IS0tIEhFUk8gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9Imhlcm8iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZXJvLWxvZ28iPvCfpJ0gSGFuZHNoYWtlIDxzcGFuPkFmcmljYTwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgPGgxPk93biBZb3VyIERpZ2l0YWwgUHJlc2VuY2U8L2gxPgogICAgICAgICAgICA8cCBjbGFzcz0iaGVyby1zdWJ0aXRsZSI+UHJlbWl1bSBkaWdpdGFsIGJ1c2luZXNzIGNhcmRzIGZvciBBZnJpY2EgYW5kIHRoZSBEaWFzcG9yYS4gU2hhcmUgd2hvIHlvdSBhcmUsIGFueXdoZXJlLCBhbnl0aW1lLjwvcD4KICAgICAgICAgICAgPGEgaHJlZj0iI3ByaWNpbmciIGNsYXNzPSJoZXJvLWN0YSI+R2V0IFlvdXIgQ2FyZDwvYT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsLWluZGljYXRvciI+CiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAKICAgICAgICA8IS0tIFdIWSBTRUNUSU9OIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJ3aHktc2VjdGlvbiI+CiAgICAgICAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+V2h5IERpZ2l0YWwgQ2FyZHM/PC9oMj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVuZWZpdHMtZ3JpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZW5lZml0LWNhcmQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJlbmVmaXQtaWNvbiI+8J+MjTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJlbmVmaXQtdGl0bGUiPlNoYXJlIEFueXdoZXJlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVuZWZpdC1kZXNjIj5PbmUgbGluay4gV29ya3Mgb24gYW55IGRldmljZS4gU2hhcmUgdmlhIFdoYXRzQXBwLCBlbWFpbCwgUVIgY29kZSwgb3Igc29jaWFsIG1lZGlhLjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZW5lZml0LWNhcmQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJlbmVmaXQtaWNvbiI+8J+UkjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJlbmVmaXQtdGl0bGUiPlNTTCBTZWN1cmVkPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVuZWZpdC1kZXNjIj5Zb3VyIGNhcmQgaXMgcHJvdGVjdGVkIHdpdGggYmFuay1sZXZlbCBlbmNyeXB0aW9uLiBTYWZlLCBwcm9mZXNzaW9uYWwsIHRydXN0d29ydGh5LjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZW5lZml0LWNhcmQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJlbmVmaXQtaWNvbiI+4pqhPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVuZWZpdC10aXRsZSI+QWx3YXlzIE9uPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVuZWZpdC1kZXNjIj4yNC83IGhvc3RpbmcgaW5jbHVkZWQuIFlvdXIgZGlnaXRhbCBwcmVzZW5jZSBuZXZlciBzbGVlcHMuPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJlbmVmaXQtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVuZWZpdC1pY29uIj7inKg8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZW5lZml0LXRpdGxlIj5QcmVtaXVtIERlc2lnbjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJlbmVmaXQtZGVzYyI+QmVhdXRpZnVsbHkgY3JhZnRlZCBjYXJkcyB0aGF0IG1ha2UgeW91IHN0YW5kIG91dCBmcm9tIHRoZSBjcm93ZC48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgCiAgICAgICAgPCEtLSBQUklDSU5HIFNFQ1RJT04gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InByaWNpbmctc2VjdGlvbiIgaWQ9InByaWNpbmciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWludHJvIj4KICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkNob29zZSBZb3VyIENhcmQ8L2gyPgogICAgICAgICAgICAgICAgICAgIDxwPlNlbGVjdCB0aGUgdGllciB0aGF0IGZpdHMgeW91ciBuZWVkcy4gQWxsIGNhcmRzIGluY2x1ZGUgU1NMIHNlY3VyaXR5IGFuZCBob3N0aW5nLjwvcD4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdXJyZW5jeS10b2dnbGUiIGlkPSJjdXJyZW5jeVRvZ2dsZSIgb25jbGljaz0idG9nZ2xlQ3VycmVuY3koKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIPCfkrEgPHNwYW4gaWQ9ImN1cnJlbmN5TGFiZWwiPlNob3cgaW4gVUdYIPCfh7rwn4esPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctY2FyZHMiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gUEVSU09OQUwgLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtY2FyZCIgb25jbGljaz0idG9nZ2xlQ2FyZCh0aGlzKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNlLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZS1sZWZ0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZS1pY29uIj7wn5OxPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5QZXJzb25hbDwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkJ1aWxkaW5nIGNvbm5lY3Rpb25zPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZS1yaWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtYW1vdW50IiBkYXRhLXVzZD0iJDEwIiBkYXRhLXVneD0iVUdYIDM1LDU3MSI+JDEwPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtdG9nZ2xlIj7ilrw8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtZGV0YWlscyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZS1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InByaWNlLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkNob2ljZSBvZiBjb2xvdXJzPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlVwIHRvIDMgbGlua3M8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+U29jaWFsIG1lZGlhIGljb25zPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPllvdXIgZmF2b3VyaXRlIHF1b3RlPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlNTTCBzZWN1cmVkICYgaG9zdGVkPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InNlbGVjdC1idG4iIG9uY2xpY2s9InNlbGVjdFRpZXIoZXZlbnQsICdwZXJzb25hbCcsIDEwKSI+U2VsZWN0IFBlcnNvbmFsIOKGkjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwhLS0gU1RBUlRVUCAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZS1jYXJkIGZlYXR1cmVkIiBvbmNsaWNrPSJ0b2dnbGVDYXJkKHRoaXMpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNlLWxlZnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNlLWljb24iPvCfkqE8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZS1pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlN0YXJ0dXA8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TaWRlIHZlbnR1cmVzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZS1yaWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtYW1vdW50IiBkYXRhLXVzZD0iJDIwIiBkYXRhLXVneD0iVUdYIDcxLDE0MSI+JDIwPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtdG9nZ2xlIj7ilrw8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtZGV0YWlscyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZS1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InByaWNlLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkV2ZXJ5dGhpbmcgaW4gUGVyc29uYWwgKzwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5VcCB0byA3IGxpbmtzPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlBvcnRmb2xpbyBzZWN0aW9uPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkxpbmtlZEluIGludGVncmF0aW9uPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkN1c3RvbSBjb2xvciBzY2hlbWU8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic2VsZWN0LWJ0biIgb25jbGljaz0ic2VsZWN0VGllcihldmVudCwgJ3N0YXJ0dXAnLCAyMCkiPlNlbGVjdCBTdGFydHVwIOKGkjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwhLS0gRU5UUkVQUkVORVVSIC0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNlLWNhcmQiIG9uY2xpY2s9InRvZ2dsZUNhcmQodGhpcykiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZS1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtbGVmdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtaWNvbiI+8J+agDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNlLWluZm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+RW50cmVwcmVuZXVyPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QWN0aXZlIGJ1c2luZXNzZXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNlLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZS1hbW91bnQiIGRhdGEtdXNkPSIkMzAiIGRhdGEtdWd4PSJVR1ggMTA2LDcxMiI+JDMwPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtdG9nZ2xlIj7ilrw8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UtZGV0YWlscyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZS1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InByaWNlLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkV2ZXJ5dGhpbmcgaW4gU3RhcnR1cCArPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlNvY2lhbCwgZWNvbW1lcmNlICYgd2Vic2l0ZSBsaW5rczwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5Qcm9kdWN0IHNob3djYXNlIHNlY3Rpb248L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+Qm9va2luZy9jYWxlbmRhciBsaW5rPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkJyYW5kZWQgUVIgY29kZTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzZWxlY3QtYnRuIiBvbmNsaWNrPSJzZWxlY3RUaWVyKGV2ZW50LCAnZW50cmVwcmVuZXVyJywgMzApIj5TZWxlY3QgRW50cmVwcmVuZXVyIOKGkjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAKICAgICAgICA8IS0tIFBBWU1FTlQgU0VDVElPTiAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icGF5bWVudC1zZWN0aW9uIiBpZD0icGF5bWVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgIDxoMz7wn5OxIFBheSB2aWEgTW9iaWxlIE1vbmV5PC9oMz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtbnVtYmVyIj4rMjU2LTc4Ni03ODEtMzY3IDxzcGFuIGNsYXNzPSJwYXltZW50LWZsYWciPvCfh7rwn4esPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgPHAgY2xhc3M9InBheW1lbnQtbm90ZSI+SW50ZXJuYXRpb25hbCBtb2JpbGUgbW9uZXkgYWNjZXB0ZWQgZnJvbSBhbnl3aGVyZSBpbiBBZnJpY2EgJiBEaWFzcG9yYTwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIAogICAgICAgIDwhLS0gT1JERVIgRk9STSAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ib3JkZXItc2VjdGlvbiIgaWQ9Im9yZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3JkZXItYm94Ij4KICAgICAgICAgICAgICAgIDxoMz7wn5OLIENvbXBsZXRlIFlvdXIgT3JkZXI8L2gzPgogICAgICAgICAgICAgICAgPGZvcm0gaWQ9Im9yZGVyRm9ybSIgYWN0aW9uPSJodHRwczovL2hhbmRzaGFrZS5hZnJpY2Evd2VsY29tZS1wb3J0YWwiIG1ldGhvZD0iR0VUIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzb3VyY2UiIHZhbHVlPSJoYW5kc2hha2UuYWZyaWNhL2RpZ2l0YWwtY2FyZHMiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFtYmFzc2Fkb3IiIHZhbHVlPSJBR0VOQ1ktTUFJTiI+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1yb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5GaXJzdCBOYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaXJzdE5hbWUiIHBsYWNlaG9sZGVyPSJZb3VyIGZpcnN0IG5hbWUiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TGFzdCBOYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJsYXN0TmFtZSIgcGxhY2Vob2xkZXI9IllvdXIgbGFzdCBuYW1lIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5FbWFpbCBBZGRyZXNzPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJlbWFpbCIgcGxhY2Vob2xkZXI9InlvdXJAZW1haWwuY29tIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPldoYXRzQXBwIE51bWJlciAod2l0aCBjb3VudHJ5IGNvZGUpPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRlbCIgbmFtZT0id2hhdHNhcHAiIHBsYWNlaG9sZGVyPSIrMjU2LXh4eC14eHgteHh4IiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkNvdW50cnk8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY291bnRyeSIgcGxhY2Vob2xkZXI9IlVnYW5kYSwgS2VueWEsIFVTQSwgVUssIGV0Yy4iIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+U2VsZWN0ZWQgVGllcjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT0idGllclNlbGVjdCIgaWQ9InRpZXJTZWxlY3QiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5DaG9vc2UgeW91ciB0aWVyLi4uPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJwZXJzb25hbC0xMCI+8J+TsSBQZXJzb25hbCAtICQxMDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ic3RhcnR1cC0yMCI+8J+SoSBTdGFydHVwIC0gJDIwPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJlbnRyZXByZW5ldXItMzAiPvCfmoAgRW50cmVwcmVuZXVyIC0gJDMwPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0ic3VibWl0LWJ0biI+U3VibWl0IE9yZGVyIOKGkjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZGlzY2xhaW1lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+4pqg77iPIEltcG9ydGFudDo8L3N0cm9uZz4gWW91IG11c3QgYmUgMTggeWVhcnMgb3Igb2xkZXIgdG8gb3JkZXIuIE9yZGVycyB3aXRoIGZhbHNlIGluZm9ybWF0aW9uIHdpbGwgYmUgcmVqZWN0ZWQuIEJ5IHN1Ym1pdHRpbmcsIHlvdSBjb25maXJtIGFsbCBkZXRhaWxzIGFyZSBhY2N1cmF0ZS4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIAogICAgICAgIDwhLS0gVEVSTVMgLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InRlcm1zLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtcy1ib3giPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXJtcy10aXRsZSI+8J+TiyBXaGF0J3MgSW5jbHVkZWQgJiBUZXJtczwvaDM+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtcy1ncmlkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybS1pY29uIGdyZWVuIj7inJM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlNTTCAmIGhvc3RpbmcgaW5jbHVkZWQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0taWNvbiBncmVlbiI+4pyTPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4yNC83IG9ubGluZSBwcmVzZW5jZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybS1pY29uIGdyZWVuIj7inJM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk1vYmlsZS1mcmllbmRseSBkZXNpZ248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0taWNvbiBncmVlbiI+4pyTPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TaGFyZWFibGUgbGluazwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybS1pY29uIHdhcm4iPuKaoO+4jzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QWxsIGxpbmtzIG11c3QgYmUgb3duZWQgYnkgeW91PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlcm0taXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtLWljb24gd2FybiI+4pqg77iPPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5ObyByZWRpcmVjdCBsaW5rcyBhbGxvd2VkPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlcm0taXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtLWljb24gd2FybiI+4pqg77iPPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5WZXJpZnkgYmVmb3JlIHN1Ym1pdHRpbmc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0taWNvbiB3YXJuIj7imqDvuI88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkNvcnJlY3Rpb25zOiAkNSBwZXIgZml4PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAKICAgICAgICA8IS0tIFJFV0FSRFMgQ1RBIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyZXdhcmRzLWN0YSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJld2FyZHMtYm94IiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSksIHJnYmEoMTMsIDI3LCA0MiwgMC44KSk7IGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7Ij4KICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0iY29sb3I6IHZhcigtLWdvbGQpOyI+8J+OgSBFYXJuIFJld2FyZHMhPC9oMz4KICAgICAgICAgICAgICAgIDxwPkxvdmUgeW91ciBjYXJkPyBSZWZlciBmcmllbmRzIGFuZCBlYXJuIGV4Y2x1c2l2ZSByZXdhcmRzIGZyb20gbG9jYWwgYnVzaW5lc3NlcyBhY3Jvc3MgQWZyaWNhICYgdGhlIERpYXNwb3JhITwvcD4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vaGFuZHNoYWtlLmFmcmljYS9leGNsdXNpdmUtcmV3YXJkcyIgY2xhc3M9InJld2FyZHMtYnRuIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWRlZXBnb2xkKSk7IGNvbG9yOiB2YXIoLS1uYXZ5KTsiPkpvaW4gUmV3YXJkcyBQcm9ncmFtIOKGkjwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIAogICAgICAgIDwhLS0gQ09MTEVHRSBQQVJFTlQgSU5WSVRFIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyZXdhcmRzLWN0YSIgc3R5bGU9InBhZGRpbmctdG9wOiAwOyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJld2FyZHMtYm94IiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMDgpLCByZ2JhKDEzLCAyNywgNDIsIDAuOCkpOyBib3JkZXItY29sb3I6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjQpOyI+CiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDNyZW07IG1hcmdpbi1ib3R0b206IDE1cHg7Ij7wn46TPC9kaXY+CiAgICAgICAgICAgICAgICA8aDMgc3R5bGU9ImNvbG9yOiB2YXIoLS1nb2xkKTsiPkdvdCBLaWRzIGluIENvbGxlZ2U/PC9oMz4KICAgICAgICAgICAgICAgIDxwPkludHJvZHVjZSB5b3VyIHVuaXZlcnNpdHkgc3R1ZGVudHMgdG8gb3VyIDxzdHJvbmc+Q29sbGVnZSBBbWJhc3NhZG9yIFByb2dyYW0hPC9zdHJvbmc+IFRoZXkgY2FuIGVhcm4gbW9uZXksIGJ1aWxkIHNraWxscywgYW5kIGdldCByZWFsIGJ1c2luZXNzIGV4cGVyaWVuY2Ugd2hpbGUgaW4gc2Nob29sLjwvcD4KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogMTVweDsgbWFyZ2luOiAyNXB4IDA7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMyk7IHBhZGRpbmc6IDEycHggMjBweDsgYm9yZGVyLXJhZGl1czogMTVweDsgZm9udC1zaXplOiAwLjk1cmVtOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogdmFyKC0tZ29sZCk7IGZvbnQtd2VpZ2h0OiA3MDA7Ij7wn5KwPC9zcGFuPiBFYXJuIFJlYWwgSW5jb21lCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjMpOyBwYWRkaW5nOiAxMnB4IDIwcHg7IGJvcmRlci1yYWRpdXM6IDE1cHg7IGZvbnQtc2l6ZTogMC45NXJlbTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6IHZhcigtLWdvbGQpOyBmb250LXdlaWdodDogNzAwOyI+8J+TnDwvc3Bhbj4gR2V0IENlcnRpZmllZAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4zKTsgcGFkZGluZzogMTJweCAyMHB4OyBib3JkZXItcmFkaXVzOiAxNXB4OyBmb250LXNpemU6IDAuOTVyZW07Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiB2YXIoLS1nb2xkKTsgZm9udC13ZWlnaHQ6IDcwMDsiPvCfmoA8L3NwYW4+IEJ1aWxkIFRoZWlyIENWCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vcmV3YXJkcy5icmFuZGhhbmRzaGFrZS5jb20iIGNsYXNzPSJyZXdhcmRzLWJ0biIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1kZWVwZ29sZCkpOyBjb2xvcjogdmFyKC0tbmF2eSk7Ij5MZWFybiBBYm91dCBBbWJhc3NhZG9yIFByb2dyYW0g4oaSPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgCiAgICAgICAgPCEtLSBGT09URVIgLS0+CiAgICAgICAgPGZvb3Rlcj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWJyYW5kIj7wn6SdIEhhbmRzaGFrZS5BZnJpY2E8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLXRhZ2xpbmUiPkJ1aWxkaW5nIERpZ2l0YWwgU292ZXJlaWdudHkgQWNyb3NzIEFmcmljYSAmIHRoZSBEaWFzcG9yYTwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWxpbmtzIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vaGFuZHNoYWtlLmFmcmljYSI+SG9tZTwvYT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vaGFuZHNoYWtlLmFmcmljYS9leGNsdXNpdmUtcmV3YXJkcyI+UmV3YXJkczwvYT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYnJhbmRoYW5kc2hha2UuY29tIj5CcmFuZEhhbmRzaGFrZTwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYW1wdXMtYW1iYXNzYWRvcnMiPgogICAgICAgICAgICAgICAgQWxzbyBhdmFpbGFibGUgZnJvbSBvdXIgQ2FtcHVzIEFtYmFzc2Fkb3JzOgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9haWdlbml1cy5icmFuZGhhbmRzaGFrZS5jb20iPlRlbmRvPC9hPiB8CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FpYnl0ZXMuYnJhbmRoYW5kc2hha2UuY29tIj5EYXZpczwvYT4gfAogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9haW5vdmEuYnJhbmRoYW5kc2hha2UuY29tIj5FenJhPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxwIGNsYXNzPSJjb3B5cmlnaHQiPsKpIDIwMjUgQnJhbmRIYW5kc2hha2UuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9wPgogICAgICAgIDwvZm9vdGVyPgogICAgPC9kaXY+CiAgICAKICAgIDxzY3JpcHQ+CiAgICAgICAgLy8gQ3JlYXRlIGZsb2F0aW5nIHN0YXJzCiAgICAgICAgY29uc3Qgc3RhcnNDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhcnMnKTsKICAgICAgICBjb25zdCBzdGFyRW1vamlzID0gWyfinKgnLCAn4q2QJywgJ/CfkqsnLCAn8J+MnyddOwogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTU7IGkrKykgewogICAgICAgICAgICBjb25zdCBzdGFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgIHN0YXIuY2xhc3NOYW1lID0gJ3N0YXInOwogICAgICAgICAgICBzdGFyLnRleHRDb250ZW50ID0gc3RhckVtb2ppc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBzdGFyRW1vamlzLmxlbmd0aCldOwogICAgICAgICAgICBzdGFyLnN0eWxlLmxlZnQgPSBNYXRoLnJhbmRvbSgpICogMTAwICsgJyUnOwogICAgICAgICAgICBzdGFyLnN0eWxlLnRvcCA9IE1hdGgucmFuZG9tKCkgKiAxMDAgKyAnJSc7CiAgICAgICAgICAgIHN0YXIuc3R5bGUuYW5pbWF0aW9uRGVsYXkgPSBNYXRoLnJhbmRvbSgpICogNCArICdzJzsKICAgICAgICAgICAgc3Rhci5zdHlsZS5hbmltYXRpb25EdXJhdGlvbiA9ICgzICsgTWF0aC5yYW5kb20oKSAqIDIpICsgJ3MnOwogICAgICAgICAgICBzdGFyc0NvbnRhaW5lci5hcHBlbmRDaGlsZChzdGFyKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gQ3JlYXRlIHNwYXJrbGVzCiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7CiAgICAgICAgICAgIGNvbnN0IHNwYXJrbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgc3BhcmtsZS5jbGFzc05hbWUgPSAnc3BhcmtsZSc7CiAgICAgICAgICAgIHNwYXJrbGUuc3R5bGUubGVmdCA9IE1hdGgucmFuZG9tKCkgKiAxMDAgKyAnJSc7CiAgICAgICAgICAgIHNwYXJrbGUuc3R5bGUudG9wID0gTWF0aC5yYW5kb20oKSAqIDEwMCArICclJzsKICAgICAgICAgICAgc3BhcmtsZS5zdHlsZS5hbmltYXRpb25EZWxheSA9IE1hdGgucmFuZG9tKCkgKiAzICsgJ3MnOwogICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNwYXJrbGUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBDdXJyZW5jeSB0b2dnbGUKICAgICAgICBsZXQgc2hvd1VHWCA9IGZhbHNlOwogICAgICAgIGZ1bmN0aW9uIHRvZ2dsZUN1cnJlbmN5KCkgewogICAgICAgICAgICBzaG93VUdYID0gIXNob3dVR1g7CiAgICAgICAgICAgIGNvbnN0IHRvZ2dsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXJyZW5jeVRvZ2dsZScpOwogICAgICAgICAgICBjb25zdCBsYWJlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXJyZW5jeUxhYmVsJyk7CiAgICAgICAgICAgIGNvbnN0IGFtb3VudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucHJpY2UtYW1vdW50Jyk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoc2hvd1VHWCkgewogICAgICAgICAgICAgICAgdG9nZ2xlLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSAnU2hvdyBpbiBVU0Qg8J+HuvCfh7gnOwogICAgICAgICAgICAgICAgYW1vdW50cy5mb3JFYWNoKGEgPT4gewogICAgICAgICAgICAgICAgICAgIGEudGV4dENvbnRlbnQgPSBhLmRhdGFzZXQudWd4OwogICAgICAgICAgICAgICAgICAgIGEuY2xhc3NMaXN0LmFkZCgndWd4Jyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRvZ2dsZS5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgIGxhYmVsLnRleHRDb250ZW50ID0gJ1Nob3cgaW4gVUdYIPCfh7rwn4esJzsKICAgICAgICAgICAgICAgIGFtb3VudHMuZm9yRWFjaChhID0+IHsKICAgICAgICAgICAgICAgICAgICBhLnRleHRDb250ZW50ID0gYS5kYXRhc2V0LnVzZDsKICAgICAgICAgICAgICAgICAgICBhLmNsYXNzTGlzdC5yZW1vdmUoJ3VneCcpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gQWNjb3JkaW9uIGNhcmRzCiAgICAgICAgZnVuY3Rpb24gdG9nZ2xlQ2FyZChjYXJkKSB7CiAgICAgICAgICAgIC8vIENsb3NlIGFsbCBvdGhlciBjYXJkcwogICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucHJpY2UtY2FyZCcpLmZvckVhY2goYyA9PiB7CiAgICAgICAgICAgICAgICBpZiAoYyAhPT0gY2FyZCkgYy5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAvLyBUb2dnbGUgY2xpY2tlZCBjYXJkCiAgICAgICAgICAgIGNhcmQuY2xhc3NMaXN0LnRvZ2dsZSgnb3BlbicpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBTZWxlY3QgdGllcgogICAgICAgIGZ1bmN0aW9uIHNlbGVjdFRpZXIoZXZlbnQsIHRpZXIsIGFtb3VudCkgewogICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpZXJTZWxlY3QnKS52YWx1ZSA9IGAke3RpZXJ9LSR7YW1vdW50fWA7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmRlcicpLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBGb3JtIHN1Ym1pc3Npb24KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkZXJGb3JtJykuYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0JywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAvLyBGb3JtIHdpbGwgc3VibWl0IHRvIENSTSBVUkwKICAgICAgICB9KTsKICAgIDwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4=","embed":""}
π€ Handshake Africa
Own Your Digital Presence
Premium digital business cards for Africa and the Diaspora. Share who you are, anywhere, anytime.
Get Your CardWhy Digital Cards?
π
Share Anywhere
One link. Works on any device. Share via WhatsApp, email, QR code, or social media.
π
SSL Secured
Your card is protected with bank-level encryption. Safe, professional, trustworthy.
β‘
Always On
24/7 hosting included. Your digital presence never sleeps.
β¨
Premium Design
Beautifully crafted cards that make you stand out from the crowd.
Choose Your Card
Select the tier that fits your needs. All cards include SSL security and hosting.
π±
Personal
Building connections$10
βΌ
- Choice of colours
- Up to 3 links
- Social media icons
- Your favourite quote
- SSL secured & hosted
π‘
Startup
Side ventures$20
βΌ
- Everything in Personal +
- Up to 7 links
- Portfolio section
- LinkedIn integration
- Custom color scheme
π
Entrepreneur
Active businesses$30
βΌ
- Everything in Startup +
- Social, ecommerce & website links
- Product showcase section
- Booking/calendar link
- Branded QR code
π± Pay via Mobile Money
+256-786-781-367 πΊπ¬
International mobile money accepted from anywhere in Africa & Diaspora
π Complete Your Order
π What's Included & Terms
β
SSL & hosting included
β
24/7 online presence
β
Mobile-friendly design
β
Shareable link
β οΈ
All links must be owned by you
β οΈ
No redirect links allowed
β οΈ
Verify before submitting
β οΈ
Corrections: $5 per fix
π Earn Rewards!
Love your card? Refer friends and earn exclusive rewards from local businesses across Africa & the Diaspora!
Join Rewards Program βπ
Got Kids in College?
Introduce your university students to our College Ambassador Program! They can earn money, build skills, and get real business experience while in school.
π° Earn Real Income
π Get Certified
π Build Their CV