cropper

SOVEREIGN MOMENTUM DIGITAL ARCHITECTS

cropper
  • Momentum 2026
  • Momentous Journey
  • Vision Chamber
  • Goals Forge
  • Contact Us
  • Check-In Station
  • Virtual Realm
  • Giving Back
  • 2026 Passion
  • 2026 Prosperity
  • Webinar Theatre
  • Father's Hearth
{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8IS0tIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogICAgICAgICBVUkw6IHNoZWVib3NzLmJyYW5kaGFuZHNoYWtlLmNvbQogICAgICAgICBQQUdFIDE6IFRIRSBNWVNURVJZIFRFQVNFUiB+ICJJIEFNIF9fX18iIFBFUlNPTkFMSVRZIExPVFRFUlkKICAgICAgICAgUFVSUE9TRTogRW5nYWdpbmcgZmlyc3QgdG91Y2hwb2ludCAtIG15c3RlcmlvdXMsIHBsYXlmdWwsIGVtcG93ZXJpbmcKICAgICAgICAgQlJBTkQ6IER5bmFtaWMgUGFyYWRpZ21zICYgTWVudG9yc2hpcCBTdWNjZXNzIEFjYWRlbWllcwogICAgICAgICBBUkNISVRFQ1Q6IFRoZSBTSEUgRX5Cb3NzIFNvbHV0aW9uaXN0CiAgICAgICAgIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCAtLT4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KICAgIDx0aXRsZT5Nb21lbnR1bSBBd2FpdHMuLi4gQXJlIFlvdSBSZWFkeT8gfCBUaGUgU0hFIEV+Qm9zcyBFeHBlcmllbmNlPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJNb21lbnR1bSBhd2FpdHMuIFRoZSBxdWVzdGlvbiBpc24ndCB3aGF0J3MgY29taW5nIH4gaXQncyBXSE8geW91J2xsIGJlY29tZS4gRGlzY292ZXIgeW91ciAyMDI2IHNvdmVyZWlnbiBwYXRod2F5LiI+CiAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9zaGVlYm9zcy5icmFuZGhhbmRzaGFrZS5jb20iPgogICAgCiAgICA8IS0tIE9wZW4gR3JhcGggLS0+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9Ik1vbWVudHVtIEF3YWl0cy4uLiBBcmUgWW91IFJlYWR5IGZvciAyMDI2PyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9Ik1vbWVudHVtIGF3YWl0cy4gVGhlIHF1ZXN0aW9uIGlzbid0IHdoYXQncyBjb21pbmcgfiBpdCdzIFdITyB5b3UnbGwgYmVjb21lLiI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0id2Vic2l0ZSI+CiAgICAKICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9UGxheWZhaXIrRGlzcGxheTp3Z2h0QDQwMDs1MDA7NjAwOzcwMDs4MDA7OTAwJmZhbWlseT1Db3Jtb3JhbnQrR2FyYW1vbmQ6aXRhbCx3Z2h0QDAsNDAwOzAsNTAwOzAsNjAwOzAsNzAwOzEsNDAwOzEsNTAwJmZhbWlseT1DaW56ZWw6d2dodEA0MDA7NTAwOzYwMDs3MDA7ODAwOzkwMCZmYW1pbHk9TnVuaXRvOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMDs4MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogICAgPHN0eWxlPgogICAgICAgIDpyb290IHsKICAgICAgICAgICAgLS1uYXZ5OiAjMTYyMTNlOwogICAgICAgICAgICAtLW5hdnktZGVlcDogIzBmMGYyMzsKICAgICAgICAgICAgLS1uYXZ5LWxpZ2h0OiAjMWExYTJlOwogICAgICAgICAgICAtLWdvbGQ6ICNENEFGMzc7CiAgICAgICAgICAgIC0tZ29sZC1saWdodDogI0U1QzE1ODsKICAgICAgICAgICAgLS1nb2xkLWRhcms6ICNCODk2MEM7CiAgICAgICAgICAgIC0tcm9zZTogI0I3NkU3OTsKICAgICAgICAgICAgLS1yb3NlLWxpZ2h0OiAjRDQ5MTlBOwogICAgICAgICAgICAtLXJvc2UtZGFyazogIzlBNUE2MzsKICAgICAgICAgICAgLS1pdm9yeTogI0ZGRjlGNTsKICAgICAgICAgICAgLS1pdm9yeS1tdXRlZDogcmdiYSgyNTUsIDI0OSwgMjQ1LCAwLjkpOwogICAgICAgICAgICAtLWl2b3J5LXNvZnQ6IHJnYmEoMjU1LCAyNDksIDI0NSwgMC43NSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KICAgICAgICBodG1sIHsgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7IH0KICAgICAgICAKICAgICAgICBib2R5IHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdOdW5pdG8nLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1uYXZ5LWRlZXApOwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS44OwogICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogQU5JTUFURUQgQkFDS0dST1VORCAqLwogICAgICAgIC5iZy1tYXN0ZXIgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHRvcDogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IAogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMjAlIDEwJSwgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMDgpIDAlLCB0cmFuc3BhcmVudCA1MCUpLAogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgODAlIDMwJSwgcmdiYSgxODMsIDExMCwgMTIxLCAwLjA2KSAwJSwgdHJhbnNwYXJlbnQgNDAlKSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDUwJSA4MCUsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjA1KSAwJSwgdHJhbnNwYXJlbnQgNTAlKSwKICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLW5hdnktZGVlcCkgMCUsIHZhcigtLW5hdnkpIDUwJSwgdmFyKC0tbmF2eS1saWdodCkgMTAwJSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEZMT0FUSU5HIFNUQVJTICovCiAgICAgICAgLnN0YXJzLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CiAgICAgICAgLnN0YXIgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgIGFuaW1hdGlvbjogdHdpbmtsZSA0cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyB0d2lua2xlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7IH0KICAgICAgICAgICAgNTAlIHsgb3BhY2l0eTogMC44OyB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFNIT09USU5HIFNUQVJTICovCiAgICAgICAgLnNob290aW5nLXN0YXIgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHdpZHRoOiA0cHg7CiAgICAgICAgICAgIGhlaWdodDogNHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBib3gtc2hhZG93OiAKICAgICAgICAgICAgICAgIDAgMCAxMHB4IDJweCB2YXIoLS1nb2xkKSwKICAgICAgICAgICAgICAgIDAgMCAyMHB4IDRweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC41KTsKICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICAgIHotaW5kZXg6IDM7CiAgICAgICAgfQogICAgICAgIC5zaG9vdGluZy1zdGFyOjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgICAgIHdpZHRoOiA4MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1nb2xkKSwgdHJhbnNwYXJlbnQpOwogICAgICAgICAgICByaWdodDogNHB4OwogICAgICAgIH0KICAgICAgICAuc2hvb3Rpbmctc3Rhci5hY3RpdmUgewogICAgICAgICAgICBhbmltYXRpb246IHNob290aW5nU3RhciAxLjVzIGVhc2Utb3V0IGZvcndhcmRzOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHNob290aW5nU3RhciB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWSgwKSByb3RhdGUoLTQ1ZGVnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpIHRyYW5zbGF0ZVkoNDAwcHgpIHJvdGF0ZSgtNDVkZWcpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEZJUkVXT1JLUyAqLwogICAgICAgIC5maXJld29yayB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICAgIHotaW5kZXg6IDQ7CiAgICAgICAgfQogICAgICAgIC5maXJld29yay1wYXJ0aWNsZSB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgd2lkdGg6IDZweDsKICAgICAgICAgICAgaGVpZ2h0OiA2cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmaXJld29ya0J1cnN0IDFzIGVhc2Utb3V0IGZvcndhcmRzOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIGZpcmV3b3JrQnVyc3QgewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKSBzY2FsZSgxKTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS10eCksIHZhcigtLXR5KSkgc2NhbGUoMCk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIE5FT04gR0xPVyBRVU9URVMgKi8KICAgICAgICAucXVvdGUtaXRlbSB7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgNTBweDsKICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgb3BhY2l0eTogMC45OwogICAgICAgICAgICB0ZXh0LXNoYWRvdzogCiAgICAgICAgICAgICAgICAwIDAgMTBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC41KSwKICAgICAgICAgICAgICAgIDAgMCAyMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpLAogICAgICAgICAgICAgICAgMCAwIDMwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgICAgIGFuaW1hdGlvbjogbmVvblB1bHNlIDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KICAgICAgICAucXVvdGUtaXRlbTpudGgtY2hpbGQob2RkKSB7CiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogMS41czsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBuZW9uUHVsc2UgewogICAgICAgICAgICAwJSwgMTAwJSB7IAogICAgICAgICAgICAgICAgdGV4dC1zaGFkb3c6IAogICAgICAgICAgICAgICAgICAgIDAgMCAxMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjUpLAogICAgICAgICAgICAgICAgICAgIDAgMCAyMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIDUwJSB7IAogICAgICAgICAgICAgICAgdGV4dC1zaGFkb3c6IAogICAgICAgICAgICAgICAgICAgIDAgMCAxNXB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjgpLAogICAgICAgICAgICAgICAgICAgIDAgMCAzMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjUpLAogICAgICAgICAgICAgICAgICAgIDAgMCA0NXB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC5xdW90ZS1pdGVtIHNwYW4gewogICAgICAgICAgICBjb2xvcjogdmFyKC0tcm9zZSk7CiAgICAgICAgICAgIG1hcmdpbjogMCAxNXB4OwogICAgICAgICAgICBhbmltYXRpb246IGNvbG9yU2hpZnQgNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgY29sb3JTaGlmdCB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgY29sb3I6IHZhcigtLXJvc2UpOyB0ZXh0LXNoYWRvdzogMCAwIDEwcHggdmFyKC0tcm9zZSk7IH0KICAgICAgICAgICAgMzMlIHsgY29sb3I6IHZhcigtLWdvbGQpOyB0ZXh0LXNoYWRvdzogMCAwIDEwcHggdmFyKC0tZ29sZCk7IH0KICAgICAgICAgICAgNjYlIHsgY29sb3I6IHZhcigtLXJvc2UtbGlnaHQpOyB0ZXh0LXNoYWRvdzogMCAwIDEwcHggdmFyKC0tcm9zZS1saWdodCk7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogQk9UVE9NIFFVT1RFUyBORU9OICovCiAgICAgICAgLnF1b3RlLWl0ZW0tcm9zZSB7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgNTBweDsKICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1yb3NlKTsKICAgICAgICAgICAgb3BhY2l0eTogMC45OwogICAgICAgICAgICB0ZXh0LXNoYWRvdzogCiAgICAgICAgICAgICAgICAwIDAgMTBweCByZ2JhKDE4MywgMTEwLCAxMjEsIDAuNSksCiAgICAgICAgICAgICAgICAwIDAgMjBweCByZ2JhKDE4MywgMTEwLCAxMjEsIDAuMyk7CiAgICAgICAgICAgIGFuaW1hdGlvbjogbmVvblB1bHNlUm9zZSAzcyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBuZW9uUHVsc2VSb3NlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyAKICAgICAgICAgICAgICAgIHRleHQtc2hhZG93OiAKICAgICAgICAgICAgICAgICAgICAwIDAgMTBweCByZ2JhKDE4MywgMTEwLCAxMjEsIDAuNSksCiAgICAgICAgICAgICAgICAgICAgMCAwIDIwcHggcmdiYSgxODMsIDExMCwgMTIxLCAwLjMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIDUwJSB7IAogICAgICAgICAgICAgICAgdGV4dC1zaGFkb3c6IAogICAgICAgICAgICAgICAgICAgIDAgMCAxNXB4IHJnYmEoMTgzLCAxMTAsIDEyMSwgMC44KSwKICAgICAgICAgICAgICAgICAgICAwIDAgMzBweCByZ2JhKDE4MywgMTEwLCAxMjEsIDAuNSksCiAgICAgICAgICAgICAgICAgICAgMCAwIDQ1cHggcmdiYSgxODMsIDExMCwgMTIxLCAwLjMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIENPTE9SLUNIQU5HSU5HIEhFUk8gVEVYVCAqLwogICAgICAgIC5oZXJvLXF1ZXN0aW9uIC5saW5lMiB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tcm9zZSksIHZhcigtLWdvbGQtbGlnaHQpLCB2YXIoLS1yb3NlLWxpZ2h0KSwgdmFyKC0tZ29sZCkpOwogICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDQwMCUgYXV0bzsKICAgICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBzaGltbWVyUmFpbmJvdyA2cyBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgc2hpbW1lclJhaW5ib3cgewogICAgICAgICAgICAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAlIGNlbnRlcjsgfQogICAgICAgICAgICAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogNDAwJSBjZW50ZXI7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogU0xPVCBNQUNISU5FIEdMT1cgKi8KICAgICAgICAuc2xvdC1tYWNoaW5lIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgwLDAsMCwwLjUpLCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4wNSkpOwogICAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweDsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAzMHB4OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIGJveC1zaGFkb3c6IAogICAgICAgICAgICAgICAgMCAwIDYwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMiksCiAgICAgICAgICAgICAgICBpbnNldCAwIDAgNDBweCByZ2JhKDAsMCwwLDAuMyk7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc2xvdEdsb3cgNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUsIGJvcmRlckNvbG9yU2hpZnQgNnMgbGluZWFyIGluZmluaXRlOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tbmF2eS1kZWVwKSwgdmFyKC0tbmF2eS1kZWVwKSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1yb3NlKSwgdmFyKC0tZ29sZC1saWdodCksIHZhcigtLXJvc2UtbGlnaHQpLCB2YXIoLS1nb2xkKSk7CiAgICAgICAgICAgIGJhY2tncm91bmQtb3JpZ2luOiBib3JkZXItYm94OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94LCBib3JkZXItYm94OwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHNsb3RHbG93IHsKICAgICAgICAgICAgMCUsIDEwMCUgewogICAgICAgICAgICAgICAgYm94LXNoYWRvdzogCiAgICAgICAgICAgICAgICAgICAgMCAwIDYwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMiksCiAgICAgICAgICAgICAgICAgICAgaW5zZXQgMCAwIDQwcHggcmdiYSgwLDAsMCwwLjMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAKICAgICAgICAgICAgICAgICAgICAwIDAgODBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC40KSwKICAgICAgICAgICAgICAgICAgICAwIDAgMTIwcHggcmdiYSgxODMsIDExMCwgMTIxLCAwLjIpLAogICAgICAgICAgICAgICAgICAgIGluc2V0IDAgMCA0MHB4IHJnYmEoMCwwLDAsMC4zKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBDT0xPUi1DSEFOR0lORyBTUElOIEJVVFRPTiAqLwogICAgICAgIC5zcGluLWJ0biB7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggNjBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWdvbGQtZGFyayksIHZhcigtLXJvc2UpLCB2YXIoLS1nb2xkKSk7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMzAwJSAxMDAlOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmF2eS1kZWVwKTsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDaW56ZWwnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAzcHg7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggNDBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC40KTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBidXR0b25TaGltbWVyIDRzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIGJ1dHRvblNoaW1tZXIgewogICAgICAgICAgICAwJSwgMTAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAlIGNlbnRlcjsgfQogICAgICAgICAgICA1MCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIGNlbnRlcjsgfQogICAgICAgIH0KICAgICAgICAuc3Bpbi1idG46aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IAogICAgICAgICAgICAgICAgMCAyMHB4IDYwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuNSksCiAgICAgICAgICAgICAgICAwIDAgMzBweCByZ2JhKDE4MywgMTEwLCAxMjEsIDAuMyk7CiAgICAgICAgfQogICAgICAgIC5zcGluLWJ0bjpkaXNhYmxlZCB7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICAgICAgICBhbmltYXRpb246IG5vbmU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFNQQVJLTEUgQ1VSU09SIFRSQUlMICovCiAgICAgICAgLnNwYXJrbGUgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgICAgICB6LWluZGV4OiA5OTk4OwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGFuaW1hdGlvbjogc3BhcmtsZUZsb2F0IDFzIGVhc2Utb3V0IGZvcndhcmRzOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHNwYXJrbGVGbG9hdCB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSkgcm90YXRlKDBkZWcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzBweCkgc2NhbGUoMCkgcm90YXRlKDE4MGRlZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogRkxPQVRJTkcgT1JCUyAqLwogICAgICAgIC5vcmIgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgZmlsdGVyOiBibHVyKDgwcHgpOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmbG9hdE9yYiAyMHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIC5vcmItMSB7IHdpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweDsgYmFja2dyb3VuZDogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7IHRvcDogMTAlOyBsZWZ0OiAtNSU7IH0KICAgICAgICAub3JiLTIgeyB3aWR0aDogMjUwcHg7IGhlaWdodDogMjUwcHg7IGJhY2tncm91bmQ6IHJnYmEoMTgzLCAxMTAsIDEyMSwgMC4wOCk7IGJvdHRvbTogMjAlOyByaWdodDogLTUlOyBhbmltYXRpb24tZGVsYXk6IDdzOyB9CiAgICAgICAgLm9yYi0zIHsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4wNik7IHRvcDogNjAlOyBsZWZ0OiAzMCU7IGFuaW1hdGlvbi1kZWxheTogMTRzOyB9CiAgICAgICAgQGtleWZyYW1lcyBmbG9hdE9yYiB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCkgc2NhbGUoMSk7IH0KICAgICAgICAgICAgMzMlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMzBweCwgLTIwcHgpIHNjYWxlKDEuMDUpOyB9CiAgICAgICAgICAgIDY2JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC0yMHB4LCAyMHB4KSBzY2FsZSgwLjk1KTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29udGVudC13cmFwcGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFNDUk9MTElORyBRVU9URVMgQkFOTkVSICovCiAgICAgICAgLnF1b3Rlcy1iYW5uZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLW5hdnktZGVlcCksIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpLCB2YXIoLS1uYXZ5LWRlZXApKTsKICAgICAgICAgICAgcGFkZGluZzogMTJweCAwOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgfQogICAgICAgIC5xdW90ZXMtdHJhY2sgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbmltYXRpb246IHNjcm9sbFF1b3RlcyA2MHMgbGluZWFyIGluZmluaXRlOwogICAgICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7CiAgICAgICAgfQogICAgICAgIC5xdW90ZXMtdHJhY2s6aG92ZXIgewogICAgICAgICAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHNjcm9sbFF1b3RlcyB7CiAgICAgICAgICAgIDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyB9CiAgICAgICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7IH0KICAgICAgICB9CiAgICAgICAgLnF1b3RlLWl0ZW0gewogICAgICAgICAgICBwYWRkaW5nOiAwIDUwcHg7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgICB9CiAgICAgICAgLnF1b3RlLWl0ZW0gc3BhbiB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1yb3NlKTsKICAgICAgICAgICAgbWFyZ2luOiAwIDE1cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEhFUk8gU0VDVElPTiAqLwogICAgICAgIC5oZXJvIHsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiA2MHB4IDI1cHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm15c3RlcnktYmFkZ2UgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMzBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMTUpLCByZ2JhKDAsMCwwLDAuMykpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDaW56ZWwnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogNHB4OwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5oZXJvLXF1ZXN0aW9uIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMi41cmVtLCA4dncsIDQuNXJlbSk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgICAgICAgIG1heC13aWR0aDogOTAwcHg7CiAgICAgICAgfQogICAgICAgIC5oZXJvLXF1ZXN0aW9uIC5saW5lMSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgIH0KICAgICAgICAuaGVyby1xdWVzdGlvbiAubGluZTIgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLXJvc2UpLCB2YXIoLS1nb2xkKSk7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSBhdXRvOwogICAgICAgICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgICAgICAgICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgICAgICBhbmltYXRpb246IHNoaW1tZXIgNXMgbGluZWFyIGluZmluaXRlOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHNoaW1tZXIgewogICAgICAgICAgICAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAlIGNlbnRlcjsgfQogICAgICAgICAgICAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMjAwJSBjZW50ZXI7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmhlcm8tc3VidGV4dCB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIG1heC13aWR0aDogNjAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDUwcHg7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuOTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogVEhFIExPVFRFUlkgTUFDSElORSAqLwogICAgICAgIC5sb3R0ZXJ5LXNlY3Rpb24gewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA5MDBweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNTBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmxvdHRlcnktaW5zdHJ1Y3Rpb24gewogICAgICAgICAgICBmb250LWZhbWlseTogJ0NpbnplbCcsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDNweDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc2xvdC1tYWNoaW5lIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgwLDAsMCwwLjUpLCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4wNSkpOwogICAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweDsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAzMHB4OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIGJveC1zaGFkb3c6IAogICAgICAgICAgICAgICAgMCAwIDYwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMiksCiAgICAgICAgICAgICAgICBpbnNldCAwIDAgNDBweCByZ2JhKDAsMCwwLDAuMyk7CiAgICAgICAgfQogICAgICAgIC5zbG90LW1hY2hpbmU6OmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogLTUwJTsKICAgICAgICAgICAgbGVmdDogLTUwJTsKICAgICAgICAgICAgd2lkdGg6IDIwMCU7CiAgICAgICAgICAgIGhlaWdodDogMjAwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCB0cmFuc3BhcmVudCA0MCUsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjAzKSA1MCUsIHRyYW5zcGFyZW50IDYwJSk7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc2hpbmUgOHMgbGluZWFyIGluZmluaXRlOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHNoaW5lIHsKICAgICAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpIHJvdGF0ZSg0NWRlZyk7IH0KICAgICAgICAgICAgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKSByb3RhdGUoNDVkZWcpOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zbG90LXdpbmRvdyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5hdnktZGVlcCk7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgICAgICAgICBtaW4taGVpZ2h0OiAxODBweDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnNsb3QtZGlzcGxheSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgLnNsb3QtZW1vamkgewogICAgICAgICAgICBmb250LXNpemU6IDRyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgICAgIGFuaW1hdGlvbjogcHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgcHVsc2UgewogICAgICAgICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH0KICAgICAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOyB9CiAgICAgICAgfQogICAgICAgIC5zbG90LXRleHQgewogICAgICAgICAgICBmb250LWZhbWlseTogJ0NpbnplbCcsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuOHJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgIH0KICAgICAgICAuc2xvdC1xdW90ZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeS1tdXRlZCk7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICAgICAgICAgIG1heC13aWR0aDogNTAwcHg7CiAgICAgICAgfQogICAgICAgIC5zbG90LXF1ZXN0aW9uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tcm9zZSk7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFNQSU5OSU5HIFNUQVRFICovCiAgICAgICAgLnNsb3QtZGlzcGxheS5zcGlubmluZyAuc2xvdC1lbW9qaSB7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc3BpbkVtb2ppIDAuMTVzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgLnNsb3QtZGlzcGxheS5zcGlubmluZyAuc2xvdC10ZXh0IHsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmbGlja2VyVGV4dCAwLjFzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBzcGluRW1vamkgewogICAgICAgICAgICAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7IG9wYWNpdHk6IDA7IH0KICAgICAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyBvcGFjaXR5OiAxOyB9CiAgICAgICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7IG9wYWNpdHk6IDA7IH0KICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBmbGlja2VyVGV4dCB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgb3BhY2l0eTogMTsgfQogICAgICAgICAgICA1MCUgeyBvcGFjaXR5OiAwLjM7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogSSBBTSBCVVRUT05TICovCiAgICAgICAgLmlhbS1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogNDBweDsKICAgICAgICB9CiAgICAgICAgLmlhbS10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeS1tdXRlZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5pYW0tZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICB9CiAgICAgICAgLmlhbS1idG4gewogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDI1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4zKTsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeS1tdXRlZCk7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTnVuaXRvJywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KICAgICAgICAuaWFtLWJ0bjo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOyBsZWZ0OiAtMTAwJTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMiksIHRyYW5zcGFyZW50KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogbGVmdCAwLjVzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5pYW0tYnRuOmhvdmVyOjpiZWZvcmUgewogICAgICAgICAgICBsZWZ0OiAxMDAlOwogICAgICAgIH0KICAgICAgICAuaWFtLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogCiAgICAgICAgICAgICAgICAwIDVweCAyMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpLAogICAgICAgICAgICAgICAgMCAwIDE1cHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgICAgIHRleHQtc2hhZG93OiAwIDAgMTBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC41KTsKICAgICAgICB9CiAgICAgICAgLmlhbS1idG4uYWN0aXZlIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMiksIHJnYmEoMTgzLCAxMTAsIDEyMSwgMC4xKSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogCiAgICAgICAgICAgICAgICAwIDAgMjBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC40KSwKICAgICAgICAgICAgICAgIGluc2V0IDAgMCAyMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOwogICAgICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDEwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuNSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFZJREVPIElOVFJPIFNFQ1RJT04gKi8KICAgICAgICAudmlkZW8tc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDgwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDYwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogNjBweCAzMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4wMykgMCUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgxODMsIDExMCwgMTIxLCAwLjAzKSAxMDAlKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNDBweDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KICAgICAgICAudmlkZW8tYmFkZ2UgewogICAgICAgICAgICBmb250LWZhbWlseTogJ0NpbnplbCcsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiA0cHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1yb3NlKTsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CiAgICAgICAgLnZpZGVvLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS41cmVtLCA0dncsIDIuMnJlbSk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgfQogICAgICAgIC52aWRlby1zdWJ0aXRsZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeS1zb2Z0KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDsKICAgICAgICB9CiAgICAgICAgLnZpZGVvLWNvbnRhaW5lciB7CiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDQwcHg7CiAgICAgICAgfQogICAgICAgIC52aWRlby1wbGFjZWhvbGRlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgYXNwZWN0LXJhdGlvOiAxNi85OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCByZ2JhKDAsMCwwLDAuNiksIHJnYmEoMjIsIDMzLCA2MiwgMC44KSk7CiAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgwLDAsMCwwLjYpLCByZ2JhKDIyLCAzMywgNjIsIDAuOCkpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tcm9zZSksIHZhcigtLWdvbGQtbGlnaHQpLCB2YXIoLS1yb3NlLWxpZ2h0KSwgdmFyKC0tZ29sZCkpOwogICAgICAgICAgICBiYWNrZ3JvdW5kLW9yaWdpbjogYm9yZGVyLWJveDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveCwgYm9yZGVyLWJveDsKICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCUsIDQwMCUgMTAwJTsKICAgICAgICAgICAgYW5pbWF0aW9uOiB2aWRlb0dsb3cgNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUsIHZpZGVvQm9yZGVyU2hpbW1lciA2cyBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC52aWRlby1wbGFjZWhvbGRlcjpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMik7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMzBweCA4MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpLCAwIDAgNjBweCByZ2JhKDE4MywgMTEwLCAxMjEsIDAuMik7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgdmlkZW9HbG93IHsKICAgICAgICAgICAgMCUsIDEwMCUgeyBib3gtc2hhZG93OiAwIDIwcHggNjBweCByZ2JhKDAsMCwwLDAuNCksIDAgMCAzMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOyB9CiAgICAgICAgICAgIDUwJSB7IGJveC1zaGFkb3c6IDAgMjBweCA2MHB4IHJnYmEoMCwwLDAsMC40KSwgMCAwIDUwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMiksIDAgMCA4MHB4IHJnYmEoMTgzLCAxMTAsIDEyMSwgMC4xKTsgfQogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHZpZGVvQm9yZGVyU2hpbW1lciB7CiAgICAgICAgICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxMDAlLCAwJSBjZW50ZXI7IH0KICAgICAgICAgICAgMTAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgMTAwJSwgNDAwJSBjZW50ZXI7IH0KICAgICAgICB9CiAgICAgICAgLnBsYXktYnRuLXdyYXBwZXIgewogICAgICAgICAgICB3aWR0aDogOTBweDsKICAgICAgICAgICAgaGVpZ2h0OiA5MHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1nb2xkLWRhcmspKTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCA0MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjUpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBhbmltYXRpb246IHBsYXlQdWxzZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBwbGF5UHVsc2UgewogICAgICAgICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IGJveC1zaGFkb3c6IDAgMTBweCA0MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjUpOyB9CiAgICAgICAgICAgIDUwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7IGJveC1zaGFkb3c6IDAgMTVweCA1MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjcpLCAwIDAgMzBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTsgfQogICAgICAgIH0KICAgICAgICAudmlkZW8tcGxhY2Vob2xkZXI6aG92ZXIgLnBsYXktYnRuLXdyYXBwZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTVweCA1MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjcpOwogICAgICAgIH0KICAgICAgICAucGxheS1idG4gewogICAgICAgICAgICBmb250LXNpemU6IDJyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5LWRlZXApOwogICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgICAgIH0KICAgICAgICAudmlkZW8tZHVyYXRpb24gewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGJvdHRvbTogMTVweDsKICAgICAgICAgICAgcmlnaHQ6IDIwcHg7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTnVuaXRvJywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuNik7CiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMnB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgIH0KICAgICAgICAudmlkZW8tY2FwdGlvbiB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgYm90dG9tOiAxNXB4OwogICAgICAgICAgICBsZWZ0OiAyMHB4OwogICAgICAgICAgICBmb250LWZhbWlseTogJ0Nvcm1vcmFudCBHYXJhbW9uZCcsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgIH0KICAgICAgICAudmlkZW8tcXVvdGUgewogICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgcGFkZGluZzogMzBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjIpOwogICAgICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLWdvbGQpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwIDE1cHggMTVweCAwOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIH0KICAgICAgICAudmlkZW8tcXVvdGUgcCB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeSk7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQogICAgICAgIC52aWRlby1hdXRob3IgewogICAgICAgICAgICBmb250LWZhbWlseTogJ0NpbnplbCcsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBFTlRFUiAyMDI2IENUQSAqLwogICAgICAgIC5lbnRlci1jdGEgewogICAgICAgICAgICBtYXJnaW4tdG9wOiA1MHB4OwogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjhzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5lbnRlci1jdGEudmlzaWJsZSB7CiAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgICAgLmVudGVyLWJ0biB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgcGFkZGluZzogMjJweCA2MHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1yb3NlKSwgdmFyKC0tcm9zZS1kYXJrKSk7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDaW56ZWwnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAzcHg7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxNXB4IDUwcHggcmdiYSgxODMsIDExMCwgMTIxLCAwLjQpOwogICAgICAgIH0KICAgICAgICAuZW50ZXItYnRuOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpIHNjYWxlKDEuMDIpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDI1cHggNzBweCByZ2JhKDE4MywgMTEwLCAxMjEsIDAuNSk7CiAgICAgICAgfQogICAgICAgIC5lbnRlci1zdWJ0ZXh0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeS1zb2Z0KTsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMTVweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogRVhJVCBCVVRUT05TICovCiAgICAgICAgLmV4aXQtYnRuIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjMpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE4MywgMTEwLCAxMjEsIDAuMyk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdm9yeS1zb2Z0KTsKICAgICAgICAgICAgcGFkZGluZzogMTBweCAxOHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICAgICAgICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAuZXhpdC1idG46aG92ZXIgewogICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXJvc2UpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tcm9zZSk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTgzLCAxMTAsIDEyMSwgMC4xKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBQT1BVUCBTVFlMRVMgKi8KICAgICAgICAjc3BpbkxpbWl0UG9wdXAgewogICAgICAgICAgICBhbmltYXRpb246IGZhZGVJbiAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgZmFkZUluIHsKICAgICAgICAgICAgZnJvbSB7IG9wYWNpdHk6IDA7IH0KICAgICAgICAgICAgdG8geyBvcGFjaXR5OiAxOyB9CiAgICAgICAgfQogICAgICAgICNzcGluTGltaXRQb3B1cCA+IGRpdiB7CiAgICAgICAgICAgIGFuaW1hdGlvbjogcG9wSW4gMC40cyBlYXNlOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIHBvcEluIHsKICAgICAgICAgICAgZnJvbSB7IHRyYW5zZm9ybTogc2NhbGUoMC44KTsgb3BhY2l0eTogMDsgfQogICAgICAgICAgICB0byB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IG9wYWNpdHk6IDE7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogTUVOJ1MgQlVUVE9OICovCiAgICAgICAgLm1lbnMtYnRuIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyMiwgMzMsIDYyLCAwLjgpLCByZ2JhKDAsMCwwLDAuNCkpOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC40KTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgcGFkZGluZzogMjBweCAzMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA2MDBweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgICAgICAubWVucy1idG46aG92ZXIgewogICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xNSksIHJnYmEoMCwwLDAsMC41KSk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEJPVFRPTSBRVU9URVMgQkFOTkVSICovCiAgICAgICAgLnF1b3Rlcy1iYW5uZXItYm90dG9tIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1uYXZ5LWRlZXApLCByZ2JhKDE4MywgMTEwLCAxMjEsIDAuMSksIHZhcigtLW5hdnktZGVlcCkpOwogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDA7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDE4MywgMTEwLCAxMjEsIDAuMik7CiAgICAgICAgfQogICAgICAgIC5xdW90ZXMtdHJhY2stcmV2ZXJzZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc2Nyb2xsUXVvdGVzUmV2ZXJzZSA1MHMgbGluZWFyIGluZmluaXRlOwogICAgICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgc2Nyb2xsUXVvdGVzUmV2ZXJzZSB7CiAgICAgICAgICAgIDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOyB9CiAgICAgICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IH0KICAgICAgICB9CiAgICAgICAgLnF1b3RlLWl0ZW0tcm9zZSB7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgNTBweDsKICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1yb3NlKTsKICAgICAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBGT09URVIgKi8KICAgICAgICBmb290ZXIgewogICAgICAgICAgICBwYWRkaW5nOiA0MHB4IDI1cHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOwogICAgICAgIH0KICAgICAgICAuZm9vdGVyLWJyYW5kIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDaW56ZWwnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogM3B4OwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuNjsKICAgICAgICB9CiAgICAgICAgLmZvb3Rlci10YWdsaW5lIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5LW11dGVkKTsKICAgICAgICAgICAgb3BhY2l0eTogMC40OwogICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFJFU1BPTlNJVkUgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgYm9keSB7IGZvbnQtc2l6ZTogMTdweDsgfQogICAgICAgICAgICAuc2xvdC1tYWNoaW5lIHsgcGFkZGluZzogMzBweCAyMHB4OyB9CiAgICAgICAgICAgIC5zbG90LWVtb2ppIHsgZm9udC1zaXplOiAzLjVyZW07IH0KICAgICAgICAgICAgLnNsb3QtdGV4dCB7IGZvbnQtc2l6ZTogMS41cmVtOyB9CiAgICAgICAgICAgIC5zbG90LXF1b3RlIHsgZm9udC1zaXplOiAxLjA1cmVtOyBjb2xvcjogdmFyKC0taXZvcnkpOyB9CiAgICAgICAgICAgIC5zbG90LXF1ZXN0aW9uIHsgZm9udC1zaXplOiAxcmVtOyB9CiAgICAgICAgICAgIC5pYW0tYnRuIHsgcGFkZGluZzogMTJweCAxOHB4OyBmb250LXNpemU6IDAuOXJlbTsgfQogICAgICAgICAgICAuaGVyby1zdWJ0ZXh0IHsgZm9udC1zaXplOiAxLjJyZW07IGNvbG9yOiB2YXIoLS1pdm9yeSk7IH0KICAgICAgICAgICAgLnF1b3RlLWl0ZW0geyBmb250LXNpemU6IDEuMDVyZW07IGNvbG9yOiB2YXIoLS1nb2xkLWxpZ2h0KTsgfQogICAgICAgICAgICAucXVvdGUtaXRlbS1yb3NlIHsgZm9udC1zaXplOiAxLjA1cmVtOyBjb2xvcjogdmFyKC0tcm9zZS1saWdodCk7IH0KICAgICAgICAgICAgLmZvb3Rlci10YWdsaW5lIHsgZm9udC1zaXplOiAxcmVtOyBjb2xvcjogdmFyKC0taXZvcnktc29mdCk7IH0KICAgICAgICAgICAgLmlhbS10aXRsZSB7IGZvbnQtc2l6ZTogMS4xcmVtOyBjb2xvcjogdmFyKC0taXZvcnkpOyB9CiAgICAgICAgICAgIC5sb3R0ZXJ5LWluc3RydWN0aW9uIHsgZm9udC1zaXplOiAwLjk1cmVtOyB9CiAgICAgICAgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICAgIDxkaXYgY2xhc3M9ImJnLW1hc3RlciI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJvcmIgb3JiLTEiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ib3JiIG9yYi0yIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im9yYiBvcmItMyI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJzdGFycy1jb250YWluZXIiIGlkPSJzdGFycyI+PC9kaXY+CiAgICAKICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQtd3JhcHBlciI+CiAgICAgICAgPCEtLSBTQ1JPTExJTkcgUVVPVEVTIFRPUCAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJxdW90ZXMtYmFubmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icXVvdGVzLXRyYWNrIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtIj5TaGUgYmVsaWV2ZWQgc2hlIGNvdWxkLCBzbyBzaGUgZGlkIDxzcGFuPuKcpjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icXVvdGUtaXRlbSI+Rm9ydHVuZSBmYXZvcnMgdGhlIGJvbGQgPHNwYW4+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtIj5Zb3VyIG5leHQgY2hhcHRlciBpcyB3YWl0aW5nIHRvIGJlIHdyaXR0ZW4gPHNwYW4+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtIj5Tb3ZlcmVpZ250eSBiZWdpbnMgd2l0aCBhIHNpbmdsZSBkZWNpc2lvbiA8c3Bhbj7inKY8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InF1b3RlLWl0ZW0iPlRoZSB1bml2ZXJzZSByZXdhcmRzIHRob3NlIHdobyBzaG93IHVwIDxzcGFuPuKcpjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icXVvdGUtaXRlbSI+WW91ciBsZWdhY3kgaXMgY2FsbGluZyB+IHdpbGwgeW91IGFuc3dlcj8gPHNwYW4+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtIj5BdWRhY2l0eSBpcyB0aGUgY3VycmVuY3kgb2YgcXVlZW5zIDxzcGFuPuKcpjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icXVvdGUtaXRlbSI+MjAyNiBiZWxvbmdzIHRvIHRoZSBpbnRlbnRpb25hbCA8c3Bhbj7inKY8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InF1b3RlLWl0ZW0iPkkgY2FtZS4gS2VwdCBjYWxtLiBDYXJyaWVkIG9uLiBOb3cgd2hhdD8gPHNwYW4+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwhLS0gRHVwbGljYXRlIGZvciBzZWFtbGVzcyBsb29wIC0tPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InF1b3RlLWl0ZW0iPlNoZSBiZWxpZXZlZCBzaGUgY291bGQsIHNvIHNoZSBkaWQgPHNwYW4+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtIj5Gb3J0dW5lIGZhdm9ycyB0aGUgYm9sZCA8c3Bhbj7inKY8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InF1b3RlLWl0ZW0iPllvdXIgbmV4dCBjaGFwdGVyIGlzIHdhaXRpbmcgdG8gYmUgd3JpdHRlbiA8c3Bhbj7inKY8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InF1b3RlLWl0ZW0iPlNvdmVyZWlnbnR5IGJlZ2lucyB3aXRoIGEgc2luZ2xlIGRlY2lzaW9uIDxzcGFuPuKcpjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icXVvdGUtaXRlbSI+VGhlIHVuaXZlcnNlIHJld2FyZHMgdGhvc2Ugd2hvIHNob3cgdXAgPHNwYW4+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtIj5Zb3VyIGxlZ2FjeSBpcyBjYWxsaW5nIH4gd2lsbCB5b3UgYW5zd2VyPyA8c3Bhbj7inKY8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InF1b3RlLWl0ZW0iPkF1ZGFjaXR5IGlzIHRoZSBjdXJyZW5jeSBvZiBxdWVlbnMgPHNwYW4+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtIj4yMDI2IGJlbG9uZ3MgdG8gdGhlIGludGVudGlvbmFsIDxzcGFuPuKcpjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icXVvdGUtaXRlbSI+SSBjYW1lLiBLZXB0IGNhbG0uIENhcnJpZWQgb24uIE5vdyB3aGF0PyA8c3Bhbj7inKY8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8IS0tIEhFUk8gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9Imhlcm8iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJteXN0ZXJ5LWJhZGdlIj7inKYgTW9tZW50dW0gQXdhaXRzIOKcpjwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPGgxIGNsYXNzPSJoZXJvLXF1ZXN0aW9uIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lMSI+VGhlIHF1ZXN0aW9uIGlzbid0IHdoYXQncyBjb21pbmcuLi48L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZTIiPkl0J3MgV0hPIHlvdSdsbCBiZWNvbWUuPC9zcGFuPgogICAgICAgICAgICA8L2gxPgogICAgICAgICAgICAKICAgICAgICAgICAgPHAgY2xhc3M9Imhlcm8tc3VidGV4dCI+CiAgICAgICAgICAgICAgICAyMDI2IGlzIG5vdCBqdXN0IGEgeWVhci4gSXQncyBhIHBvcnRhbC4gQSB0aHJlc2hvbGQuIEFuIGludml0YXRpb24uCiAgICAgICAgICAgICAgICA8YnI+QnV0IGZpcnN0IH4gdGVsbCB0aGUgdW5pdmVyc2Ugd2hvIHlvdSBhcmUuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gVEhFIExPVFRFUlkgTUFDSElORSAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG90dGVyeS1zZWN0aW9uIj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJsb3R0ZXJ5LWluc3RydWN0aW9uIj7inKYgU3BpbiB0byBEaXNjb3ZlciBZb3VyIEVuZXJneSDinKY8L3A+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsb3QtbWFjaGluZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xvdC13aW5kb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbG90LWRpc3BsYXkiIGlkPSJzbG90RGlzcGxheSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbG90LWVtb2ppIiBpZD0ic2xvdEVtb2ppIj7inKg8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsb3QtdGV4dCIgaWQ9InNsb3RUZXh0Ij5JIEFNLi4uPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbG90LXF1b3RlIiBpZD0ic2xvdFF1b3RlIj5TcGluIHRvIHJldmVhbCB5b3VyIDIwMjYgZW5lcmd5PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbG90LXF1ZXN0aW9uIiBpZD0ic2xvdFF1ZXN0aW9uIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic3Bpbi1idG4iIGlkPSJzcGluQnRuIiBvbmNsaWNrPSJzcGluU2xvdCgpIj4KICAgICAgICAgICAgICAgICAgICAgICAg4pymIFNwaW4gdGhlIFdoZWVsIOKcpgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwhLS0gT1IgQ0hPT1NFIFlPVVIgRU5FUkdZIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWFtLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJpYW0tdGl0bGUiPn4gb3IgY2hvb3NlIHlvdXIgZW5lcmd5IGRpcmVjdGx5IH48L3A+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWFtLWdyaWQiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJpYW0tYnRuIiBvbmNsaWNrPSJzZWxlY3RFbmVyZ3koMCkiPvCflK4gSSBBbSBDdXJpb3VzPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImlhbS1idG4iIG9uY2xpY2s9InNlbGVjdEVuZXJneSgxKSI+8J+RkSBJIEFtIFNlcmlvdXM8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaWFtLWJ0biIgb25jbGljaz0ic2VsZWN0RW5lcmd5KDIpIj7wn5uh77iPIEkgQW0gQ2F1dGlvdXM8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaWFtLWJ0biIgb25jbGljaz0ic2VsZWN0RW5lcmd5KDMpIj7wn5SlIEkgQW0gQXVkYWNpb3VzPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImlhbS1idG4iIG9uY2xpY2s9InNlbGVjdEVuZXJneSg0KSI+8J+SsCBJIEFtIFByb3NwZXJvdXM8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaWFtLWJ0biIgb25jbGljaz0ic2VsZWN0RW5lcmd5KDUpIj7wn5qAIEkgQW0gQW1iaXRpb3VzPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImlhbS1idG4iIG9uY2xpY2s9InNlbGVjdEVuZXJneSg2KSI+8J+SlSBJIEFtIEdlbmVyb3VzPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImlhbS1idG4iIG9uY2xpY2s9InNlbGVjdEVuZXJneSg3KSI+8J+mgSBJIEFtIFRlbmFjaW91czwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJpYW0tYnRuIiBvbmNsaWNrPSJzZWxlY3RFbmVyZ3koOCkiPvCfp60gSSBBbSBBZHZlbnR1cm91czwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBWSURFTyBJTlRSTyBTRUNUSU9OIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2aWRlby1zZWN0aW9uIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZpZGVvLWJhZGdlIj7inKYgQSBNZXNzYWdlIEZvciBZb3Ug4pymPC9kaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InZpZGVvLXRpdGxlIj5CZWZvcmUgWW91IFN0ZXAgSW50byAyMDI2Li4uPC9oMj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ2aWRlby1zdWJ0aXRsZSI+TGV0IG1lIHRlbGwgeW91IHdoYXQncyByZWFsbHkgd2FpdGluZyBvbiB0aGUgb3RoZXIgc2lkZTwvcD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmlkZW8tY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2aWRlby1wbGFjZWhvbGRlciIgaWQ9InZpZGVvUGxheSIgb25jbGljaz0icGxheVZpZGVvKHRoaXMpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxheS1idG4td3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGF5LWJ0biI+4pa2PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idmlkZW8tZHVyYXRpb24iPjI6NDc8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ2aWRlby1jYXB0aW9uIj4iVGhlIFNvdmVyZWlnbiBNb21lbnR1bSBNYW5pZmVzdG8iPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxwIGlkPSJ2aWRlb01lc3NhZ2UiIHN0eWxlPSJkaXNwbGF5OiBub25lOyBtYXJnaW4tdG9wOiAyMHB4OyBmb250LWZhbWlseTogJ0Nvcm1vcmFudCBHYXJhbW9uZCcsIHNlcmlmOyBmb250LXNpemU6IDEuMXJlbTsgZm9udC1zdHlsZTogaXRhbGljOyBjb2xvcjogdmFyKC0tcm9zZSk7Ij7inKggVmlkZW8gbGF1bmNoaW5nIEphbnVhcnkgMjAyNiB+IEJ1dCB5b3VyIG1vbWVudHVtIHN0YXJ0cyBOT1chIOKcqDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2aWRlby1xdW90ZSI+CiAgICAgICAgICAgICAgICAgICAgPHA+IlRoaXMgaXNuJ3QganVzdCBhbm90aGVyIHllYXIuIFRoaXMgaXMgdGhlIHllYXIgeW91IHN0b3AgcmVudGluZyBzcGFjZSBpbiBzb21lb25lIGVsc2UncyBhbGdvcml0aG0gYW5kIHN0YXJ0IG93bmluZyB5b3VyIGRpZ2l0YWwgbGFuZC4iPC9wPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aWRlby1hdXRob3IiPn4gTmlnaHRpbmdhbGUgTXVrYXNhLCBUaGUgU0hFIEV+Qm9zcyBTb2x1dGlvbmlzdDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gRU5URVIgMjAyNiBDVEEgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVudGVyLWN0YSIgaWQ9ImVudGVyQ3RhIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vc2hlZWJvc3MuYnJhbmRoYW5kc2hha2UuY29tLzIwMjZwYXNzaW9uIiBjbGFzcz0iZW50ZXItYnRuIj4KICAgICAgICAgICAgICAgICAgICDinKYgRW50ZXIgMjAyNiDinKYKICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJlbnRlci1zdWJ0ZXh0Ij5Zb3VyIHBhdGh3YXkgYXdhaXRzIG9uIHRoZSBvdGhlciBzaWRlPC9wPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8IS0tIEZVTiBFWElUUyAtLT4KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDQwcHg7IHBhZGRpbmctdG9wOiAzMHB4OyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7Ij4KICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsgZm9udC1zaXplOiAxcmVtOyBmb250LXN0eWxlOiBpdGFsaWM7IGNvbG9yOiB2YXIoLS1pdm9yeS1zb2Z0KTsgbWFyZ2luLWJvdHRvbTogMjBweDsiPn4gb3IgaWYgeW91J3JlIG5vdCBxdWl0ZSByZWFkeSB+PC9wPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogMTJweDsiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJleGl0LWJ0biIgb25jbGljaz0ic2hvd0V4aXRNZXNzYWdlKCdyZXR1cm4yMDI1JykiPvCflbDvuI8gUmV0dXJuIHRvIDIwMjU8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZXhpdC1idG4iIG9uY2xpY2s9InNob3dFeGl0TWVzc2FnZSgnc2tpcDIwMjcnKSI+4o+t77iPIFNraXAgdG8gMjAyNzwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJleGl0LWJ0biIgb25jbGljaz0ic2hvd0V4aXRNZXNzYWdlKCdjb3VjaCcpIj7wn5uL77iPIFdhdGNoIGZyb20gdGhlIGNvdWNoPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImV4aXQtYnRuIiBvbmNsaWNrPSJzaG93RXhpdE1lc3NhZ2UoJ3J1bmF3YXknKSI+8J+Pg+KAjeKZgO+4jyBSdW4gYXdheSBkcmFtYXRpY2FsbHk8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZXhpdC1idG4iIG9uY2xpY2s9InNob3dFeGl0TWVzc2FnZSgncHJldGVuZCcpIj7wn5GAIEkgd2FzIG5ldmVyIGhlcmU8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8IS0tIEV4aXQgTWVzc2FnZSBEaXNwbGF5IC0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImV4aXRNZXNzYWdlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgbWFyZ2luLXRvcDogMjVweDsgcGFkZGluZzogMjVweDsgYmFja2dyb3VuZDogcmdiYSgxODMsIDExMCwgMTIxLCAwLjE1KTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcm9zZSk7IGJvcmRlci1yYWRpdXM6IDIwcHg7IG1heC13aWR0aDogNTAwcHg7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9ImV4aXRNZXNzYWdlVGV4dCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7IGZvbnQtc2l6ZTogMS4xNXJlbTsgZm9udC1zdHlsZTogaXRhbGljOyBjb2xvcjogdmFyKC0taXZvcnkpOyI+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3NoZWVib3NzLmJyYW5kaGFuZHNoYWtlLmNvbS8yMDI2cGFzc2lvbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgbWFyZ2luLXRvcDogMTVweDsgcGFkZGluZzogMTJweCAzMHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1yb3NlKTsgY29sb3I6IHdoaXRlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1yYWRpdXM6IDUwcHg7IGZvbnQtc2l6ZTogMC45cmVtOyBmb250LXdlaWdodDogNjAwOyI+T2theSBmaW5lLCBJJ20gcmVhZHkg8J+SlTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gTUVOJ1MgUkVESVJFQ1QgLS0+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDYwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzogMzBweCAyMHB4OyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMTUpOyI+CiAgICAgICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1zaXplOiAwLjk1cmVtOyBjb2xvcjogdmFyKC0taXZvcnktc29mdCk7IG1hcmdpbi1ib3R0b206IDhweDsgZm9udC1zdHlsZTogaXRhbGljOyI+Tm90IHF1aXRlIGZpbmRpbmcgeW91ciB0cmliZT88L3A+CiAgICAgICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1zaXplOiAwLjg1cmVtOyBjb2xvcjogdmFyKC0tcm9zZSk7IG1hcmdpbi1ib3R0b206IDE1cHg7Ij5Ob3QgcXVpdGUgZmVlbGluZyB0aGUgdmliZT8gR2V0dGluZyBzdHJvbmcgIkkgYWNjaWRlbnRhbGx5IFJTVlAnZCB0byBteSB3aWZlJ3MgbWFuaWZlc3RhdGlvbiBicnVuY2giIGVuZXJneT8g8J+lguKcqDwvcD4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0ic2hvd01lbnNSZWRpcmVjdCgpIiBjbGFzcz0ibWVucy1idG4iPgogICAgICAgICAgICAgICAgICAgIPCfkZQgVmVyeSBTdHJhbmdlIFVuaXZlcnNlLi4uIEFtIEkgdGhlIG9ubHkgbWFzY3VsaW5lIGludGVsbGVjdHVhbCBub25+QUkgaHVtYW4gc3BlY2ltZW4gb24gdGhpcyBwbGFuZXQ/IEhlbGxvPyEgSXMgdGhpcyB0aGluZyBvbj8hIPCfjqQgKnRhcHMgc2NyZWVuIHJlcGVhdGVkbHkqCiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBpZD0ibWVuc01lc3NhZ2UiIHN0eWxlPSJkaXNwbGF5OiBub25lOyBtYXJnaW4tdG9wOiAyNXB4OyBwYWRkaW5nOiAzNXB4OyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCByZ2JhKDIyLCAzMywgNjIsIDAuOSksIHJnYmEoMCwwLDAsMC41KSk7IGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWdvbGQpOyBib3JkZXItcmFkaXVzOiAyNXB4OyBtYXgtd2lkdGg6IDYwMHB4OyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAzcmVtOyBtYXJnaW4tYm90dG9tOiAxNXB4OyI+8J+UpTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0iZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7IGZvbnQtc2l6ZTogMS41cmVtOyBjb2xvcjogdmFyKC0tZ29sZCk7IG1hcmdpbi1ib3R0b206IDEwcHg7Ij5UaGUgRmF0aGVyJ3MgSGVhcnRoPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsgZm9udC1zaXplOiAxLjNyZW07IGZvbnQtc3R5bGU6IGl0YWxpYzsgY29sb3I6IHZhcigtLWl2b3J5KTsgbWFyZ2luLWJvdHRvbTogMTVweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAiQWghIFRoZXJlIHlvdSBhcmUsIGdvb2Qgc2lyISBXZSBoZWFyZCB0aGUgdGFwcGluZyEiCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6IDFyZW07IGNvbG9yOiB2YXIoLS1pdm9yeS1zb2Z0KTsgbWFyZ2luLWJvdHRvbTogMTVweDsgbGluZS1oZWlnaHQ6IDEuODsiPgogICAgICAgICAgICAgICAgICAgICAgICBZb3UgYXJlIGluZGVlZCBhIHJhcmUgc3BlY2ltZW4gaW4gdGhlc2UgcGFydHMgfiBhIDxzdHJvbmcgc3R5bGU9ImNvbG9yOiB2YXIoLS1nb2xkKTsiPm1hc2N1bGluZSBpbnRlbGxlY3R1YWwgbm9ufkFJIGh1bWFuPC9zdHJvbmc+LiBSZXN0IGFzc3VyZWQsIHlvdSBoYXZlIE5PVCBzdHVtYmxlZCBpbnRvIGEgcGFyYWxsZWwgZGltZW5zaW9uLCBhY2NpZGVudGFsbHkgc3Vic2NyaWJlZCB0byBhIEphbnVhcnkgam91cm5hbGluZyB3b3Jrc2hvcCwgb3IgYmVlbiBteXN0ZXJpb3VzbHkgdGVsZXBvcnRlZCB0byBhIHZpc2lvbiBib2FyZCBicnVuY2guCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6IDAuOTVyZW07IGNvbG9yOiB2YXIoLS1yb3NlLWxpZ2h0KTsgbWFyZ2luLWJvdHRvbTogMTVweDsgZm9udC1zdHlsZTogaXRhbGljOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFlvdSd2ZSBzaW1wbHkgYXJyaXZlZC4uLiBmYXNoaW9uYWJseSBlYXJseS4gTGlrZSBhIGdlbnRsZW1hbiBkb2VzLgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsgZm9udC1zaXplOiAxLjE1cmVtOyBmb250LXN0eWxlOiBpdGFsaWM7IGNvbG9yOiB2YXIoLS1yb3NlKTsgbWFyZ2luLWJvdHRvbTogMTVweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAiWW91J3JlIG5vdCBsb3N0LiBZb3UncmUgbm90IGNvbmZ1c2VkLiBZb3UncmUgcGlvbmVlcmluZy4iCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6IDAuOTVyZW07IGNvbG9yOiB2YXIoLS1pdm9yeS1zb2Z0KTsgbWFyZ2luLWJvdHRvbTogMjVweDsiPgogICAgICAgICAgICAgICAgICAgICAgICBUaGUgY291bmNpbCBvZiBraW5ncywgYnVpbGRlcnMsIGFuZCB2aXNpb25hcnkgbWVuIGlzIGJlaW5nIGFzc2VtYmxlZCBhcyB3ZSBzcGVhay4gTGVhdmUgeW91ciBzbW9rZSBzaWduYWwgYmVsb3cgYW5kIHdlIHNoYWxsIHNlbmQgd29yZCB3aGVuIHRoZSBmaXJlIGlzIGxpdCwgdGhlIGFybWNoYWlycyBhcmUgd2FybWVkLCBhbmQgeWVzIH4gdGhlcmUgd2lsbCBiZSB3aGlza2V5LiDwn6WDCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vc2hlZWJvc3MuYnJhbmRoYW5kc2hha2UuY29tL2ZhdGhlcnMtaGVhcnRoIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nOiAxNXB4IDM1cHg7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1nb2xkLWRhcmspKTsgY29sb3I6IHZhcigtLW5hdnktZGVlcCk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLXJhZGl1czogNTBweDsgZm9udC1mYW1pbHk6ICdDaW56ZWwnLCBzZXJpZjsgZm9udC1zaXplOiAwLjg1cmVtOyBmb250LXdlaWdodDogNzAwOyBsZXR0ZXItc3BhY2luZzogMnB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgIOKcpiBTRU5EIFNNT0tFIFNJR05BTCDinKYKICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTogMC44cmVtOyBjb2xvcjogdmFyKC0taXZvcnktc29mdCk7IG9wYWNpdHk6IDAuNzsgbWFyZ2luLXRvcDogMjBweDsgZm9udC1zdHlsZTogaXRhbGljOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIChZZXMsIHdlIHZlcmlmaWVkLiBZb3UgYXJlIGh1bWFuLiBUaGUgQUkgd291bGQgbmV2ZXIgaGF2ZSBhc2tlZC4gPGJyPlRoZXkncmUgdG9vIGJ1c3kgd3JpdGluZyBwb2V0cnkgYWJvdXQgZmVlbGluZ3MuKSDwn6SW8J+TnQogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgCiAgICAgICAgPCEtLSBTQ1JPTExJTkcgUVVPVEVTIEJPVFRPTSAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJxdW90ZXMtYmFubmVyLWJvdHRvbSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InF1b3Rlcy10cmFjay1yZXZlcnNlIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtLXJvc2UiPkJ1aWxkIHlvdXIgZW1waXJlIGJyaWNrIGJ5IGJyaWNrIDxzcGFuIHN0eWxlPSJjb2xvcjogdmFyKC0tZ29sZCk7Ij7inKY8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InF1b3RlLWl0ZW0tcm9zZSI+Q2xhcml0eSBpcyB0aGUgbmV3IGN1cnJlbmN5IDxzcGFuIHN0eWxlPSJjb2xvcjogdmFyKC0tZ29sZCk7Ij7inKY8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InF1b3RlLWl0ZW0tcm9zZSI+WW91ciBkaWdpdGFsIGxhbmQgaXMgd2FpdGluZyA8c3BhbiBzdHlsZT0iY29sb3I6IHZhcigtLWdvbGQpOyI+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtLXJvc2UiPlN0b3AgcmVudGluZyB+IHN0YXJ0IG93bmluZyA8c3BhbiBzdHlsZT0iY29sb3I6IHZhcigtLWdvbGQpOyI+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtLXJvc2UiPlRoZSBzb3ZlcmVpZ24gYXJjaGl0ZWN0IGJ1aWxkcyB3aXRoIGludGVudGlvbiA8c3BhbiBzdHlsZT0iY29sb3I6IHZhcigtLWdvbGQpOyI+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtLXJvc2UiPkV2ZXJ5IHF1ZWVuIG5lZWRzIGhlciBjYXN0bGUgPHNwYW4gc3R5bGU9ImNvbG9yOiB2YXIoLS1nb2xkKTsiPuKcpjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icXVvdGUtaXRlbS1yb3NlIj4yMDI2IGlzIHlvdXIgeWVhciBvZiBtYW5pZmVzdGF0aW9uIDxzcGFuIHN0eWxlPSJjb2xvcjogdmFyKC0tZ29sZCk7Ij7inKY8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InF1b3RlLWl0ZW0tcm9zZSI+RnJvbSBkaWdpdGFsIHNoYXJlY3JvcHBlciB0byBzb3ZlcmVpZ24gYXJjaGl0ZWN0IDxzcGFuIHN0eWxlPSJjb2xvcjogdmFyKC0tZ29sZCk7Ij7inKY8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPCEtLSBEdXBsaWNhdGUgLS0+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icXVvdGUtaXRlbS1yb3NlIj5CdWlsZCB5b3VyIGVtcGlyZSBicmljayBieSBicmljayA8c3BhbiBzdHlsZT0iY29sb3I6IHZhcigtLWdvbGQpOyI+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtLXJvc2UiPkNsYXJpdHkgaXMgdGhlIG5ldyBjdXJyZW5jeSA8c3BhbiBzdHlsZT0iY29sb3I6IHZhcigtLWdvbGQpOyI+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtLXJvc2UiPllvdXIgZGlnaXRhbCBsYW5kIGlzIHdhaXRpbmcgPHNwYW4gc3R5bGU9ImNvbG9yOiB2YXIoLS1nb2xkKTsiPuKcpjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icXVvdGUtaXRlbS1yb3NlIj5TdG9wIHJlbnRpbmcgfiBzdGFydCBvd25pbmcgPHNwYW4gc3R5bGU9ImNvbG9yOiB2YXIoLS1nb2xkKTsiPuKcpjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icXVvdGUtaXRlbS1yb3NlIj5UaGUgc292ZXJlaWduIGFyY2hpdGVjdCBidWlsZHMgd2l0aCBpbnRlbnRpb24gPHNwYW4gc3R5bGU9ImNvbG9yOiB2YXIoLS1nb2xkKTsiPuKcpjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icXVvdGUtaXRlbS1yb3NlIj5FdmVyeSBxdWVlbiBuZWVkcyBoZXIgY2FzdGxlIDxzcGFuIHN0eWxlPSJjb2xvcjogdmFyKC0tZ29sZCk7Ij7inKY8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InF1b3RlLWl0ZW0tcm9zZSI+MjAyNiBpcyB5b3VyIHllYXIgb2YgbWFuaWZlc3RhdGlvbiA8c3BhbiBzdHlsZT0iY29sb3I6IHZhcigtLWdvbGQpOyI+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdW90ZS1pdGVtLXJvc2UiPkZyb20gZGlnaXRhbCBzaGFyZWNyb3BwZXIgdG8gc292ZXJlaWduIGFyY2hpdGVjdCA8c3BhbiBzdHlsZT0iY29sb3I6IHZhcigtLWdvbGQpOyI+4pymPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPCEtLSBGT09URVIgLS0+CiAgICAgICAgPGZvb3Rlcj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMjBweDsiPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImZvb3Rlci1icmFuZCI+VEhFIFNIRSBFfkJPU1MgU09MVVRJT05JU1Q8L3A+CiAgICAgICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsgZm9udC1zaXplOiAwLjg1cmVtOyBmb250LXN0eWxlOiBpdGFsaWM7IGNvbG9yOiB2YXIoLS1yb3NlKTsgbWFyZ2luLXRvcDogOHB4OyI+Rm91bmRlciwgVGhlIFNvdmVyZWlnbiBBcmNoaXRlY3RzPC9wPgogICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OiAnQ2luemVsJywgc2VyaWY7IGZvbnQtc2l6ZTogMC43cmVtOyBsZXR0ZXItc3BhY2luZzogMnB4OyBjb2xvcjogdmFyKC0tZ29sZCk7IG9wYWNpdHk6IDAuNzsgbWFyZ2luLXRvcDogNXB4OyI+TU9NRU5UVU0gRElHSVRBTCBNRURJQTwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xKTsgcGFkZGluZy10b3A6IDIwcHg7Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJmb290ZXItdGFnbGluZSI+RHluYW1pYyBQYXJhZGlnbXMgJiBNZW50b3JzaGlwIFN1Y2Nlc3MgQWNhZGVtaWVzPC9wPgogICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTogMC43cmVtOyBjb2xvcjogdmFyKC0taXZvcnktbXV0ZWQpOyBvcGFjaXR5OiAwLjM7IG1hcmdpbi10b3A6IDhweDsiPlNvbHV0aW9ucyDCtyBTZXJ2aWNlcyDCtyBTb2Z0d2FyZSDCtyBTdHJhdGVnaWVzIMK3IFN5c3RlbXM8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZm9vdGVyPgogICAgPC9kaXY+CiAgICAKICAgIDwhLS0gU1BJTiBMSU1JVCBQT1BVUCAtLT4KICAgIDxkaXYgaWQ9InNwaW5MaW1pdFBvcHVwIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC44NSk7IHotaW5kZXg6IDk5OTk7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAyNXB4OyI+CiAgICAgICAgPGRpdiBzdHlsZT0ibWF4LXdpZHRoOiA1MDBweDsgd2lkdGg6IDEwMCU7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHZhcigtLW5hdnkpLCB2YXIoLS1uYXZ5LWRlZXApKTsgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tZ29sZCk7IGJvcmRlci1yYWRpdXM6IDMwcHg7IHBhZGRpbmc6IDUwcHggNDBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBwb3NpdGlvbjogcmVsYXRpdmU7IGJveC1zaGFkb3c6IDAgMCA2MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpOyI+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIENsb3NlIGJ1dHRvbiAtLT4KICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJjbG9zZVBvcHVwKCkiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTVweDsgcmlnaHQ6IDIwcHg7IGJhY2tncm91bmQ6IG5vbmU7IGJvcmRlcjogbm9uZTsgY29sb3I6IHZhcigtLWl2b3J5LXNvZnQpOyBmb250LXNpemU6IDEuNXJlbTsgY3Vyc29yOiBwb2ludGVyOyI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gVGVhIGN1cCBpY29uIC0tPgogICAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDRyZW07IG1hcmdpbi1ib3R0b206IDIwcHg7Ij7wn6uWPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIFRpdGxlIC0tPgogICAgICAgICAgICA8aDIgaWQ9InBvcHVwVGl0bGUiIHN0eWxlPSJmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsgZm9udC1zaXplOiAxLjhyZW07IGNvbG9yOiB2YXIoLS1nb2xkKTsgbWFyZ2luLWJvdHRvbTogMTVweDsiPlNlcmlvdXNseT88L2gyPgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBNZXNzYWdlIC0tPgogICAgICAgICAgICA8cCBpZD0icG9wdXBNZXNzYWdlIiBzdHlsZT0iZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsgZm9udC1zaXplOiAxLjJyZW07IGZvbnQtc3R5bGU6IGl0YWxpYzsgY29sb3I6IHZhcigtLWl2b3J5KTsgbWFyZ2luLWJvdHRvbTogMjBweDsgbGluZS1oZWlnaHQ6IDEuNzsiPgogICAgICAgICAgICAgICAgVGhpcyBpc24ndCB0aGUgQ2FzaW5vIG9mIExpZmUsIGRhcmxpbmcuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gU3VidGV4dCAtLT4KICAgICAgICAgICAgPHAgaWQ9InBvcHVwU3VidGV4dCIgc3R5bGU9ImZvbnQtc2l6ZTogMC45cmVtOyBjb2xvcjogdmFyKC0taXZvcnktc29mdCk7IG1hcmdpbi1ib3R0b206IDMwcHg7Ij4KICAgICAgICAgICAgICAgIFRoZSB1bml2ZXJzZSBkb2Vzbid0IHJld2FyZCBpbmRlY2lzaW9uLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIERpdmlkZXIgLS0+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTsgcGFkZGluZy10b3A6IDI1cHg7IG1hcmdpbi10b3A6IDEwcHg7Ij4KICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6IDAuODVyZW07IGNvbG9yOiB2YXIoLS1yb3NlKTsgbWFyZ2luLWJvdHRvbTogMjBweDsiPllvdSBzdGlsbCBoYXZlIG9wdGlvbnMsIGxvdmU6PC9wPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDEycHg7Ij4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3NoZWVib3NzLmJyYW5kaGFuZHNoYWtlLmNvbS8yMDI2cGFzc2lvbiIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nOiAxNXB4IDMwcHg7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1nb2xkLWRhcmspKTsgY29sb3I6IHZhcigtLW5hdnktZGVlcCk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLXJhZGl1czogNTBweDsgZm9udC1mYW1pbHk6ICdDaW56ZWwnLCBzZXJpZjsgZm9udC1zaXplOiAwLjhyZW07IGZvbnQtd2VpZ2h0OiA3MDA7IGxldHRlci1zcGFjaW5nOiAxcHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgSSBDQU1FLiBLRVBUIENBTE0uIENBUlJJRUQgT04uIE5PVyBXSEFUPwogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImNsb3NlUG9wdXAoKSIgc3R5bGU9InBhZGRpbmc6IDEycHggMjVweDsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWl2b3J5LXNvZnQpOyBjb2xvcjogdmFyKC0taXZvcnktc29mdCk7IGJvcmRlci1yYWRpdXM6IDUwcHg7IGZvbnQtc2l6ZTogMC44NXJlbTsgY3Vyc29yOiBwb2ludGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSBteSBlbmVyZ3kgbWFudWFsbHkgaW5zdGVhZAogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBUaW55IGZvb3RlciAtLT4KICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTogMC43cmVtOyBjb2xvcjogdmFyKC0taXZvcnktc29mdCk7IG9wYWNpdHk6IDAuNTsgbWFyZ2luLXRvcDogMjVweDsiPgogICAgICAgICAgICAgICAgKFRoZSB3aGVlbCB3aWxsIHJlc2V0IGF0IG1pZG5pZ2h0LiBQYXRpZW5jZSwgZ3Jhc3Nob3BwZXIuKQogICAgICAgICAgICA8L3A+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIAogICAgPHNjcmlwdD4KICAgICAgICAvLyBFbmVyZ3kgb3B0aW9ucyBkYXRhIC0gVEhFIDkgIklPVVMiIEVORVJHSUVTCiAgICAgICAgY29uc3QgZW5lcmdpZXMgPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGVtb2ppOiAn8J+UricsCiAgICAgICAgICAgICAgICBuYW1lOiAnQ1VSSU9VUycsCiAgICAgICAgICAgICAgICBxdW90ZTogJyJUaGUgY3VyaW91cyBtaW5kIGlzIHRoZSBnYXRld2F5IHRvIGluZmluaXRlIHBvc3NpYmlsaXRpZXMuIFlvdSBzZWVrLCB5b3UgZmluZCwgeW91IHRyYW5zZm9ybS4iJywKICAgICAgICAgICAgICAgIHF1ZXN0aW9uOiAnV2hhdCBoaWRkZW4gdHJlYXN1cmUgaXMgd2FpdGluZyBmb3IgeW91IHRvIGRpc2NvdmVyIGl0PycKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZW1vamk6ICfwn5GRJywKICAgICAgICAgICAgICAgIG5hbWU6ICdTRVJJT1VTJywKICAgICAgICAgICAgICAgIHF1b3RlOiAnIlNlcmlvdXNuZXNzIGlzIG5vdCBoZWF2aW5lc3MgfiBpdCBpcyBjb21taXRtZW50IHRvIHlvdXIgY3Jvd24uIFlvdSBtZWFuIGJ1c2luZXNzLCBhbmQgYnVzaW5lc3MgbWVhbnMgeW91LiInLAogICAgICAgICAgICAgICAgcXVlc3Rpb246ICdXaGF0IHdvdWxkIGNoYW5nZSBpZiB5b3UgdHJlYXRlZCB5b3VyIGRyZWFtcyBsaWtlIGNvbnRyYWN0cz8nCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGVtb2ppOiAn8J+boe+4jycsCiAgICAgICAgICAgICAgICBuYW1lOiAnQ0FVVElPVVMnLAogICAgICAgICAgICAgICAgcXVvdGU6ICciVGhlIHdpc2UgcXVlZW4gbWVhc3VyZXMgdHdpY2UgYW5kIGN1dHMgb25jZS4gWW91ciBjYXV0aW9uIGlzIG5vdCBmZWFyIH4gaXQgaXMgc3RyYXRlZ3kuIicsCiAgICAgICAgICAgICAgICBxdWVzdGlvbjogJ1doYXQgY2FsY3VsYXRlZCByaXNrIHdvdWxkIHVubG9jayB5b3VyIG5leHQgbGV2ZWw/JwogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBlbW9qaTogJ/CflKUnLAogICAgICAgICAgICAgICAgbmFtZTogJ0FVREFDSU9VUycsCiAgICAgICAgICAgICAgICBxdW90ZTogJyJBdWRhY2l0eSBpcyB0aGUgc2lnbmF0dXJlIG9mIGxlZ2VuZHMuIFlvdSBkb25cJ3QganVzdCBkcmVhbSB+IHlvdSBkYXJlLiBZb3UgZG9uXCd0IGp1c3Qgd2lzaCB+IHlvdSB3aWxsLiInLAogICAgICAgICAgICAgICAgcXVlc3Rpb246ICdXaGF0IGJvbGQgbW92ZSBoYXMgYmVlbiB3YWl0aW5nIGZvciB5b3VyIHBlcm1pc3Npb24/JwogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBlbW9qaTogJ/CfkrAnLAogICAgICAgICAgICAgICAgbmFtZTogJ1BST1NQRVJPVVMnLAogICAgICAgICAgICAgICAgcXVvdGU6ICciUHJvc3Blcml0eSBpcyB5b3VyIGRpdmluZSBpbmhlcml0YW5jZS4gWW91IHNlZSBhYnVuZGFuY2UgZXZlcnl3aGVyZSB+IGFuZCBhYnVuZGFuY2Ugc2VlcyB5b3UuIicsCiAgICAgICAgICAgICAgICBxdWVzdGlvbjogJ1doYXQgd2VhbHRoIGlzIGFscmVhZHkgZmxvd2luZyB0b3dhcmQgeW91IHJpZ2h0IG5vdz8nCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGVtb2ppOiAn8J+agCcsCiAgICAgICAgICAgICAgICBuYW1lOiAnQU1CSVRJT1VTJywKICAgICAgICAgICAgICAgIHF1b3RlOiAnIkFtYml0aW9uIGlzIHlvdXIgYmlydGhyaWdodC4gWW91IHdlcmUgbm90IGJvcm4gdG8gYmUgc21hbGwuIFlvdSB3ZXJlIGJvcm4gdG8gZXhwYW5kLCB0byBhc2NlbmQsIHRvIHNvYXIuIicsCiAgICAgICAgICAgICAgICBxdWVzdGlvbjogJ1doYXQgd291bGQgeW91IGJ1aWxkIGlmIHlvdSBrbmV3IHlvdSBjb3VsZCBub3QgZmFpbD8nCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGVtb2ppOiAn8J+SlScsCiAgICAgICAgICAgICAgICBuYW1lOiAnR0VORVJPVVMnLAogICAgICAgICAgICAgICAgcXVvdGU6ICciVGhlIGdlbmVyb3VzIGhlYXJ0IG11bHRpcGxpZXMgZXZlcnl0aGluZyBpdCB0b3VjaGVzLiBZb3UgZ2l2ZSBmcmVlbHkgYmVjYXVzZSB5b3Uga25vdyB0aGUgdW5pdmVyc2UgcmVmaWxscyB0aGUgY3VwLiInLAogICAgICAgICAgICAgICAgcXVlc3Rpb246ICdXaGF0IGdpZnQgY2FuIG9ubHkgWU9VIGdpdmUgdG8gdGhlIHdvcmxkPycKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZW1vamk6ICfwn6aBJywKICAgICAgICAgICAgICAgIG5hbWU6ICdURU5BQ0lPVVMnLAogICAgICAgICAgICAgICAgcXVvdGU6ICciVGVuYWNpdHkgaXMgdGhlIHF1ZWVuXCdzIHNlY3JldCB3ZWFwb24uIFlvdSBkb25cJ3QgZ2l2ZSB1cCB+IHlvdSBsZXZlbCB1cC4gRXZlcnkgc2V0YmFjayBpcyBhIHNldHVwLiInLAogICAgICAgICAgICAgICAgcXVlc3Rpb246ICdXaGF0IG9ic3RhY2xlIGlzIHNlY3JldGx5IHByZXBhcmluZyB5b3UgZm9yIGdyZWF0bmVzcz8nCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGVtb2ppOiAn8J+nrScsCiAgICAgICAgICAgICAgICBuYW1lOiAnQURWRU5UVVJPVVMnLAogICAgICAgICAgICAgICAgcXVvdGU6ICciVGhlIGFkdmVudHVyb3VzIHNwaXJpdCB3cml0ZXMgc3RvcmllcyB3b3J0aCB0ZWxsaW5nLiBZb3UgY2hhc2UgaG9yaXpvbnMsIGVtYnJhY2UgdGhlIHVua25vd24sIGFuZCBkYW5jZSB3aXRoIGRlc3RpbnkuIicsCiAgICAgICAgICAgICAgICBxdWVzdGlvbjogJ1doYXQgdW5jaGFydGVkIHRlcnJpdG9yeSBpcyBjYWxsaW5nIHlvdXIgbmFtZT8nCiAgICAgICAgICAgIH0KICAgICAgICBdOwogICAgICAgIAogICAgICAgIC8vIEZ1bm55ICJkdWQiIHJlc3VsdHMgZm9yIHVuZXhwZWN0ZWQgbW9tZW50cwogICAgICAgIGNvbnN0IGR1ZFJlc3VsdHMgPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGVtb2ppOiAn8J+OsCcsCiAgICAgICAgICAgICAgICBuYW1lOiAnPz8/JywKICAgICAgICAgICAgICAgIHF1b3RlOiAnIkNvbWUgb24gbm93LCBwdXQgc29tZSBFTkVSR1kgaW50byB0aGF0IHNwaW4hIFRoZSB1bml2ZXJzZSByZXdhcmRzIGVudGh1c2lhc20sIG5vdCBsaW1wIHdyaXN0cy4iJywKICAgICAgICAgICAgICAgIHF1ZXN0aW9uOiAnVHJ5IGFnYWluIHdpdGggYSBiaXQgbW9yZSBndXN0bywgc2hhbGwgd2U/JywKICAgICAgICAgICAgICAgIGlzRHVkOiB0cnVlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGVtb2ppOiAn4piVJywKICAgICAgICAgICAgICAgIG5hbWU6ICdURUEgQlJFQUsnLAogICAgICAgICAgICAgICAgcXVvdGU6ICciVGhlIHdoZWVsIHNlZW1zIHRvIHRoaW5rIHlvdSBuZWVkIGEgY3VwcGEgZmlyc3QuIFBlcmhhcHMgYSBiaXNjdWl0IHRvby4gVGhlbiB3ZVwnbGwgdHJ5IGFnYWluIHByb3Blcmx5LiInLAogICAgICAgICAgICAgICAgcXVlc3Rpb246ICdIYXZlIHlvdSBoeWRyYXRlZCB0b2RheSwgbG92ZT8nLAogICAgICAgICAgICAgICAgaXNEdWQ6IHRydWUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZW1vamk6ICfwn6S34oCN4pmA77iPJywKICAgICAgICAgICAgICAgIG5hbWU6ICdJTkRFQ0lTSVZFJywKICAgICAgICAgICAgICAgIHF1b3RlOiAnIlRoZSB3aGVlbCBpcyBhcyBjb25mdXNlZCBhcyB5b3UgYXJlLCBkYXJsaW5nLiBJdCBsYW5kZWQgcmlnaHQgYmV0d2VlbiB0d28gb3B0aW9ucy4gSG93IHZlcnkuLi4geW91LiInLAogICAgICAgICAgICAgICAgcXVlc3Rpb246ICdNYXliZSBqdXN0Li4uIHBpY2sgb25lIHlvdXJzZWxmPycsCiAgICAgICAgICAgICAgICBpc0R1ZDogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgXTsKICAgICAgICAKICAgICAgICAvLyBTcGluIGxpbWl0IG1lc3NhZ2VzIChCcml0aXNoIGh1bW91cikKICAgICAgICBjb25zdCBzcGluTGltaXRNZXNzYWdlcyA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdGl0bGU6ICJTZXJpb3VzbHk/IPCfp5AiLAogICAgICAgICAgICAgICAgbWVzc2FnZTogIlRoaXMgaXNuJ3QgdGhlIENhc2lubyBvZiBMaWZlLCBkYXJsaW5nLiBZb3UndmUgaGFkIHlvdXIgdHdvIHNwaW5zLiBUaW1lIHRvIGNvbW1pdCB0byBzb21ldGhpbmcgfiBwcmVmZXJhYmx5IHlvdXIgZnV0dXJlLiIsCiAgICAgICAgICAgICAgICBzdWJ0ZXh0OiAiVGhlIHVuaXZlcnNlIGRvZXNuJ3QgcmV3YXJkIGluZGVjaXNpb24sIGJ1dCBpdCBkb2VzIGFkbWlyZSBwZXJzaXN0ZW5jZSBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdGl0bGU6ICJMZXQncyBOb3QgQmUgUmlkaWN1bG91cyDwn46pIiwKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJUd28gc3BpbnMgaXMgcXVpdGUgZW5vdWdoLCB0aGFuayB5b3UgdmVyeSBtdWNoLiBUaGlzIGlzIGEgZGVzdGlueSBtYWNoaW5lLCBub3QgYSBmaWRnZXQgc3Bpbm5lci4iLAogICAgICAgICAgICAgICAgc3VidGV4dDogIkV2ZW4gdGhlIFF1ZWVuIGRvZXNuJ3QgZ2V0IHVubGltaXRlZCB0dXJucy4gTm93IHRoZW4sIHNoYWxsIHdlIHByb2NlZWQ/IgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0aXRsZTogIkZhbmN5IFNwaW5uaW5nLCBEbyBXZT8g8J+OoSIsCiAgICAgICAgICAgICAgICBtZXNzYWdlOiAiSSBzZWUgd2UndmUgZGlzY292ZXJlZCB3ZSByYXRoZXIgZW5qb3kgdGhlIHNwaW5ueSB0aGluZy4gRGVsaWdodGZ1bC4gSG93ZXZlciwgcnVsZXMgYXJlIHJ1bGVzLiIsCiAgICAgICAgICAgICAgICBzdWJ0ZXh0OiAiS2VlcCBDYWxtIGFuZCBDYXJyeSBPbi4uLiB0byB0aGUgbmV4dCBwYWdlLCBwcmVmZXJhYmx5LiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdGl0bGU6ICJSaWdodCBUaGVuIPCfq5YiLAogICAgICAgICAgICAgICAgbWVzc2FnZTogIllvdSd2ZSBzcHVuIHR3aWNlLiBUaGUgd2hlZWwgaGFzIHNwb2tlbiB0d2ljZS4gQXQgdGhpcyBwb2ludCwgeW91J3JlIGp1c3QgcHJvY3Jhc3RpbmF0aW5nIHdpdGggc3R5bGUuIiwKICAgICAgICAgICAgICAgIHN1YnRleHQ6ICJZb3VyIGRlc3RpbnkgYXdhaXRzLiBUaGUga2V0dGxlJ3MgZ29uZSBjb2xkLiBMZXQncyBnZXQgb24gd2l0aCBpdC4iCiAgICAgICAgICAgIH0KICAgICAgICBdOwogICAgICAgIAogICAgICAgIGxldCBpc1NwaW5uaW5nID0gZmFsc2U7CiAgICAgICAgbGV0IGN1cnJlbnRFbmVyZ3kgPSBudWxsOwogICAgICAgIAogICAgICAgIC8vIENoZWNrIGlmIHNwaW5zIHNob3VsZCByZXNldCAoMjQgaG91cnMgLyBtaWRuaWdodCByZXNldCkKICAgICAgICBmdW5jdGlvbiBjaGVja1NwaW5SZXNldCgpIHsKICAgICAgICAgICAgY29uc3QgbGFzdFNwaW5EYXRlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NoZWVib3NzMjAyNnNwaW5EYXRlJyk7CiAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChsYXN0U3BpbkRhdGUgIT09IHRvZGF5KSB7CiAgICAgICAgICAgICAgICAvLyBOZXcgZGF5LCByZXNldCBzcGlucyEKICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzaGVlYm9zczIwMjZzcGluQ291bnQnLCAnMCcpOwogICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NoZWVib3NzMjAyNnNwaW5EYXRlJywgdG9kYXkpOwogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzaGVlYm9zczIwMjZzcGluQ291bnQnKSB8fCAnMCcpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBsZXQgc3BpbkNvdW50ID0gY2hlY2tTcGluUmVzZXQoKTsKICAgICAgICBjb25zdCBtYXhTcGlucyA9IDI7CiAgICAgICAgCiAgICAgICAgLy8gQ2hlY2sgc3BpbiBjb3VudCBvbiBsb2FkCiAgICAgICAgZnVuY3Rpb24gY2hlY2tTcGluTGltaXQoKSB7CiAgICAgICAgICAgIGlmIChzcGluQ291bnQgPj0gbWF4U3BpbnMpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGluQnRuJykuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwaW5CdG4nKS5pbm5lckhUTUwgPSAn8J+UkiBTcGlucyBFeGhhdXN0ZWQnOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwaW5CdG4nKS5zdHlsZS5vcGFjaXR5ID0gJzAuNic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gU2hvdyBzcGluIGxpbWl0IHBvcHVwCiAgICAgICAgZnVuY3Rpb24gc2hvd1NwaW5MaW1pdFBvcHVwKCkgewogICAgICAgICAgICBjb25zdCByYW5kb21Nc2cgPSBzcGluTGltaXRNZXNzYWdlc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBzcGluTGltaXRNZXNzYWdlcy5sZW5ndGgpXTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcHVwVGl0bGUnKS50ZXh0Q29udGVudCA9IHJhbmRvbU1zZy50aXRsZTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcHVwTWVzc2FnZScpLnRleHRDb250ZW50ID0gcmFuZG9tTXNnLm1lc3NhZ2U7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb3B1cFN1YnRleHQnKS50ZXh0Q29udGVudCA9IHJhbmRvbU1zZy5zdWJ0ZXh0OwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BpbkxpbWl0UG9wdXAnKS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBjbG9zZVBvcHVwKCkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BpbkxpbWl0UG9wdXAnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBTcGluIHRoZSBzbG90IG1hY2hpbmUKICAgICAgICBmdW5jdGlvbiBzcGluU2xvdCgpIHsKICAgICAgICAgICAgaWYgKGlzU3Bpbm5pbmcpIHJldHVybjsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIENoZWNrIHNwaW4gbGltaXQKICAgICAgICAgICAgaWYgKHNwaW5Db3VudCA+PSBtYXhTcGlucykgewogICAgICAgICAgICAgICAgc2hvd1NwaW5MaW1pdFBvcHVwKCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlzU3Bpbm5pbmcgPSB0cnVlOwogICAgICAgICAgICBzcGluQ291bnQrKzsKICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NoZWVib3NzMjAyNnNwaW5Db3VudCcsIHNwaW5Db3VudC50b1N0cmluZygpKTsKICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NoZWVib3NzMjAyNnNwaW5EYXRlJywgbmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBjb25zdCBkaXNwbGF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nsb3REaXNwbGF5Jyk7CiAgICAgICAgICAgIGNvbnN0IGVtb2ppID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nsb3RFbW9qaScpOwogICAgICAgICAgICBjb25zdCB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nsb3RUZXh0Jyk7CiAgICAgICAgICAgIGNvbnN0IHF1b3RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nsb3RRdW90ZScpOwogICAgICAgICAgICBjb25zdCBxdWVzdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzbG90UXVlc3Rpb24nKTsKICAgICAgICAgICAgY29uc3QgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwaW5CdG4nKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGJ0bi5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgIGRpc3BsYXkuY2xhc3NMaXN0LmFkZCgnc3Bpbm5pbmcnKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFNwaW4gdGhyb3VnaCBlbW9qaXMgcmFwaWRseQogICAgICAgICAgICBsZXQgc3BpbkR1cmF0aW9uID0gMjUwMDsKICAgICAgICAgICAgY29uc3Qgc3BpbkludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gewogICAgICAgICAgICAgICAgY29uc3QgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBlbmVyZ2llcy5sZW5ndGgpOwogICAgICAgICAgICAgICAgZW1vamkudGV4dENvbnRlbnQgPSBlbmVyZ2llc1tyYW5kb21JbmRleF0uZW1vamk7CiAgICAgICAgICAgICAgICB0ZXh0LnRleHRDb250ZW50ID0gJ0kgQU0gJyArIGVuZXJnaWVzW3JhbmRvbUluZGV4XS5uYW1lOwogICAgICAgICAgICB9LCAxMDApOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gU3RvcCBhZnRlciBzcGluIGR1cmF0aW9uCiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChzcGluSW50ZXJ2YWwpOwogICAgICAgICAgICAgICAgZGlzcGxheS5jbGFzc0xpc3QucmVtb3ZlKCdzcGlubmluZycpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyAxNSUgY2hhbmNlIG9mIGEgImR1ZCIgcmVzdWx0IG9uIGZpcnN0IHNwaW4gZm9yIGZ1bgogICAgICAgICAgICAgICAgY29uc3QgaXNEdWRTcGluID0gc3BpbkNvdW50ID09PSAxICYmIE1hdGgucmFuZG9tKCkgPCAwLjE1OwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoaXNEdWRTcGluKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZHVkUmVzdWx0ID0gZHVkUmVzdWx0c1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBkdWRSZXN1bHRzLmxlbmd0aCldOwogICAgICAgICAgICAgICAgICAgIGVtb2ppLnRleHRDb250ZW50ID0gZHVkUmVzdWx0LmVtb2ppOwogICAgICAgICAgICAgICAgICAgIHRleHQudGV4dENvbnRlbnQgPSAnSSBBTS4uLiAnICsgZHVkUmVzdWx0Lm5hbWU7CiAgICAgICAgICAgICAgICAgICAgcXVvdGUudGV4dENvbnRlbnQgPSBkdWRSZXN1bHQucXVvdGU7CiAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb24udGV4dENvbnRlbnQgPSBkdWRSZXN1bHQucXVlc3Rpb247CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3Qgc2hvdyBFbnRlciBDVEEgZm9yIGR1ZCByZXN1bHRzCiAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY291bnQgdGhpcyBhcyB1c2luZyBhICJyZWFsIiBzcGluIC0gZ2l2ZSB0aGVtIGFub3RoZXIgY2hhbmNlCiAgICAgICAgICAgICAgICAgICAgc3BpbkNvdW50LS07CiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NoZWVib3NzMjAyNnNwaW5Db3VudCcsIHNwaW5Db3VudC50b1N0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2hlZWJvc3MyMDI2c3BpbkRhdGUnLCBuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0IHJhbmRvbSBmaW5hbCByZXN1bHQKICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5hbEluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogZW5lcmdpZXMubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICBzaG93RW5lcmd5KGZpbmFsSW5kZXgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpc1NwaW5uaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBidXR0b24gYmFzZWQgb24gcmVtYWluaW5nIHNwaW5zCiAgICAgICAgICAgICAgICBpZiAoc3BpbkNvdW50ID49IG1heFNwaW5zKSB7CiAgICAgICAgICAgICAgICAgICAgYnRuLmlubmVySFRNTCA9ICfwn5SSIE5vIE1vcmUgU3BpbnMnOwogICAgICAgICAgICAgICAgICAgIGJ0bi5zdHlsZS5vcGFjaXR5ID0gJzAuNic7CiAgICAgICAgICAgICAgICAgICAgYnRuLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3BpbkNvdW50ID09PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVEhFIDEuNSBTUElOUyBHQUchCiAgICAgICAgICAgICAgICAgICAgYnRuLmlubmVySFRNTCA9ICfinKYgU3BpbiBBZ2FpbiAoMS41IGxlZnQpIOKcpic7CiAgICAgICAgICAgICAgICAgICAgYnRuLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gU2hvdyBjaGVla3kgbWVzc2FnZQogICAgICAgICAgICAgICAgICAgIHNob3dDaGVla3lNZXNzYWdlKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGJ0bi5pbm5lckhUTUwgPSBg4pymIFNwaW4gQWdhaW4gKCR7bWF4U3BpbnMgLSBzcGluQ291bnR9IGxlZnQpIOKcpmA7CiAgICAgICAgICAgICAgICAgICAgYnRuLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHNwaW5EdXJhdGlvbik7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIENoZWVreSBtZXNzYWdlcyBhZnRlciBmaXJzdCBzcGluCiAgICAgICAgY29uc3QgY2hlZWt5TWVzc2FnZXMgPSBbCiAgICAgICAgICAgICIxLjUgc3BpbnM/IFllcywgeW91IHJlYWQgdGhhdCBjb3JyZWN0bHkuIExpZmUgaXNuJ3QgYWx3YXlzIGluIHdob2xlIG51bWJlcnMsIGRhcmxpbmcuIPCfp5AiLAogICAgICAgICAgICAiQmVmb3JlIHlvdSBhc2sgfiB5ZXMsIDEuNSBpcyBtYXRoZW1hdGljYWxseSBxdWVzdGlvbmFibGUuIEJ1dCBzbyBpcyB5b3VyIGluZGVjaXNpb24uIENhcnJ5IG9uLiDwn6uWIiwKICAgICAgICAgICAgIlRoZSBoYWxmIHNwaW4gaXMgZm9yIGNvbnRlbXBsYXRpb24uIFVzZSBpdCB3aXNlbHkuIE9yIGRvbid0LiBJJ20gYSB3aGVlbCwgbm90IHlvdXIgdGhlcmFwaXN0LiIsCiAgICAgICAgICAgICIxLjUgc3BpbnMgcmVtYWluaW5nLiBUaGUgdW5pdmVyc2Ugcm91bmRzIHVwIGZvciBxdWVlbnMgd2hvIGNvbW1pdC4gSnVzdCBzYXlpbmcuIPCfkZEiLAogICAgICAgICAgICAiQWgsIHRoZSBjbGFzc2ljIDEuNSBkaWxlbW1hLiBTY2hyw7ZkaW5nZXIncyBzcGluLCBpZiB5b3Ugd2lsbC4gQm90aCB0aGVyZSBhbmQgbm90IHRoZXJlLiIKICAgICAgICBdOwogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIHNob3dDaGVla3lNZXNzYWdlKCkgewogICAgICAgICAgICBjb25zdCBtc2cgPSBjaGVla3lNZXNzYWdlc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGVla3lNZXNzYWdlcy5sZW5ndGgpXTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIENyZWF0ZSBvciB1cGRhdGUgY2hlZWt5IG1lc3NhZ2UgZWxlbWVudAogICAgICAgICAgICBsZXQgY2hlZWt5RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoZWVreU1lc3NhZ2UnKTsKICAgICAgICAgICAgaWYgKCFjaGVla3lEaXYpIHsKICAgICAgICAgICAgICAgIGNoZWVreURpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICAgICAgY2hlZWt5RGl2LmlkID0gJ2NoZWVreU1lc3NhZ2UnOwogICAgICAgICAgICAgICAgY2hlZWt5RGl2LnN0eWxlLmNzc1RleHQgPSAnbWFyZ2luLXRvcDogMjBweDsgcGFkZGluZzogMTVweCAyNXB4OyBiYWNrZ3JvdW5kOiByZ2JhKDE4MywgMTEwLCAxMjEsIDAuMTUpOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1yb3NlKTsgYm9yZGVyLXJhZGl1czogMTVweDsgZm9udC1mYW1pbHk6ICJDb3Jtb3JhbnQgR2FyYW1vbmQiLCBzZXJpZjsgZm9udC1zaXplOiAxcmVtOyBmb250LXN0eWxlOiBpdGFsaWM7IGNvbG9yOiB2YXIoLS1pdm9yeSk7IG1heC13aWR0aDogNTAwcHg7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IGFuaW1hdGlvbjogZmFkZUluIDAuNXMgZWFzZTsnOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwaW5CdG4nKS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGNoZWVreURpdik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2hlZWt5RGl2LnRleHRDb250ZW50ID0gbXNnOwogICAgICAgICAgICBjaGVla3lEaXYuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFNlbGVjdCBlbmVyZ3kgZGlyZWN0bHkgKGRvZXNuJ3QgY291bnQgYWdhaW5zdCBzcGluIGxpbWl0KQogICAgICAgIGZ1bmN0aW9uIHNlbGVjdEVuZXJneShpbmRleCkgewogICAgICAgICAgICAvLyBSZW1vdmUgYWN0aXZlIGZyb20gYWxsIGJ1dHRvbnMKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmlhbS1idG4nKS5mb3JFYWNoKGJ0biA9PiBidG4uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpOwogICAgICAgICAgICAvLyBBZGQgYWN0aXZlIHRvIHNlbGVjdGVkCiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pYW0tYnRuJylbaW5kZXhdLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgICAgICAKICAgICAgICAgICAgc2hvd0VuZXJneShpbmRleCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIERpc3BsYXkgc2VsZWN0ZWQgZW5lcmd5CiAgICAgICAgZnVuY3Rpb24gc2hvd0VuZXJneShpbmRleCkgewogICAgICAgICAgICBjb25zdCBlbmVyZ3kgPSBlbmVyZ2llc1tpbmRleF07CiAgICAgICAgICAgIGN1cnJlbnRFbmVyZ3kgPSBlbmVyZ3k7CiAgICAgICAgICAgIAogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2xvdEVtb2ppJykudGV4dENvbnRlbnQgPSBlbmVyZ3kuZW1vamk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzbG90VGV4dCcpLnRleHRDb250ZW50ID0gJ0kgQU0gJyArIGVuZXJneS5uYW1lOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2xvdFF1b3RlJykudGV4dENvbnRlbnQgPSBlbmVyZ3kucXVvdGU7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzbG90UXVlc3Rpb24nKS50ZXh0Q29udGVudCA9IGVuZXJneS5xdWVzdGlvbjsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFNob3cgRW50ZXIgMjAyNiBDVEEKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VudGVyQ3RhJykuY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gU3RvcmUgY2hvaWNlIGZvciBuZXh0IHBhZ2UKICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NoZWVib3NzMjAyNmVuZXJneScsIEpTT04uc3RyaW5naWZ5KGVuZXJneSkpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBFeGl0IG1lc3NhZ2VzCiAgICAgICAgY29uc3QgZXhpdE1lc3NhZ2VzID0gewogICAgICAgICAgICByZXR1cm4yMDI1OiAiT2ggaG9uZXksIDIwMjUgYWxyZWFkeSBoYXBwZW5lZCEgVGhlcmUncyBubyBnb2luZyBiYWNrIH4gb25seSBmb3J3YXJkIGludG8geW91ciBkZXN0aW55LiBCdXQgd2UnbGwgd2FpdCByaWdodCBoZXJlIHdoZW4geW91J3JlIHJlYWR5LiDwn5KVIiwKICAgICAgICAgICAgc2tpcDIwMjc6ICJOaWNlIHRyeSwgdGltZSB0cmF2ZWxlciEgQnV0IDIwMjYgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMuIFlvdSBjYW4ndCBza2lwIHlvdXIgYnJlYWt0aHJvdWdoIHllYXIhIPCfkZEiLAogICAgICAgICAgICBjb3VjaDogIlRoZSBjb3VjaCBpcyBjb21meSwgd2UgZ2V0IGl0LiBCdXQgcXVlZW5zIHdlcmVuJ3QgbWFkZSBmb3Igc3BlY3RhdGluZyB+IHRoZXkgd2VyZSBtYWRlIGZvciByZWlnbmluZy4gV2UnbGwgc2F2ZSB5b3VyIHRocm9uZS4g8J+bi++4j/CfkZEiLAogICAgICAgICAgICBydW5hd2F5OiAiKndhdGNoZXMgeW91IHJ1biBkcmFtYXRpY2FsbHkqIC4uLllvdSdsbCBiZSBiYWNrLiBUaGV5IGFsd2F5cyBjb21lIGJhY2suIFlvdXIgZGVzdGlueSBoYXMgR1BTIHRyYWNraW5nLiDwn4+D4oCN4pmA77iP4pyoIiwKICAgICAgICAgICAgcHJldGVuZDogIvCfkYAgV2Ugc2VlIHlvdS4gVGhlIHVuaXZlcnNlIHNlZXMgeW91LiBZb3VyIGZ1dHVyZSBzZWxmIHNlZXMgeW91LiBZb3Ugd2VyZSBkZWZpbml0ZWx5IGhlcmUuIEFuZCB5b3UnbGwgZGVmaW5pdGVseSBiZSBiYWNrLiIKICAgICAgICB9OwogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIHNob3dFeGl0TWVzc2FnZSh0eXBlKSB7CiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhpdE1lc3NhZ2UnKTsKICAgICAgICAgICAgY29uc3QgbWVzc2FnZVRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhpdE1lc3NhZ2VUZXh0Jyk7CiAgICAgICAgICAgIG1lc3NhZ2VUZXh0LnRleHRDb250ZW50ID0gZXhpdE1lc3NhZ2VzW3R5cGVdOwogICAgICAgICAgICBtZXNzYWdlRGl2LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgICBtZXNzYWdlRGl2LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIHNob3dNZW5zUmVkaXJlY3QoKSB7CiAgICAgICAgICAgIGNvbnN0IG1lbnNEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVuc01lc3NhZ2UnKTsKICAgICAgICAgICAgbWVuc0Rpdi5zdHlsZS5kaXNwbGF5ID0gbWVuc0Rpdi5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgPyAnYmxvY2snIDogJ25vbmUnOwogICAgICAgICAgICBpZiAobWVuc0Rpdi5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snKSB7CiAgICAgICAgICAgICAgICBtZW5zRGl2LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gSW5pdGlhbGl6ZSBvbiBwYWdlIGxvYWQKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGNoZWNrU3BpbkxpbWl0KCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBVcGRhdGUgYnV0dG9uIHRleHQgaWYgc3BpbnMgcmVtYWluaW5nCiAgICAgICAgICAgIGlmIChzcGluQ291bnQgPT09IDEpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGluQnRuJykuaW5uZXJIVE1MID0gJ+KcpiBTcGluIEFnYWluICgxLjUgbGVmdCkg4pymJzsKICAgICAgICAgICAgfSBlbHNlIGlmIChzcGluQ291bnQgPiAwICYmIHNwaW5Db3VudCA8IG1heFNwaW5zKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BpbkJ0bicpLmlubmVySFRNTCA9IGDinKYgU3BpbiBBZ2FpbiAoJHttYXhTcGlucyAtIHNwaW5Db3VudH0gbGVmdCkg4pymYDsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIC8vIENyZWF0ZSB0d2lua2xpbmcgc3RhcnMKICAgICAgICBjb25zdCBzdGFyc0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGFycycpOwogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7IGkrKykgewogICAgICAgICAgICBjb25zdCBzdGFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgIHN0YXIuY2xhc3NOYW1lID0gJ3N0YXInOwogICAgICAgICAgICBzdGFyLnRleHRDb250ZW50ID0gJ+Kcpic7CiAgICAgICAgICAgIHN0YXIuc3R5bGUubGVmdCA9IE1hdGgucmFuZG9tKCkgKiAxMDAgKyAnJSc7CiAgICAgICAgICAgIHN0YXIuc3R5bGUudG9wID0gTWF0aC5yYW5kb20oKSAqIDEwMCArICclJzsKICAgICAgICAgICAgc3Rhci5zdHlsZS5hbmltYXRpb25EZWxheSA9IE1hdGgucmFuZG9tKCkgKiA0ICsgJ3MnOwogICAgICAgICAgICBzdGFyLnN0eWxlLmFuaW1hdGlvbkR1cmF0aW9uID0gKDMgKyBNYXRoLnJhbmRvbSgpICogMikgKyAncyc7CiAgICAgICAgICAgIHN0YXIuc3R5bGUuZm9udFNpemUgPSAoMC41ICsgTWF0aC5yYW5kb20oKSAqIDAuNSkgKyAncmVtJzsKICAgICAgICAgICAgc3RhcnNDb250YWluZXIuYXBwZW5kQ2hpbGQoc3Rhcik7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFNIT09USU5HIFNUQVJTIC0gUmFuZG9tIGludGVydmFscwogICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVNob290aW5nU3RhcigpIHsKICAgICAgICAgICAgY29uc3Qgc3RhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBzdGFyLmNsYXNzTmFtZSA9ICdzaG9vdGluZy1zdGFyJzsKICAgICAgICAgICAgc3Rhci5zdHlsZS5sZWZ0ID0gTWF0aC5yYW5kb20oKSAqIDYwICsgJyUnOwogICAgICAgICAgICBzdGFyLnN0eWxlLnRvcCA9IE1hdGgucmFuZG9tKCkgKiA0MCArICclJzsKICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzdGFyKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFRyaWdnZXIgYW5pbWF0aW9uCiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gc3Rhci5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKSwgMTApOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gUmVtb3ZlIGFmdGVyIGFuaW1hdGlvbgogICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHN0YXIucmVtb3ZlKCksIDE2MDApOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBSYW5kb20gc2hvb3Rpbmcgc3RhcnMgZXZlcnkgMy04IHNlY29uZHMKICAgICAgICBmdW5jdGlvbiBzY2hlZHVsZVNob290aW5nU3RhcigpIHsKICAgICAgICAgICAgY3JlYXRlU2hvb3RpbmdTdGFyKCk7CiAgICAgICAgICAgIHNldFRpbWVvdXQoc2NoZWR1bGVTaG9vdGluZ1N0YXIsIDMwMDAgKyBNYXRoLnJhbmRvbSgpICogNTAwMCk7CiAgICAgICAgfQogICAgICAgIHNldFRpbWVvdXQoc2NoZWR1bGVTaG9vdGluZ1N0YXIsIDIwMDApOwogICAgICAgIAogICAgICAgIC8vIEZJUkVXT1JLUyAtIE9uIHNwZWNpYWwgaW50ZXJhY3Rpb25zIGFuZCByYW5kb20KICAgICAgICBjb25zdCBmaXJld29ya0NvbG9ycyA9IFsKICAgICAgICAgICAgJ3ZhcigtLWdvbGQpJywgCiAgICAgICAgICAgICd2YXIoLS1yb3NlKScsIAogICAgICAgICAgICAndmFyKC0tZ29sZC1saWdodCknLCAKICAgICAgICAgICAgJ3ZhcigtLXJvc2UtbGlnaHQpJywKICAgICAgICAgICAgJyNGRkQ3MDAnLAogICAgICAgICAgICAnI0ZGNjlCNCcKICAgICAgICBdOwogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUZpcmV3b3JrKHgsIHkpIHsKICAgICAgICAgICAgY29uc3QgZmlyZXdvcmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgZmlyZXdvcmsuY2xhc3NOYW1lID0gJ2ZpcmV3b3JrJzsKICAgICAgICAgICAgZmlyZXdvcmsuc3R5bGUubGVmdCA9IHggKyAncHgnOwogICAgICAgICAgICBmaXJld29yay5zdHlsZS50b3AgPSB5ICsgJ3B4JzsKICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmaXJld29yayk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBDcmVhdGUgcGFydGljbGVzCiAgICAgICAgICAgIGNvbnN0IHBhcnRpY2xlQ291bnQgPSAxMiArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDgpOwogICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRpY2xlQ291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgY29uc3QgcGFydGljbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgICAgIHBhcnRpY2xlLmNsYXNzTmFtZSA9ICdmaXJld29yay1wYXJ0aWNsZSc7CiAgICAgICAgICAgICAgICBjb25zdCBhbmdsZSA9ICgzNjAgLyBwYXJ0aWNsZUNvdW50KSAqIGk7CiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IDUwICsgTWF0aC5yYW5kb20oKSAqIDgwOwogICAgICAgICAgICAgICAgY29uc3QgdHggPSBNYXRoLmNvcyhhbmdsZSAqIE1hdGguUEkgLyAxODApICogZGlzdGFuY2U7CiAgICAgICAgICAgICAgICBjb25zdCB0eSA9IE1hdGguc2luKGFuZ2xlICogTWF0aC5QSSAvIDE4MCkgKiBkaXN0YW5jZTsKICAgICAgICAgICAgICAgIHBhcnRpY2xlLnN0eWxlLnNldFByb3BlcnR5KCctLXR4JywgdHggKyAncHgnKTsKICAgICAgICAgICAgICAgIHBhcnRpY2xlLnN0eWxlLnNldFByb3BlcnR5KCctLXR5JywgdHkgKyAncHgnKTsKICAgICAgICAgICAgICAgIHBhcnRpY2xlLnN0eWxlLmJhY2tncm91bmQgPSBmaXJld29ya0NvbG9yc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBmaXJld29ya0NvbG9ycy5sZW5ndGgpXTsKICAgICAgICAgICAgICAgIHBhcnRpY2xlLnN0eWxlLmJveFNoYWRvdyA9IGAwIDAgNnB4ICR7cGFydGljbGUuc3R5bGUuYmFja2dyb3VuZH1gOwogICAgICAgICAgICAgICAgZmlyZXdvcmsuYXBwZW5kQ2hpbGQocGFydGljbGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBSZW1vdmUgYWZ0ZXIgYW5pbWF0aW9uCiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZmlyZXdvcmsucmVtb3ZlKCksIDExMDApOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBSYW5kb20gZmlyZXdvcmtzIGV2ZXJ5IDUtMTIgc2Vjb25kcwogICAgICAgIGZ1bmN0aW9uIHNjaGVkdWxlRmlyZXdvcmsoKSB7CiAgICAgICAgICAgIGNvbnN0IHggPSBNYXRoLnJhbmRvbSgpICogd2luZG93LmlubmVyV2lkdGggKiAwLjggKyB3aW5kb3cuaW5uZXJXaWR0aCAqIDAuMTsKICAgICAgICAgICAgY29uc3QgeSA9IE1hdGgucmFuZG9tKCkgKiB3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjUgKyA1MDsKICAgICAgICAgICAgY3JlYXRlRmlyZXdvcmsoeCwgeSk7CiAgICAgICAgICAgIHNldFRpbWVvdXQoc2NoZWR1bGVGaXJld29yaywgNTAwMCArIE1hdGgucmFuZG9tKCkgKiA3MDAwKTsKICAgICAgICB9CiAgICAgICAgc2V0VGltZW91dChzY2hlZHVsZUZpcmV3b3JrLCA0MDAwKTsKICAgICAgICAKICAgICAgICAvLyBGaXJld29yayBvbiBzcGluIGJ1dHRvbiBjbGljawogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGluQnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICBjcmVhdGVGaXJld29yayhyZWN0LmxlZnQgKyByZWN0LndpZHRoLzIsIHJlY3QudG9wKTsKICAgICAgICB9KTsKICAgICAgICAKICAgICAgICAvLyBWaWRlbyBwbGF5IGJ1dHRvbiAtIGZpcmV3b3JrcyArIGNvbWluZyBzb29uIG1lc3NhZ2UKICAgICAgICBmdW5jdGlvbiBwbGF5VmlkZW8oZWxlbWVudCkgewogICAgICAgICAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgLy8gQ3JlYXRlIG11bHRpcGxlIGZpcmV3b3JrcwogICAgICAgICAgICBjcmVhdGVGaXJld29yayhyZWN0LmxlZnQgKyByZWN0LndpZHRoLzIsIHJlY3QudG9wICsgcmVjdC5oZWlnaHQvMik7CiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gY3JlYXRlRmlyZXdvcmsocmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAqIDAuMywgcmVjdC50b3AgKyByZWN0LmhlaWdodCAqIDAuNCksIDIwMCk7CiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gY3JlYXRlRmlyZXdvcmsocmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAqIDAuNywgcmVjdC50b3AgKyByZWN0LmhlaWdodCAqIDAuNCksIDQwMCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBTaG93IGNvbWluZyBzb29uIG1lc3NhZ2UKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZGVvTWVzc2FnZScpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gQ3JlYXRlIHNwYXJrbGUgYnVyc3QKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMjsgaSsrKSB7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFya2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICAgICAgc3BhcmtsZS5jbGFzc05hbWUgPSAnc3BhcmtsZSc7CiAgICAgICAgICAgICAgICAgICAgc3BhcmtsZS50ZXh0Q29udGVudCA9IFsn4pyoJywgJ+KtkCcsICfwn5KrJywgJ/CfjJ8nLCAn4pymJ11bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNSldOwogICAgICAgICAgICAgICAgICAgIHNwYXJrbGUuc3R5bGUubGVmdCA9IChyZWN0LmxlZnQgKyBNYXRoLnJhbmRvbSgpICogcmVjdC53aWR0aCkgKyAncHgnOwogICAgICAgICAgICAgICAgICAgIHNwYXJrbGUuc3R5bGUudG9wID0gKHJlY3QudG9wICsgTWF0aC5yYW5kb20oKSAqIHJlY3QuaGVpZ2h0KSArICdweCc7CiAgICAgICAgICAgICAgICAgICAgc3BhcmtsZS5zdHlsZS5jb2xvciA9IE1hdGgucmFuZG9tKCkgPiAwLjUgPyAndmFyKC0tZ29sZCknIDogJ3ZhcigtLXJvc2UpJzsKICAgICAgICAgICAgICAgICAgICBzcGFya2xlLnN0eWxlLmZvbnRTaXplID0gJzEuNXJlbSc7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzcGFya2xlKTsKICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHNwYXJrbGUucmVtb3ZlKCksIDEwMDApOwogICAgICAgICAgICAgICAgfSwgaSAqIDgwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBTUEFSS0xFIFRSQUlMIG9uIG1vdXNlIG1vdmUgKHRocm90dGxlZCkKICAgICAgICBsZXQgc3BhcmtsZVRocm90dGxlID0gZmFsc2U7CiAgICAgICAgY29uc3Qgc3BhcmtsZUVtb2ppcyA9IFsn4pyoJywgJ+KtkCcsICfwn5KrJywgJ+KcpicsICfimIUnXTsKICAgICAgICAKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmIChzcGFya2xlVGhyb3R0bGUpIHJldHVybjsKICAgICAgICAgICAgaWYgKE1hdGgucmFuZG9tKCkgPiAwLjMpIHJldHVybjsgLy8gT25seSAzMCUgb2YgbW92ZXMKICAgICAgICAgICAgCiAgICAgICAgICAgIHNwYXJrbGVUaHJvdHRsZSA9IHRydWU7CiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gc3BhcmtsZVRocm90dGxlID0gZmFsc2UsIDEwMCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBjb25zdCBzcGFya2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgIHNwYXJrbGUuY2xhc3NOYW1lID0gJ3NwYXJrbGUnOwogICAgICAgICAgICBzcGFya2xlLnRleHRDb250ZW50ID0gc3BhcmtsZUVtb2ppc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBzcGFya2xlRW1vamlzLmxlbmd0aCldOwogICAgICAgICAgICBzcGFya2xlLnN0eWxlLmxlZnQgPSBlLmNsaWVudFggKyAncHgnOwogICAgICAgICAgICBzcGFya2xlLnN0eWxlLnRvcCA9IGUuY2xpZW50WSArICdweCc7CiAgICAgICAgICAgIHNwYXJrbGUuc3R5bGUuY29sb3IgPSBNYXRoLnJhbmRvbSgpID4gMC41ID8gJ3ZhcigtLWdvbGQpJyA6ICd2YXIoLS1yb3NlKSc7CiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3BhcmtsZSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHNwYXJrbGUucmVtb3ZlKCksIDEwMDApOwogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIC8vIENFTEVCUkFUSU9OIEJVUlNUIG9uIGVuZXJneSBzZWxlY3Rpb24KICAgICAgICBmdW5jdGlvbiBjZWxlYnJhdGlvbkJ1cnN0KGVsZW1lbnQpIHsKICAgICAgICAgICAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgIGNvbnN0IGNlbnRlclggPSByZWN0LmxlZnQgKyByZWN0LndpZHRoIC8gMjsKICAgICAgICAgICAgY29uc3QgY2VudGVyWSA9IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gQ3JlYXRlIG1pbmkgZmlyZXdvcmsKICAgICAgICAgICAgY3JlYXRlRmlyZXdvcmsoY2VudGVyWCwgY2VudGVyWSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBDcmVhdGUgcmluZyBvZiBzcGFya2xlcwogICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDg7IGkrKykgewogICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BhcmtsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICAgICAgICAgIHNwYXJrbGUuY2xhc3NOYW1lID0gJ3NwYXJrbGUnOwogICAgICAgICAgICAgICAgICAgIHNwYXJrbGUudGV4dENvbnRlbnQgPSAn4pyoJzsKICAgICAgICAgICAgICAgICAgICBzcGFya2xlLnN0eWxlLmxlZnQgPSAoY2VudGVyWCArIChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIDEwMCkgKyAncHgnOwogICAgICAgICAgICAgICAgICAgIHNwYXJrbGUuc3R5bGUudG9wID0gKGNlbnRlclkgKyAoTWF0aC5yYW5kb20oKSAtIDAuNSkgKiA2MCkgKyAncHgnOwogICAgICAgICAgICAgICAgICAgIHNwYXJrbGUuc3R5bGUuY29sb3IgPSAndmFyKC0tZ29sZCknOwogICAgICAgICAgICAgICAgICAgIHNwYXJrbGUuc3R5bGUuZm9udFNpemUgPSAnMS41cmVtJzsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNwYXJrbGUpOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gc3BhcmtsZS5yZW1vdmUoKSwgMTAwMCk7CiAgICAgICAgICAgICAgICB9LCBpICogNTApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIEFkZCBjZWxlYnJhdGlvbiB0byBJIEFNIGJ1dHRvbnMKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaWFtLWJ0bicpLmZvckVhY2goYnRuID0+IHsKICAgICAgICAgICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjZWxlYnJhdGlvbkJ1cnN0KHRoaXMpOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIDwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4=","embed":""}
Momentum Awaits... Are You Ready? | The SHE E~Boss Experience
She believed she could, so she did โœฆ Fortune favors the bold โœฆ Your next chapter is waiting to be written โœฆ Sovereignty begins with a single decision โœฆ The universe rewards those who show up โœฆ Your legacy is calling ~ will you answer? โœฆ Audacity is the currency of queens โœฆ 2026 belongs to the intentional โœฆ I came. Kept calm. Carried on. Now what? โœฆ She believed she could, so she did โœฆ Fortune favors the bold โœฆ Your next chapter is waiting to be written โœฆ Sovereignty begins with a single decision โœฆ The universe rewards those who show up โœฆ Your legacy is calling ~ will you answer? โœฆ Audacity is the currency of queens โœฆ 2026 belongs to the intentional โœฆ I came. Kept calm. Carried on. Now what? โœฆ
โœฆ Momentum Awaits โœฆ

The question isn't what's coming... It's WHO you'll become.

2026 is not just a year. It's a portal. A threshold. An invitation.
But first ~ tell the universe who you are.

โœฆ Spin to Discover Your Energy โœฆ

โœจ
I AM...
Spin to reveal your 2026 energy

~ or choose your energy directly ~

โœฆ A Message For You โœฆ

Before You Step Into 2026...

Let me tell you what's really waiting on the other side

โ–ถ

2:47

"The Sovereign Momentum Manifesto"

โœจ Video launching January 2026 ~ But your momentum starts NOW! โœจ

"This isn't just another year. This is the year you stop renting space in someone else's algorithm and start owning your digital land."

~ Nightingale Mukasa, The SHE E~Boss Solutionist
โœฆ Enter 2026 โœฆ

Your pathway awaits on the other side

~ or if you're not quite ready ~

Okay fine, I'm ready ๐Ÿ’•

Not quite finding your tribe?

Not quite feeling the vibe? Getting strong "I accidentally RSVP'd to my wife's manifestation brunch" energy? ๐Ÿฅ‚โœจ

๐Ÿ”ฅ

The Father's Hearth

"Ah! There you are, good sir! We heard the tapping!"

You are indeed a rare specimen in these parts ~ a masculine intellectual non~AI human. Rest assured, you have NOT stumbled into a parallel dimension, accidentally subscribed to a January journaling workshop, or been mysteriously teleported to a vision board brunch.

You've simply arrived... fashionably early. Like a gentleman does.

"You're not lost. You're not confused. You're pioneering."

The council of kings, builders, and visionary men is being assembled as we speak. Leave your smoke signal below and we shall send word when the fire is lit, the armchairs are warmed, and yes ~ there will be whiskey. ๐Ÿฅƒ

โœฆ SEND SMOKE SIGNAL โœฆ

(Yes, we verified. You are human. The AI would never have asked.
They're too busy writing poetry about feelings.) ๐Ÿค–๐Ÿ“

Build your empire brick by brick โœฆ Clarity is the new currency โœฆ Your digital land is waiting โœฆ Stop renting ~ start owning โœฆ The sovereign architect builds with intention โœฆ Every queen needs her castle โœฆ 2026 is your year of manifestation โœฆ From digital sharecropper to sovereign architect โœฆ Build your empire brick by brick โœฆ Clarity is the new currency โœฆ Your digital land is waiting โœฆ Stop renting ~ start owning โœฆ The sovereign architect builds with intention โœฆ Every queen needs her castle โœฆ 2026 is your year of manifestation โœฆ From digital sharecropper to sovereign architect โœฆ

THE SHE E~BOSS SOLUTIONIST

Founder, The Sovereign Architects

MOMENTUM DIGITAL MEDIA

Dynamic Paradigms & Mentorship Success Academies

Solutions ยท Services ยท Software ยท Strategies ยท Systems

๐Ÿซ–

Seriously?

This isn't the Casino of Life, darling.

The universe doesn't reward indecision.

You still have options, love:

I CAME. KEPT CALM. CARRIED ON. NOW WHAT?

(The wheel will reset at midnight. Patience, grasshopper.)

Image Gallery Grid
T
Please Check Your Email
We Will Be Following Up Shortly
*
*
*

warning