ZGlmZiAtcnUgZXNlYXJjaC0wLjcuMS1yNi9lbi9lc3luYy4xIGVzZWFyY2gtMC43LjEtcjcvZW4vZXN5bmMuMQotLS0gZXNlYXJjaC0wLjcuMS1yNi9lbi9lc3luYy4xCTIwMDktMDEtMDIgMTA6NTM6MzkuMDAwMDAwMDAwIC0wNjAwCisrKyBlc2VhcmNoLTAuNy4xLXI3L2VuL2VzeW5jLjEJMjAwOS0wMS0wMiAxMDo0NTowMy4wMDAwMDAwMDAgLTA2MDAKQEAgLTEsMzQgKzEsMzYgQEAKLS5USCBlc2VhcmNoIDEgIkZlYnJ1YXJ5IDEzLCAyMDA1IiAiZXN5bmMiCi0KKy5USCAiZXNlYXJjaCIgIjEiICJGZWJydWFyeSAxMywgMjAwNSIgImVzeW5jIiAiIgogLlNIICJOQU1FIgotZXN5bmMgXC0gQ2FsbHMgJ2VtZXJnZSAtLXN5bmMnIGFuZCAnZXVwZGF0ZWRiJyBhbmQgc2hvd3MgdXBkYXRlcworZXN5bmMgXC0gQ2FsbHMgJ2VtZXJnZSBcLVwtc3luYycgYW5kICdldXBkYXRlZGInIGFuZCBzaG93cyB1cGRhdGVzCiAKIC5TSCAiU1lOT1BTSVMiCiAuQiBlc3luYwogWyBvcHRpb25zIF0KIAogLlNIICJERVNDUklQVElPTiIKLWVzeW5jIGZpcnN0IGltcG9ydHMgdGhlIG9sZCBlc2VhcmNoIGluZGV4LCB0aGVuIGNhbGxzICdlbWVyZ2UgLS1zeW5jJworZXN5bmMgZmlyc3QgaW1wb3J0cyB0aGUgb2xkIGVzZWFyY2ggaW5kZXgsIHRoZW4gY2FsbHMgJ2VtZXJnZSBcLVwtc3luYycKIChvciBhbiBhbHRlcm5hdGl2ZSBjb21tYW5kOiBzZWUgb3B0aW9ucykgYW5kICdldXBkYXRlZGInLiBUaGVuIGl0CiBzaG93cyB0aGUgbmV3IGFuZCB0aGUgdXBkYXRlZCBwYWNrYWdlcy4KIAogLlNIICJPUFRJT05TIgotLlRQCisuVFAgCiAuQiBcLVwtaGVscCwgXC1oCiBQcmludCBoZWxwIG1lc3NhZ2UKLS5UUAorLlRQIAogLkIgXC1cLXdlYnJzeW5jLCBcLXcKLVVzZSAnZW1lcmdlLXdlYnJzeW5jJyBpbnN0ZWFkIG9mICdlbWVyZ2UgLS1zeW5jJwotLlRQCitVc2UgJ2VtZXJnZVwtd2VicnN5bmMnIGluc3RlYWQgb2YgJ2VtZXJnZSBcLVwtc3luYycKKy5UUCAKIC5CIFwtXC1tZXRhZGF0YSwgXC1tCi1Vc2UgJ2VtZXJnZSAtLW1ldGFkYXRhJyBpbnN0ZWFkIG9mICdlbWVyZ2UgLS1zeW5jJwotLlRQCitVc2UgJ2VtZXJnZSBcLVwtbWV0YWRhdGEnIGluc3RlYWQgb2YgJ2VtZXJnZSBcLVwtc3luYycKKy5UUCAKIC5CIFwtXC1ub2NvbG9yLCBcLW4KIERvbid0IHVzZSBBTlNJIGNvZGVzIGZvciBjb2xvcmVkIG91dHB1dAotLlRQCisuVFAgCisuQiAgXC1cLXF1aWV0LCBcXC1xCitMZXNzIG91dHB1dCAoaW1wbGllcyBcLVwtbm9zcGlubmVyKQorLlRQIAogLkIgXC1cLXZlcmJvc2UsIFwtdgogVmVyYm9zZSBvdXRwdXQKLS5UUAorLlRQIAogLkIgXC1cLW5vc3Bpbm5lciwgXK1zCiBEb24ndCBkaXNwbGF5IHRoZSByZW1haW5pbmcgaW5kZXggY291bnQKIApkaWZmIC1ydSBlc2VhcmNoLTAuNy4xLXI2L2VzeW5jLnB5IGVzZWFyY2gtMC43LjEtcjcvZXN5bmMucHkKLS0tIGVzZWFyY2gtMC43LjEtcjYvZXN5bmMucHkJMjAwOS0wMS0wMiAxMDo1Mzo0MC4wMDAwMDAwMDAgLTA2MDAKKysrIGVzZWFyY2gtMC43LjEtcjcvZXN5bmMucHkJMjAwOS0wMS0wMiAxMDo1MDo1OS4wMDAwMDAwMDAgLTA2MDAKQEAgLTM1LDYgKzM1LDcgQEAKIGV1cGRhdGVkYl9leHRyYV9vcHRpb25zID0gIiIKIHNob3d0aXRsZXMgPSAibm90aXRsZXMiIG5vdCBpbiBwb3J0YWdlLmZlYXR1cmVzCiB2ZXJib3NlID0gRmFsc2UKK3F1aWV0ID0gRmFsc2UKIAogZGVmIHVzYWdlKCk6CiAgICAgcHJpbnQgImVzeW5jICgwLjcuMSkgLSBDYWxscyAnZW1lcmdlIHN5bmMnIGFuZCAnZXVwZGF0ZWRiJyBhbmQgc2hvd3MgdXBkYXRlcyIKQEAgLTUzLDYgKzU0LDkgQEAKICAgICBwcmludCBkYXJrZ3JlZW4oIiAgLS1ub2NvbG9yIikgKyAiLCAiICsgZGFya2dyZWVuKCItbiIpCiAgICAgcHJpbnQgIiAgICBEb24ndCB1c2UgQU5TSSBjb2RlcyBmb3IgY29sb3JlZCBvdXRwdXQiCiAgICAgcHJpbnQgIiIKKyAgICBwcmludCBkYXJrZ3JlZW4oIiAgLS1xdWlldCIpICsgIiwgIiArIGRhcmtncmVlbigiLXEiKQorICAgIHByaW50ICIgICAgTGVzcyBvdXRwdXQgKGltcGxpZXMgLS1ub3NwaW5uZXIpIgorICAgIHByaW50ICIiCiAgICAgcHJpbnQgZGFya2dyZWVuKCIgIC0tdmVyYm9zZSIpICsgIiwgIiArIGRhcmtncmVlbigiLXYiKQogICAgIHByaW50ICIgICAgVmVyYm9zZSBvdXRwdXQiCiAgICAgcHJpbnQgIiIKQEAgLTYzLDcgKzY3LDcgQEAKICAgICBzeXMuZXhpdCgwKQogCiB0cnk6Ci0gICAgb3B0cyA9IGdldG9wdChzeXMuYXJndlsxOl0sICJod21udnMiLCBbImhlbHAiLCAid2VicnN5bmMiLCAibm9jb2xvciIsICJ2ZXJib3NlIiwgIm1ldGFkYXRhIiwgIm5vc3Bpbm5lciJdKQorICAgIG9wdHMgPSBnZXRvcHQoc3lzLmFyZ3ZbMTpdLCAiaHdtbnZzIiwgWyJoZWxwIiwgIndlYnJzeW5jIiwgIm5vY29sb3IiLCAicXVpZXQiLCAidmVyYm9zZSIsICJtZXRhZGF0YSIsICJub3NwaW5uZXIiXSkKIGV4Y2VwdCBHZXRvcHRFcnJvciwgZXJyb3I6CiAgICAgcHJpbnQgcmVkKCIgKiBFcnJvcjoiKSwgZXJyb3IsICIoc2VlIiwgZGFya2dyZWVuKCItLWhlbHAiKSwgImZvciBhbGwgb3B0aW9ucykiCiAgICAgcHJpbnQKQEAgLTgyLDggKzg2LDEzIEBACiAgICAgICAgIGVvcHRpb25zID0gIi1uIgogICAgICAgICBub2NvbG9yKCkKICAgICAgICAgc2hvd3RpdGxlcyA9IEZhbHNlCisgICAgZWxpZiBhcmcgaW4gKCItcSIsICItLXF1aWV0Iik6CisgICAgICAgIGV1cGRhdGVkYl9leHRyYV9vcHRpb25zID0gIi1xIgorICAgICAgICBxdWlldCA9IFRydWUKKyAgICAgICAgdmVyYm9zZSA9IEZhbHNlCiAgICAgZWxpZiBhcmcgaW4gKCItdiIsICItLXZlcmJvc2UiKToKICAgICAgICAgdmVyYm9zZSA9IFRydWUKKyAgICAgICAgcXVpZXQgPSBGYWxzZQogICAgIGVsaWYgYXJnIGluICgiLXMiLCAiLS1ub3NwaW5uZXIiKToKICAgICAgICAgZXVwZGF0ZWRiX2V4dHJhX29wdGlvbnMgPSAiLXEiCiAKQEAgLTkyLDYgKzEwMSw3IEBACiAgICAgZ2xvYmFsIHNob3d0aXRsZXMKICAgICBpZiBzaG93dGl0bGVzOgogICAgICAgICB4dGVybVRpdGxlKG1zZykKKyAgICBpZiBxdWlldDogcmV0dXJuCiAgICAgcHJpbnQgZ3JlZW4oIiAqIiksIG1zZwogCiBkZWYgb3V0b2ZkYXRlZXJyb3IoKToKQEAgLTEzMSw5ICsxNDEsOSBAQAogCiB0cmVlX29sZCA9IGdldHRyZWUoIm9sZCIpCiAKLWVtc2coIkRvaW5nICciICsgc3luY3Byb2dyYW0gKyAiJyBub3ciKQoraWYgbm90IHF1aWV0OiBlbXNnKCJEb2luZyAnIiArIHN5bmNwcm9ncmFtICsgIicgbm93IikKIAotaWYgdmVyYm9zZSA9PSBUcnVlOgoraWYgdmVyYm9zZToKICAgICBlcnJvcmNvZGUgPSBvcy5zeXN0ZW0oc3luY3Byb2dyYW0gKyAiIHwgdGVlICIgKyBsb2dmaWxlX3N5bmMgKyAiIDI+JjEiKQogZWxzZToKICAgICBlcnJvcmNvZGUgPSBvcy5zeXN0ZW0oc3luY3Byb2dyYW0gKyAiID4gIiArIGxvZ2ZpbGVfc3luYyArICIgMj4mMSIpCkBAIC0xNDMsMTYgKzE1MywxNyBAQAogICAgIHByaW50ICIiCiAgICAgc3lzLmV4aXQoMSkKIAotcHJpbnQgIiIKK2lmIG5vdCBxdWlldDoKKyAgICBwcmludCAiIgorICAgIGVtc2coIkRvaW5nICdldXBkYXRlZGInIG5vdyIpCisgICAgcHJpbnQgIiIKIAotZW1zZygiRG9pbmcgJ2V1cGRhdGVkYicgbm93IikKLXByaW50ICIiCiBpZiBvcy5zeXN0ZW0oIi91c3Ivc2Jpbi9ldXBkYXRlZGIgIiArIGVvcHRpb25zICsgIiAiICsgZXVwZGF0ZWRiX2V4dHJhX29wdGlvbnMpICE9IDA6CiAgICAgcHJpbnQgIiIKICAgICBwcmludCByZWQoIiAqIEVycm9yOiIpLCAiZXVwZGF0ZWRiIGZhaWxlZCIKICAgICBzeXMuZXhpdCgxKQogCi1wcmludCAiIgoraWYgbm90IHF1aWV0OiBwcmludCAiIgogCiB0cmVlX25ldyA9IGdldHRyZWUoIm5ldyIpCiAKQEAgLTE4MSw2ICsxOTIsNyBAQAogICAgIGlmIChwa2cgbm90IGluIG9sZF9rZXlzKSBvciAob2xkW3BrZ10gIT0gbmV3W3BrZ10pOgogICAgICAgICBvcy5zeXN0ZW0oIi91c3IvYmluL2VzZWFyY2ggIiArIGVvcHRpb25zICsgIiAtRmMgXiIgKyBwa2cgKyAiJCB8IGhlYWQgLW4xIikKICAgICAgICAgaGFzcGtnID0gVHJ1ZQorICAgICAgICBicmVhawogCiBpZiBub3QgaGFzcGtnOgogICAgIGVtc2coIk5vIHVwZGF0ZXMgZm91bmQiKQo=