ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDlmMWE2MjkuLmJlMDdhNGUgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTkxLDM1ICsxOTEsMTIgQEAKIC9saWIvZGFydC8qKi9wYWNrYWdlcwogL2xpYi9kYXJ0LyoqLy5wdWIvCiAvbGliL2RhcnQvKiovcHVic3BlYy5sb2NrCi0vbGliL2RlbHBoaS9zcmMvKi5kY3UKLS9saWIvZGVscGhpL3Rlc3QvKi5pZGVudGNhY2hlCi0vbGliL2RlbHBoaS90ZXN0LyoubG9jYWwKLS9saWIvZGVscGhpL3Rlc3QvKi5kY3UKLS9saWIvZGVscGhpL3Rlc3QvKi4yMDA3Ci0vbGliL2RlbHBoaS90ZXN0LyouZHByb2oKLS9saWIvZGVscGhpL3Rlc3QvKi5kcHJvagotL2xpYi9kZWxwaGkvdGVzdC9jb2RlZ2VuLyouYmF0Ci0vbGliL2RlbHBoaS90ZXN0L3NraXAvKi5sb2NhbAotL2xpYi9kZWxwaGkvdGVzdC9za2lwLyouaWRlbnRjYWNoZQotL2xpYi9kZWxwaGkvdGVzdC9za2lwLyouaWRlbnRjYWNoZQotL2xpYi9kZWxwaGkvdGVzdC9za2lwLyouZHByb2oKLS9saWIvZGVscGhpL3Rlc3Qvc2tpcC8qLmRwcm9qCi0vbGliL2RlbHBoaS90ZXN0L3NraXAvKi4yMDA3Ci0vbGliL2RlbHBoaS90ZXN0L3NlcmlhbGl6ZXIvKi5pZGVudGNhY2hlCi0vbGliL2RlbHBoaS90ZXN0L3NlcmlhbGl6ZXIvKi5kcHJvagotL2xpYi9kZWxwaGkvdGVzdC9zZXJpYWxpemVyLyoubG9jYWwKLS9saWIvZGVscGhpL3Rlc3Qvc2VyaWFsaXplci8qLjIwMDcKLS9saWIvZGVscGhpL3Rlc3Qvc2VyaWFsaXplci8qLmRjdQotL2xpYi9kZWxwaGkvdGVzdC9tdWx0aXBsZXhlZC8qLmRwcm9qCi0vbGliL2RlbHBoaS90ZXN0L211bHRpcGxleGVkLyouMjAwNwotL2xpYi9kZWxwaGkvdGVzdC9tdWx0aXBsZXhlZC8qLmxvY2FsCi0vbGliL2RlbHBoaS90ZXN0L211bHRpcGxleGVkLyouaWRlbnRjYWNoZQotL2xpYi9kZWxwaGkvdGVzdC9tdWx0aXBsZXhlZC8qLmRjdQotL2xpYi9kZWxwaGkvdGVzdC90eXBlcmVnaXN0cnkvKi4yMDA3Ci0vbGliL2RlbHBoaS90ZXN0L3R5cGVyZWdpc3RyeS8qLmRwcm9qCi0vbGliL2RlbHBoaS90ZXN0L3R5cGVyZWdpc3RyeS8qLmlkZW50Y2FjaGUKLS9saWIvZGVscGhpL3Rlc3QvdHlwZXJlZ2lzdHJ5LyoubG9jYWwKLS9saWIvZGVscGhpL3Rlc3QvdHlwZXJlZ2lzdHJ5LyouZGN1CisvbGliL2RlbHBoaS8qKi8qLmlkZW50Y2FjaGUKKy9saWIvZGVscGhpLyoqLyoubG9jYWwKKy9saWIvZGVscGhpLyoqLyouZGN1CisvbGliL2RlbHBoaS8qKi8qLjIwMDcKKy9saWIvZGVscGhpLyoqLyouZHByb2oKKy9saWIvZGVscGhpLyoqL2NvZGVnZW4vKi5iYXQKIC9saWIvZXJsLy5ldW5pdAogL2xpYi9lcmwvLmdlbmVyYXRlZAogL2xpYi9lcmwvLnJlYmFyLwpAQCAtMzY3LDE1ICszNDQsMTIgQEAKIC90dXRvcmlhbC9kYXJ0LyoqL3BhY2thZ2VzCiAvdHV0b3JpYWwvZGFydC8qKi8ucHViLwogL3R1dG9yaWFsL2RhcnQvKiovcHVic3BlYy5sb2NrCi0vdHV0b3JpYWwvZGVscGhpLyouZHNrCi0vdHV0b3JpYWwvZGVscGhpLyoubG9jYWwKLS90dXRvcmlhbC9kZWxwaGkvKi50dnNjb25maWcKLS90dXRvcmlhbC9kZWxwaGkvRGVscGhpQ2xpZW50L2RjdQotL3R1dG9yaWFsL2RlbHBoaS9EZWxwaGlTZXJ2ZXIvZGN1Ci0vdHV0b3JpYWwvZGVscGhpL0RlbHBoaUNsaWVudC8qLmxvY2FsCi0vdHV0b3JpYWwvZGVscGhpL0RlbHBoaUNsaWVudC8qLmlkZW50Y2FjaGUKLS90dXRvcmlhbC9kZWxwaGkvRGVscGhpU2VydmVyLyouaWRlbnRjYWNoZQotL3R1dG9yaWFsL2RlbHBoaS9EZWxwaGlTZXJ2ZXIvKi5sb2NhbAorL3R1dG9yaWFsL2RlbHBoaS8qKi8qLmRzaworL3R1dG9yaWFsL2RlbHBoaS8qKi8qLmxvY2FsCisvdHV0b3JpYWwvZGVscGhpLyoqLyoudHZzY29uZmlnCisvdHV0b3JpYWwvZGVscGhpLyoqL2RjdQorL3R1dG9yaWFsL2RlbHBoaS8qKi8qLmxvY2FsCisvdHV0b3JpYWwvZGVscGhpLyoqLyouaWRlbnRjYWNoZQogL3R1dG9yaWFsL2dvL2dvcGF0aAogL3R1dG9yaWFsL2dvL2dvLXR1dG9yaWFsCiAvdHV0b3JpYWwvZ28vY2FsY3VsYXRvci1yZW1vdGUKZGlmZiAtLWdpdCBhL2NvbXBpbGVyL2NwcC9zcmMvdGhyaWZ0L2dlbmVyYXRlL3RfZGVscGhpX2dlbmVyYXRvci5jYyBiL2NvbXBpbGVyL2NwcC9zcmMvdGhyaWZ0L2dlbmVyYXRlL3RfZGVscGhpX2dlbmVyYXRvci5jYwppbmRleCA0ZGIxY2Y3Li5jN2YyZjQxIDEwMDY0NAotLS0gYS9jb21waWxlci9jcHAvc3JjL3RocmlmdC9nZW5lcmF0ZS90X2RlbHBoaV9nZW5lcmF0b3IuY2MKKysrIGIvY29tcGlsZXIvY3BwL3NyYy90aHJpZnQvZ2VuZXJhdGUvdF9kZWxwaGlfZ2VuZXJhdG9yLmNjCkBAIC02NDIsMTAgKzY0MiwyMSBAQAogCiAgIC8vIHJlc2VydmVkL3ByZWRlZmluZWQgdmFyaWFibGVzIGFuZCB0eXBlcyAobG93ZXJjYXNlISkKICAgZGVscGhpX2tleXdvcmRzWyJyZXN1bHQiXSA9IDE7CisgIGRlbHBoaV9rZXl3b3Jkc1sic3lzdGVtIl0gPSAxOworICBkZWxwaGlfa2V5d29yZHNbInN5c3V0aWxzIl0gPSAxOworICBkZWxwaGlfa2V5d29yZHNbInRocmlmdCJdID0gMTsKICAgZGVscGhpX2tleXdvcmRzWyJ0Ynl0ZXMiXSA9IDE7CiAgIGRlbHBoaV9rZXl3b3Jkc1sidG9iamVjdCJdID0gMTsKICAgZGVscGhpX2tleXdvcmRzWyJ0Y2xhc3MiXSA9IDE7CiAgIGRlbHBoaV9rZXl3b3Jkc1sidGludGVyZmFjZWRvYmplY3QiXSA9IDE7CisgIGRlbHBoaV9rZXl3b3Jkc1siYW5zaXN0cmluZyJdID0gMTsKKyAgZGVscGhpX2tleXdvcmRzWyJzdHJpbmciXSA9IDE7CisgIGRlbHBoaV9rZXl3b3Jkc1siYm9vbGVhbiJdID0gMTsKKyAgZGVscGhpX2tleXdvcmRzWyJzaG9ydGludCJdID0gMTsKKyAgZGVscGhpX2tleXdvcmRzWyJzbWFsbGludCJdID0gMTsKKyAgZGVscGhpX2tleXdvcmRzWyJpbnRlZ2VyIl0gPSAxOworICBkZWxwaGlfa2V5d29yZHNbImludDY0Il0gPSAxOworICBkZWxwaGlfa2V5d29yZHNbImRvdWJsZSJdID0gMTsKIAogICBkZWxwaGlfcmVzZXJ2ZWRfbWV0aG9kWyJjcmVhdGUiXSA9IDE7CiAgIGRlbHBoaV9yZXNlcnZlZF9tZXRob2RbImZyZWUiXSA9IDE7CkBAIC03NTIsNyArNzYzLDcgQEAKICAgICB1bml0bmFtZSA9IGluY2x1ZGVzW2ldLT5nZXRfbmFtZSgpOwogICAgIG5zbmFtZSA9IGluY2x1ZGVzW2ldLT5nZXRfbmFtZXNwYWNlKCJkZWxwaGkiKTsKICAgICBpZiAoIiIgIT0gbnNuYW1lKSB7Ci0gICAgICB1bml0bmFtZSA9IG5zbmFtZTsKKyAgICAgIHVuaXRuYW1lID0gbm9ybWFsaXplX25hbWUobnNuYW1lKTsKICAgICB9CiAgICAgYWRkX2RlbHBoaV91c2VzX2xpc3QodW5pdG5hbWUpOwogICB9CkBAIC03NzIsNiArNzgzLDggQEAKICAgICB9CiAgIH0KIAorICB1bml0bmFtZSA9IG5vcm1hbGl6ZV9uYW1lKHVuaXRuYW1lKTsKKyAgCiAgIHN0ZDo6c3RyaW5nIGZfbmFtZSA9IGdldF9vdXRfZGlyKCkgKyAiLyIgKyB1bml0bmFtZSArICIucGFzIjsKICAgc3RkOjpvZnN0cmVhbSBmX2FsbDsKIApAQCAtMTcwMiw3ICsxNzE1LDcgQEAKICAgICAgIGZvciAobV9pdGVyID0gbWVtYmVycy5iZWdpbigpOyBtX2l0ZXIgIT0gbWVtYmVycy5lbmQoKTsgKyttX2l0ZXIpIHsKICAgICAgICAgaWYgKCgqbV9pdGVyKS0+Z2V0X3JlcSgpICE9IHRfZmllbGQ6OlRfUkVRVUlSRUQpIHsKICAgICAgICAgICBpc3NldF9uYW1lID0gIl9faXNzZXRfIiArIHByb3BfbmFtZSgqbV9pdGVyLCBpc19leGNlcHRpb24pOwotICAgICAgICAgIGluZGVudChvdXQpIDw8ICJwcm9wZXJ0eSAiIDw8IGlzc2V0X25hbWUgPDwgIjogQm9vbGVhbiByZWFkIEdldCIgPDwgaXNzZXRfbmFtZSA8PCAiOyIKKyAgICAgICAgICBpbmRlbnQob3V0KSA8PCAicHJvcGVydHkgIiA8PCBpc3NldF9uYW1lIDw8ICI6IFN5c3RlbS5Cb29sZWFuIHJlYWQgR2V0IiA8PCBpc3NldF9uYW1lIDw8ICI7IgogICAgICAgICAgICAgICAgICAgICAgIDw8IGVuZGw7CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTE3NTEsNyArMTc2NCw3IEBACiAgICAgZm9yIChtX2l0ZXIgPSBtZW1iZXJzLmJlZ2luKCk7IG1faXRlciAhPSBtZW1iZXJzLmVuZCgpOyArK21faXRlcikgewogICAgICAgaWYgKCgqbV9pdGVyKS0+Z2V0X3JlcSgpICE9IHRfZmllbGQ6OlRfUkVRVUlSRUQpIHsKICAgICAgICAgaXNzZXRfbmFtZSA9ICJGX19pc3NldF8iICsgcHJvcF9uYW1lKCptX2l0ZXIsIGlzX2V4Y2VwdGlvbik7Ci0gICAgICAgIGluZGVudChvdXQpIDw8IGlzc2V0X25hbWUgPDwgIjogQm9vbGVhbjsiIDw8IGVuZGw7CisgICAgICAgIGluZGVudChvdXQpIDw8IGlzc2V0X25hbWUgPDwgIjogU3lzdGVtLkJvb2xlYW47IiA8PCBlbmRsOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtMTc3NCw3ICsxNzg3LDcgQEAKICAgICBmb3IgKG1faXRlciA9IG1lbWJlcnMuYmVnaW4oKTsgbV9pdGVyICE9IG1lbWJlcnMuZW5kKCk7ICsrbV9pdGVyKSB7CiAgICAgICBpZiAoKCptX2l0ZXIpLT5nZXRfcmVxKCkgIT0gdF9maWVsZDo6VF9SRVFVSVJFRCkgewogICAgICAgICBpc3NldF9uYW1lID0gIl9faXNzZXRfIiArIHByb3BfbmFtZSgqbV9pdGVyLCBpc19leGNlcHRpb24pOwotICAgICAgICBpbmRlbnQob3V0KSA8PCAiZnVuY3Rpb24gR2V0IiA8PCBpc3NldF9uYW1lIDw8ICI6IEJvb2xlYW47IiA8PCBlbmRsOworICAgICAgICBpbmRlbnQob3V0KSA8PCAiZnVuY3Rpb24gR2V0IiA8PCBpc3NldF9uYW1lIDw8ICI6IFN5c3RlbS5Cb29sZWFuOyIgPDwgZW5kbDsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTE4MzEsNyArMTg0NCw3IEBACiAgICAgZm9yIChtX2l0ZXIgPSBtZW1iZXJzLmJlZ2luKCk7IG1faXRlciAhPSBtZW1iZXJzLmVuZCgpOyArK21faXRlcikgewogICAgICAgaWYgKCgqbV9pdGVyKS0+Z2V0X3JlcSgpICE9IHRfZmllbGQ6OlRfUkVRVUlSRUQpIHsKICAgICAgICAgaXNzZXRfbmFtZSA9ICJfX2lzc2V0XyIgKyBwcm9wX25hbWUoKm1faXRlciwgaXNfZXhjZXB0aW9uKTsKLSAgICAgICAgaW5kZW50KG91dCkgPDwgInByb3BlcnR5ICIgPDwgaXNzZXRfbmFtZSA8PCAiOiBCb29sZWFuIHJlYWQgR2V0IiA8PCBpc3NldF9uYW1lIDw8ICI7IgorICAgICAgICBpbmRlbnQob3V0KSA8PCAicHJvcGVydHkgIiA8PCBpc3NldF9uYW1lIDw8ICI6IFN5c3RlbS5Cb29sZWFuIHJlYWQgR2V0IiA8PCBpc3NldF9uYW1lIDw8ICI7IgogICAgICAgICAgICAgICAgICAgICA8PCBlbmRsOwogICAgICAgfQogICAgIH0KQEAgLTE5NTksNyArMTk3Miw3IEBACiAgICAgaW5kZW50X3VwKCk7CiAgICAgaW5kZW50KHNfc2VydmljZSkgPDwgImlwcm90XzogSVByb3RvY29sOyIgPDwgZW5kbDsKICAgICBpbmRlbnQoc19zZXJ2aWNlKSA8PCAib3Byb3RfOiBJUHJvdG9jb2w7IiA8PCBlbmRsOwotICAgIGluZGVudChzX3NlcnZpY2UpIDw8ICJzZXFpZF86IEludGVnZXI7IiA8PCBlbmRsOworICAgIGluZGVudChzX3NlcnZpY2UpIDw8ICJzZXFpZF86IFN5c3RlbS5JbnRlZ2VyOyIgPDwgZW5kbDsKICAgICBpbmRlbnRfZG93bigpOwogCiAgICAgaW5kZW50KHNfc2VydmljZSkgPDwgInB1YmxpYyIgPDwgZW5kbDsKQEAgLTIwMjAsNyArMjAzMyw3IEBACiAgICAgICBpZiggZm9yX2FzeW5jKSB7CiAgICAgICAgIGlmIChpc192b2lkKHR0eXBlKSkgewogICAgICAgICAgICAvLyBEZWxwaGkgZm9yY2VzIHVzIHRvIHNwZWNpZnkgYSB0eXBlIHdpdGggSUZ1dHVyZTxUPiwgc28gd2UgdXNlIEludGVnZXI9MCBmb3Igdm9pZCBtZXRob2RzCi0gICAgICAgICAgaW5kZW50X2ltcGwoc19zZXJ2aWNlX2ltcGwpIDw8ICJyZXN1bHQgOj0gVFRhc2suRnV0dXJlPEludGVnZXI+KGZ1bmN0aW9uOiBJbnRlZ2VyIiA8PCBlbmRsOworICAgICAgICAgIGluZGVudF9pbXBsKHNfc2VydmljZV9pbXBsKSA8PCAicmVzdWx0IDo9IFRUYXNrLkZ1dHVyZTxTeXN0ZW0uSW50ZWdlcj4oZnVuY3Rpb246IFN5c3RlbS5JbnRlZ2VyIiA8PCBlbmRsOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgIHN0cmluZyByZXR0eXBlID0gdHlwZV9uYW1lKHR0eXBlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgIGluZGVudF9pbXBsKHNfc2VydmljZV9pbXBsKSA8PCAicmVzdWx0IDo9IFRUYXNrLkZ1dHVyZTwiIDw8IHJldHR5cGUgPDwgIj4oZnVuY3Rpb246ICIgPDwgcmV0dHlwZSA8PCBlbmRsOwpAQCAtMjI2Miw3ICsyMjc1LDcgQEAKICAgICBpbmRlbnRfdXAoKTsKICAgICBpbmRlbnQoc19zZXJ2aWNlKSA8PCAidHlwZSIgPDwgZW5kbDsKICAgICBpbmRlbnRfdXAoKTsKLSAgICBpbmRlbnQoc19zZXJ2aWNlKSA8PCAiVFByb2Nlc3NGdW5jdGlvbiA9IHJlZmVyZW5jZSB0byBwcm9jZWR1cmUoIHNlcWlkOiBJbnRlZ2VyOyBjb25zdCBpcHJvdDogIgorICAgIGluZGVudChzX3NlcnZpY2UpIDw8ICJUUHJvY2Vzc0Z1bmN0aW9uID0gcmVmZXJlbmNlIHRvIHByb2NlZHVyZSggc2VxaWQ6IFN5c3RlbS5JbnRlZ2VyOyBjb25zdCBpcHJvdDogIgogICAgICAgICAgICAgICAgICAgICAgICAgICJJUHJvdG9jb2w7IGNvbnN0IG9wcm90OiBJUHJvdG9jb2wiCiAgICAgICAgICAgICAgICAgICAgICAgPDwgKGV2ZW50c18gPyAiOyBjb25zdCBldmVudHMgOiBJUmVxdWVzdEV2ZW50cyIgOiAiIikgPDwgIik7IiA8PCBlbmRsOwogICAgIGluZGVudF9kb3duKCk7CkBAIC0yMjc3LDE1ICsyMjkwLDE1IEBACiAgIGluZGVudF91cCgpOwogICBpZiAoZXh0ZW5kcy5lbXB0eSgpKSB7CiAgICAgaW5kZW50KHNfc2VydmljZSkgPDwgImZ1bmN0aW9uIFByb2Nlc3MoIGNvbnN0IGlwcm90OiBJUHJvdG9jb2w7IGNvbnN0IG9wcm90OiBJUHJvdG9jb2w7IGNvbnN0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZXZlbnRzIDogSVByb2Nlc3NvckV2ZW50cyk6IEJvb2xlYW47IiA8PCBlbmRsOworICAgICAgICAgICAgICAgICAgICAgICAgICJldmVudHMgOiBJUHJvY2Vzc29yRXZlbnRzKTogU3lzdGVtLkJvb2xlYW47IiA8PCBlbmRsOwogICB9IGVsc2UgewogICAgIGluZGVudChzX3NlcnZpY2UpIDw8ICJmdW5jdGlvbiBQcm9jZXNzKCBjb25zdCBpcHJvdDogSVByb3RvY29sOyBjb25zdCBvcHJvdDogSVByb3RvY29sOyBjb25zdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImV2ZW50cyA6IElQcm9jZXNzb3JFdmVudHMpOiBCb29sZWFuOyByZWludHJvZHVjZTsiIDw8IGVuZGw7CisgICAgICAgICAgICAgICAgICAgICAgICAgImV2ZW50cyA6IElQcm9jZXNzb3JFdmVudHMpOiBTeXN0ZW0uQm9vbGVhbjsgcmVpbnRyb2R1Y2U7IiA8PCBlbmRsOwogICB9CiAKICAgaW5kZW50X2ltcGwoc19zZXJ2aWNlX2ltcGwpIDw8ICJmdW5jdGlvbiAiIDw8IGZ1bGxfY2xzIDw8ICIuUHJvY2VzcyggY29uc3QgaXByb3Q6IElQcm90b2NvbDsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnN0IG9wcm90OiBJUHJvdG9jb2w7IGNvbnN0IGV2ZW50cyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiBJUHJvY2Vzc29yRXZlbnRzKTogQm9vbGVhbjsiIDw8IGVuZGw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiBJUHJvY2Vzc29yRXZlbnRzKTogU3lzdGVtLkJvb2xlYW47IiA8PCBlbmRsOwogICA7CiAgIGluZGVudF9pbXBsKHNfc2VydmljZV9pbXBsKSA8PCAidmFyIiA8PCBlbmRsOwogICBpbmRlbnRfdXBfaW1wbCgpOwpAQCAtMjQxMSw3ICsyNDI0LDcgQEAKICAgc3RyaW5nIHJlc3VsdF9pbnRmbm0gPSBub3JtYWxpemVfY2xzbm0ob3JnX3Jlc3VsdG5hbWUsICJJIik7CiAKICAgaW5kZW50KHNfc2VydmljZSkgPDwgInByb2NlZHVyZSAiIDw8IGZ1bmNuYW1lCi0gICAgICAgICAgICAgICAgICAgIDw8ICJfUHJvY2Vzcyggc2VxaWQ6IEludGVnZXI7IGNvbnN0IGlwcm90OiBJUHJvdG9jb2w7IGNvbnN0IG9wcm90OiBJUHJvdG9jb2wiCisgICAgICAgICAgICAgICAgICAgIDw8ICJfUHJvY2Vzcyggc2VxaWQ6IFN5c3RlbS5JbnRlZ2VyOyBjb25zdCBpcHJvdDogSVByb3RvY29sOyBjb25zdCBvcHJvdDogSVByb3RvY29sIgogICAgICAgICAgICAgICAgICAgICA8PCAoZXZlbnRzXyA/ICI7IGNvbnN0IGV2ZW50cyA6IElSZXF1ZXN0RXZlbnRzIiA6ICIiKSA8PCAiKTsiIDw8IGVuZGw7CiAKICAgaWYgKHRmdW5jdGlvbi0+aXNfb25ld2F5KCkpIHsKQEAgLTI0MjIsNyArMjQzNSw3IEBACiAKICAgaW5kZW50X2ltcGwoc19zZXJ2aWNlX2ltcGwpCiAgICAgICA8PCAicHJvY2VkdXJlICIgPDwgZnVsbF9jbHMgPDwgIi4iIDw8IGZ1bmNuYW1lCi0gICAgICA8PCAiX1Byb2Nlc3MoIHNlcWlkOiBJbnRlZ2VyOyBjb25zdCBpcHJvdDogSVByb3RvY29sOyBjb25zdCBvcHJvdDogSVByb3RvY29sIgorICAgICAgPDwgIl9Qcm9jZXNzKCBzZXFpZDogU3lzdGVtLkludGVnZXI7IGNvbnN0IGlwcm90OiBJUHJvdG9jb2w7IGNvbnN0IG9wcm90OiBJUHJvdG9jb2wiCiAgICAgICA8PCAoZXZlbnRzXyA/ICI7IGNvbnN0IGV2ZW50cyA6IElSZXF1ZXN0RXZlbnRzIiA6ICIiKSA8PCAiKTsiIDw8IGVuZGw7CiAgIGluZGVudF9pbXBsKHNfc2VydmljZV9pbXBsKSA8PCAidmFyIiA8PCBlbmRsOwogICBpbmRlbnRfdXBfaW1wbCgpOwpAQCAtMjY4Miw3ICsyNjk1LDcgQEAKICAgfQogICBsb2NhbF92YXJzIDw8ICIgICIgPDwgbG9jYWxfdmFyIDw8IGVuZGw7CiAgIGNvdW50ZXIgPSB0bXAoIl9pIik7Ci0gIGxvY2FsX3ZhciA9IGNvdW50ZXIgKyAiOiBJbnRlZ2VyOyI7CisgIGxvY2FsX3ZhciA9IGNvdW50ZXIgKyAiOiBTeXN0ZW0uSW50ZWdlcjsiOwogICBsb2NhbF92YXJzIDw8ICIgICIgPDwgbG9jYWxfdmFyIDw8IGVuZGw7CiAKICAgaW5kZW50X2ltcGwob3V0KSA8PCBuYW1lIDw8ICIgOj0gIiA8PCB0eXBlX25hbWUodHR5cGUsIHRydWUpIDw8ICIuQ3JlYXRlOyIgPDwgZW5kbDsKQEAgLTI4MzAsNyArMjg0Myw3IEBACiAgICAgICAgIHRocm93ICJjb21waWxlciBlcnJvcjogbm8gRGVscGhpIG5hbWUgZm9yIGJhc2UgdHlwZSAiICsgdF9iYXNlX3R5cGU6OnRfYmFzZV9uYW1lKHRiYXNlKTsKICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHR5cGUtPmlzX2VudW0oKSkgewotICAgICAgb3V0IDw8ICJXcml0ZUkzMihJbnRlZ2VyKCIgPDwgbmFtZSA8PCAiKSk7IjsKKyAgICAgIG91dCA8PCAiV3JpdGVJMzIoU3lzdGVtLkludGVnZXIoIiA8PCBuYW1lIDw8ICIpKTsiOwogICAgIH0KICAgICBvdXQgPDwgZW5kbDsKICAgfSBlbHNlIHsKQEAgLTMxNDEsMjUgKzMxNTQsMjUgQEAKICAgY2FzZSB0X2Jhc2VfdHlwZTo6VFlQRV9TVFJJTkc6CiAgICAgaWYgKHRiYXNlLT5pc19iaW5hcnkoKSkgewogICAgICAgaWYgKGFuc2lzdHJfYmluYXJ5XykgewotICAgICAgICByZXR1cm4gIkFuc2lTdHJpbmciOworICAgICAgICByZXR1cm4gIlN5c3RlbS5BbnNpU3RyaW5nIjsKICAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiAiVEJ5dGVzIjsKKyAgICAgICAgcmV0dXJuICJTeXNVdGlscy5UQnl0ZXMiOwogICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gInN0cmluZyI7CisgICAgICByZXR1cm4gIlN5c3RlbS5zdHJpbmciOwogICAgIH0KICAgY2FzZSB0X2Jhc2VfdHlwZTo6VFlQRV9CT09MOgotICAgIHJldHVybiAiQm9vbGVhbiI7CisgICAgcmV0dXJuICJTeXN0ZW0uQm9vbGVhbiI7CiAgIGNhc2UgdF9iYXNlX3R5cGU6OlRZUEVfSTg6Ci0gICAgcmV0dXJuICJTaG9ydEludCI7CisgICAgcmV0dXJuICJTeXN0ZW0uU2hvcnRJbnQiOwogICBjYXNlIHRfYmFzZV90eXBlOjpUWVBFX0kxNjoKLSAgICByZXR1cm4gIlNtYWxsSW50IjsKKyAgICByZXR1cm4gIlN5c3RlbS5TbWFsbEludCI7CiAgIGNhc2UgdF9iYXNlX3R5cGU6OlRZUEVfSTMyOgotICAgIHJldHVybiAiSW50ZWdlciI7CisgICAgcmV0dXJuICJTeXN0ZW0uSW50ZWdlciI7CiAgIGNhc2UgdF9iYXNlX3R5cGU6OlRZUEVfSTY0OgotICAgIHJldHVybiAiSW50NjQiOworICAgIHJldHVybiAiU3lzdGVtLkludDY0IjsKICAgY2FzZSB0X2Jhc2VfdHlwZTo6VFlQRV9ET1VCTEU6Ci0gICAgcmV0dXJuICJEb3VibGUiOworICAgIHJldHVybiAiU3lzdGVtLkRvdWJsZSI7CiAgIGRlZmF1bHQ6CiAgICAgdGhyb3cgImNvbXBpbGVyIGVycm9yOiBubyBEZWxwaGkgbmFtZSBmb3IgYmFzZSB0eXBlICIKICAgICAgICAgKyB0X2Jhc2VfdHlwZTo6dF9iYXNlX25hbWUodGJhc2UtPmdldF9iYXNlKCkpOwpAQCAtMzM5NCw3ICszNDA3LDcgQEAKIHZvaWQgdF9kZWxwaGlfZ2VuZXJhdG9yOjpnZW5lcmF0ZV9kZWxwaGlfaXNzZXRfcmVhZGVyX2RlZmluaXRpb24ob3N0cmVhbSYgb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0X2ZpZWxkKiB0ZmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfeGNlcHRpb24pIHsKLSAgaW5kZW50KG91dCkgPDwgImZ1bmN0aW9uIEdldF9faXNzZXRfIiA8PCBwcm9wX25hbWUodGZpZWxkLCBpc194Y2VwdGlvbikgPDwgIjogQm9vbGVhbjsiIDw8IGVuZGw7CisgIGluZGVudChvdXQpIDw8ICJmdW5jdGlvbiBHZXRfX2lzc2V0XyIgPDwgcHJvcF9uYW1lKHRmaWVsZCwgaXNfeGNlcHRpb24pIDw8ICI6IFN5c3RlbS5Cb29sZWFuOyIgPDwgZW5kbDsKIH0KIAogdm9pZCB0X2RlbHBoaV9nZW5lcmF0b3I6OmdlbmVyYXRlX2RlbHBoaV9jbGVhcl91bmlvbl92YWx1ZShvc3RyZWFtJiBvdXQsCkBAIC0zNTAwLDcgKzM1MTMsNyBAQAogCiAgIHN0cmluZyBpc3NldF9uYW1lID0gIl9faXNzZXRfIiArIHByb3BfbmFtZSh0ZmllbGQsIGlzX3hjZXB0aW9uKTsKICAgaW5kZW50X2ltcGwob3V0KSA8PCAiZnVuY3Rpb24gIiA8PCBjbHNfcHJlZml4IDw8IG5hbWUgPDwgIi4iCi0gICAgICAgICAgICAgICAgICAgPDwgIkdldCIgPDwgaXNzZXRfbmFtZSA8PCAiOiBCb29sZWFuOyIgPDwgZW5kbDsKKyAgICAgICAgICAgICAgICAgICA8PCAiR2V0IiA8PCBpc3NldF9uYW1lIDw8ICI6IFN5c3RlbS5Cb29sZWFuOyIgPDwgZW5kbDsKICAgaW5kZW50X2ltcGwob3V0KSA8PCAiYmVnaW4iIDw8IGVuZGw7CiAgIGluZGVudF91cF9pbXBsKCk7CiAgIGluZGVudF9pbXBsKG91dCkgPDwgIlJlc3VsdCA6PSAiIDw8IGZpZWxkUHJlZml4IDw8IGlzc2V0X25hbWUgPDwgIjsiIDw8IGVuZGw7CkBAIC0zNTcyLDcgKzM1ODUsNyBAQAogICAvLyBsb2NhbCBib29scyBmb3IgcmVxdWlyZWQgZmllbGRzCiAgIGZvciAoZl9pdGVyID0gZmllbGRzLmJlZ2luKCk7IGZfaXRlciAhPSBmaWVsZHMuZW5kKCk7ICsrZl9pdGVyKSB7CiAgICAgaWYgKCgqZl9pdGVyKS0+Z2V0X3JlcSgpID09IHRfZmllbGQ6OlRfUkVRVUlSRUQpIHsKLSAgICAgIGluZGVudF9pbXBsKGxvY2FsX3ZhcnMpIDw8ICJfcmVxX2lzc2V0XyIgPDwgcHJvcF9uYW1lKCpmX2l0ZXIsIGlzX2V4Y2VwdGlvbikgPDwgIiA6IEJvb2xlYW47IgorICAgICAgaW5kZW50X2ltcGwobG9jYWxfdmFycykgPDwgIl9yZXFfaXNzZXRfIiA8PCBwcm9wX25hbWUoKmZfaXRlciwgaXNfZXhjZXB0aW9uKSA8PCAiIDogU3lzdGVtLkJvb2xlYW47IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZW5kbDsKICAgICAgIGluZGVudF9pbXBsKGNvZGVfYmxvY2spIDw8ICJfcmVxX2lzc2V0XyIgPDwgcHJvcF9uYW1lKCpmX2l0ZXIsIGlzX2V4Y2VwdGlvbikgPDwgIiA6PSBGQUxTRTsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlbmRsOwpAQCAtMzg3MCw3ICszODgzLDcgQEAKICAgZm9yIChmX2l0ZXIgPSBmaWVsZHMuYmVnaW4oKTsgZl9pdGVyICE9IGZpZWxkcy5lbmQoKTsgKytmX2l0ZXIpIHsKICAgICBib29sIGlzX29wdGlvbmFsID0gKCgqZl9pdGVyKS0+Z2V0X3JlcSgpICE9IHRfZmllbGQ6OlRfUkVRVUlSRUQpOwogICAgIGlmIChpc19vcHRpb25hbCkgewotICAgICAgaW5kZW50X2ltcGwob3V0KSA8PCB0bXBfZmlyc3QgPDwgIiA6IEJvb2xlYW47IiA8PCBlbmRsOworICAgICAgaW5kZW50X2ltcGwob3V0KSA8PCB0bXBfZmlyc3QgPDwgIiA6IFN5c3RlbS5Cb29sZWFuOyIgPDwgZW5kbDsKICAgICAgIHVzZUZpcnN0RmxhZyA9IHRydWU7CiAgICAgfQogICAgIGJyZWFrOwpAQCAtMzkyOSw3ICszOTQyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgPDwgIi5BcHBlbmQoJzxudWxsPicpIGVsc2UgIiA8PCB0bXBfc2IgPDwgIi5BcHBlbmQoIFNlbGYuIgogICAgICAgICAgICAgICAgICAgICAgICA8PCBwcm9wX25hbWUoKCpmX2l0ZXIpLCBpc19leGNlcHRpb24pIDw8ICIuVG9TdHJpbmcoKSk7IiA8PCBlbmRsOwogICAgIH0gZWxzZSBpZiAodHR5cGUtPmlzX2VudW0oKSkgewotICAgICAgaW5kZW50X2ltcGwob3V0KSA8PCB0bXBfc2IgPDwgIi5BcHBlbmQoSW50ZWdlciggU2VsZi4iIDw8IHByb3BfbmFtZSgoKmZfaXRlciksIGlzX2V4Y2VwdGlvbikKKyAgICAgIGluZGVudF9pbXBsKG91dCkgPDwgdG1wX3NiIDw8ICIuQXBwZW5kKFN5c3RlbS5JbnRlZ2VyKCBTZWxmLiIgPDwgcHJvcF9uYW1lKCgqZl9pdGVyKSwgaXNfZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICA8PCAiKSk7IiA8PCBlbmRsOwogICAgIH0gZWxzZSB7CiAgICAgICBpbmRlbnRfaW1wbChvdXQpIDw8IHRtcF9zYiA8PCAiLkFwcGVuZCggU2VsZi4iIDw8IHByb3BfbmFtZSgoKmZfaXRlciksIGlzX2V4Y2VwdGlvbikgPDwgIik7IgpkaWZmIC0tZ2l0IGEvbGliL2RlbHBoaS9EZWxwaGlUaHJpZnQuZ3JvdXBwcm9qIGIvbGliL2RlbHBoaS9EZWxwaGlUaHJpZnQuZ3JvdXBwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNzJlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvZGVscGhpL0RlbHBoaVRocmlmdC5ncm91cHByb2oKQEAgLTAsMCArMSwxNTYgQEAKK++7vwk8UHJvamVjdCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKwkJPFByb3BlcnR5R3JvdXA+CisJCQk8UHJvamVjdEd1aWQ+ezZCRDMyN0E1LTc2ODgtNDI2My1CNkE4LUIxNTIwN0NGNEVDNX08L1Byb2plY3RHdWlkPgorCQk8L1Byb3BlcnR5R3JvdXA+CisJCTxJdGVtR3JvdXA+CisJCQk8UHJvamVjdHMgSW5jbHVkZT0idGVzdFxjbGllbnQuZHByb2oiPgorCQkJCTxEZXBlbmRlbmNpZXMvPgorCQkJPC9Qcm9qZWN0cz4KKwkJCTxQcm9qZWN0cyBJbmNsdWRlPSJ0ZXN0XHNlcnZlci5kcHJvaiI+CisJCQkJPERlcGVuZGVuY2llcy8+CisJCQk8L1Byb2plY3RzPgorCQkJPFByb2plY3RzIEluY2x1ZGU9InRlc3RcbXVsdGlwbGV4ZWRcTXVsdGlwbGV4LlRlc3QuQ2xpZW50LmRwcm9qIj4KKwkJCQk8RGVwZW5kZW5jaWVzLz4KKwkJCTwvUHJvamVjdHM+CisJCQk8UHJvamVjdHMgSW5jbHVkZT0idGVzdFxtdWx0aXBsZXhlZFxNdWx0aXBsZXguVGVzdC5TZXJ2ZXIuZHByb2oiPgorCQkJCTxEZXBlbmRlbmNpZXMvPgorCQkJPC9Qcm9qZWN0cz4KKwkJCTxQcm9qZWN0cyBJbmNsdWRlPSJ0ZXN0XHNlcmlhbGl6ZXJcVGVzdFNlcmlhbGl6ZXIuZHByb2oiPgorCQkJCTxEZXBlbmRlbmNpZXMvPgorCQkJPC9Qcm9qZWN0cz4KKwkJCTxQcm9qZWN0cyBJbmNsdWRlPSJ0ZXN0XHNraXBcc2tpcHRlc3RfdmVyc2lvbjEuZHByb2oiPgorCQkJCTxEZXBlbmRlbmNpZXMvPgorCQkJPC9Qcm9qZWN0cz4KKwkJCTxQcm9qZWN0cyBJbmNsdWRlPSJ0ZXN0XHNraXBcc2tpcHRlc3RfdmVyc2lvbjIuZHByb2oiPgorCQkJCTxEZXBlbmRlbmNpZXMvPgorCQkJPC9Qcm9qZWN0cz4KKwkJCTxQcm9qZWN0cyBJbmNsdWRlPSJ0ZXN0XHR5cGVyZWdpc3RyeVxUZXN0VHlwZVJlZ2lzdHJ5LmRwcm9qIj4KKwkJCQk8RGVwZW5kZW5jaWVzLz4KKwkJCTwvUHJvamVjdHM+CisJCQk8UHJvamVjdHMgSW5jbHVkZT0iLi5cLi5cdHV0b3JpYWxcZGVscGhpXERlbHBoaVNlcnZlclxEZWxwaGlTZXJ2ZXIuZHByb2oiPgorCQkJCTxEZXBlbmRlbmNpZXMvPgorCQkJPC9Qcm9qZWN0cz4KKwkJCTxQcm9qZWN0cyBJbmNsdWRlPSIuLlwuLlx0dXRvcmlhbFxkZWxwaGlcRGVscGhpQ2xpZW50XERlbHBoaUNsaWVudC5kcHJvaiI+CisJCQkJPERlcGVuZGVuY2llcy8+CisJCQk8L1Byb2plY3RzPgorCQkJPFByb2plY3RzIEluY2x1ZGU9InRlc3Rca2V5d29yZHNcUmVzZXJ2ZWRLZXl3b3Jkcy5kcHJvaiI+CisJCQkJPERlcGVuZGVuY2llcy8+CisJCQk8L1Byb2plY3RzPgorCQk8L0l0ZW1Hcm91cD4KKwkJPFByb2plY3RFeHRlbnNpb25zPgorCQkJPEJvcmxhbmQuUGVyc29uYWxpdHk+RGVmYXVsdC5QZXJzb25hbGl0eS4xMjwvQm9ybGFuZC5QZXJzb25hbGl0eT4KKwkJCTxCb3JsYW5kLlByb2plY3RUeXBlLz4KKwkJCTxCb3JsYW5kUHJvamVjdD4KKwkJCQk8RGVmYXVsdC5QZXJzb25hbGl0eS8+CisJCQk8L0JvcmxhbmRQcm9qZWN0PgorCQk8L1Byb2plY3RFeHRlbnNpb25zPgorCQk8VGFyZ2V0IE5hbWU9ImNsaWVudCI+CisJCQk8TVNCdWlsZCBQcm9qZWN0cz0idGVzdFxjbGllbnQuZHByb2oiLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iY2xpZW50OkNsZWFuIj4KKwkJCTxNU0J1aWxkIFByb2plY3RzPSJ0ZXN0XGNsaWVudC5kcHJvaiIgVGFyZ2V0cz0iQ2xlYW4iLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iY2xpZW50Ok1ha2UiPgorCQkJPE1TQnVpbGQgUHJvamVjdHM9InRlc3RcY2xpZW50LmRwcm9qIiBUYXJnZXRzPSJNYWtlIi8+CisJCTwvVGFyZ2V0PgorCQk8VGFyZ2V0IE5hbWU9InNlcnZlciI+CisJCQk8TVNCdWlsZCBQcm9qZWN0cz0idGVzdFxzZXJ2ZXIuZHByb2oiLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0ic2VydmVyOkNsZWFuIj4KKwkJCTxNU0J1aWxkIFByb2plY3RzPSJ0ZXN0XHNlcnZlci5kcHJvaiIgVGFyZ2V0cz0iQ2xlYW4iLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0ic2VydmVyOk1ha2UiPgorCQkJPE1TQnVpbGQgUHJvamVjdHM9InRlc3Rcc2VydmVyLmRwcm9qIiBUYXJnZXRzPSJNYWtlIi8+CisJCTwvVGFyZ2V0PgorCQk8VGFyZ2V0IE5hbWU9Ik11bHRpcGxleF9UZXN0X0NsaWVudCI+CisJCQk8TVNCdWlsZCBQcm9qZWN0cz0idGVzdFxtdWx0aXBsZXhlZFxNdWx0aXBsZXguVGVzdC5DbGllbnQuZHByb2oiLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iTXVsdGlwbGV4X1Rlc3RfQ2xpZW50OkNsZWFuIj4KKwkJCTxNU0J1aWxkIFByb2plY3RzPSJ0ZXN0XG11bHRpcGxleGVkXE11bHRpcGxleC5UZXN0LkNsaWVudC5kcHJvaiIgVGFyZ2V0cz0iQ2xlYW4iLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iTXVsdGlwbGV4X1Rlc3RfQ2xpZW50Ok1ha2UiPgorCQkJPE1TQnVpbGQgUHJvamVjdHM9InRlc3RcbXVsdGlwbGV4ZWRcTXVsdGlwbGV4LlRlc3QuQ2xpZW50LmRwcm9qIiBUYXJnZXRzPSJNYWtlIi8+CisJCTwvVGFyZ2V0PgorCQk8VGFyZ2V0IE5hbWU9Ik11bHRpcGxleF9UZXN0X1NlcnZlciI+CisJCQk8TVNCdWlsZCBQcm9qZWN0cz0idGVzdFxtdWx0aXBsZXhlZFxNdWx0aXBsZXguVGVzdC5TZXJ2ZXIuZHByb2oiLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iTXVsdGlwbGV4X1Rlc3RfU2VydmVyOkNsZWFuIj4KKwkJCTxNU0J1aWxkIFByb2plY3RzPSJ0ZXN0XG11bHRpcGxleGVkXE11bHRpcGxleC5UZXN0LlNlcnZlci5kcHJvaiIgVGFyZ2V0cz0iQ2xlYW4iLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iTXVsdGlwbGV4X1Rlc3RfU2VydmVyOk1ha2UiPgorCQkJPE1TQnVpbGQgUHJvamVjdHM9InRlc3RcbXVsdGlwbGV4ZWRcTXVsdGlwbGV4LlRlc3QuU2VydmVyLmRwcm9qIiBUYXJnZXRzPSJNYWtlIi8+CisJCTwvVGFyZ2V0PgorCQk8VGFyZ2V0IE5hbWU9IlRlc3RTZXJpYWxpemVyIj4KKwkJCTxNU0J1aWxkIFByb2plY3RzPSJ0ZXN0XHNlcmlhbGl6ZXJcVGVzdFNlcmlhbGl6ZXIuZHByb2oiLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iVGVzdFNlcmlhbGl6ZXI6Q2xlYW4iPgorCQkJPE1TQnVpbGQgUHJvamVjdHM9InRlc3Rcc2VyaWFsaXplclxUZXN0U2VyaWFsaXplci5kcHJvaiIgVGFyZ2V0cz0iQ2xlYW4iLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iVGVzdFNlcmlhbGl6ZXI6TWFrZSI+CisJCQk8TVNCdWlsZCBQcm9qZWN0cz0idGVzdFxzZXJpYWxpemVyXFRlc3RTZXJpYWxpemVyLmRwcm9qIiBUYXJnZXRzPSJNYWtlIi8+CisJCTwvVGFyZ2V0PgorCQk8VGFyZ2V0IE5hbWU9InNraXB0ZXN0X3ZlcnNpb24xIj4KKwkJCTxNU0J1aWxkIFByb2plY3RzPSJ0ZXN0XHNraXBcc2tpcHRlc3RfdmVyc2lvbjEuZHByb2oiLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0ic2tpcHRlc3RfdmVyc2lvbjE6Q2xlYW4iPgorCQkJPE1TQnVpbGQgUHJvamVjdHM9InRlc3Rcc2tpcFxza2lwdGVzdF92ZXJzaW9uMS5kcHJvaiIgVGFyZ2V0cz0iQ2xlYW4iLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0ic2tpcHRlc3RfdmVyc2lvbjE6TWFrZSI+CisJCQk8TVNCdWlsZCBQcm9qZWN0cz0idGVzdFxza2lwXHNraXB0ZXN0X3ZlcnNpb24xLmRwcm9qIiBUYXJnZXRzPSJNYWtlIi8+CisJCTwvVGFyZ2V0PgorCQk8VGFyZ2V0IE5hbWU9InNraXB0ZXN0X3ZlcnNpb24yIj4KKwkJCTxNU0J1aWxkIFByb2plY3RzPSJ0ZXN0XHNraXBcc2tpcHRlc3RfdmVyc2lvbjIuZHByb2oiLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0ic2tpcHRlc3RfdmVyc2lvbjI6Q2xlYW4iPgorCQkJPE1TQnVpbGQgUHJvamVjdHM9InRlc3Rcc2tpcFxza2lwdGVzdF92ZXJzaW9uMi5kcHJvaiIgVGFyZ2V0cz0iQ2xlYW4iLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0ic2tpcHRlc3RfdmVyc2lvbjI6TWFrZSI+CisJCQk8TVNCdWlsZCBQcm9qZWN0cz0idGVzdFxza2lwXHNraXB0ZXN0X3ZlcnNpb24yLmRwcm9qIiBUYXJnZXRzPSJNYWtlIi8+CisJCTwvVGFyZ2V0PgorCQk8VGFyZ2V0IE5hbWU9IlRlc3RUeXBlUmVnaXN0cnkiPgorCQkJPE1TQnVpbGQgUHJvamVjdHM9InRlc3RcdHlwZXJlZ2lzdHJ5XFRlc3RUeXBlUmVnaXN0cnkuZHByb2oiLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iVGVzdFR5cGVSZWdpc3RyeTpDbGVhbiI+CisJCQk8TVNCdWlsZCBQcm9qZWN0cz0idGVzdFx0eXBlcmVnaXN0cnlcVGVzdFR5cGVSZWdpc3RyeS5kcHJvaiIgVGFyZ2V0cz0iQ2xlYW4iLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iVGVzdFR5cGVSZWdpc3RyeTpNYWtlIj4KKwkJCTxNU0J1aWxkIFByb2plY3RzPSJ0ZXN0XHR5cGVyZWdpc3RyeVxUZXN0VHlwZVJlZ2lzdHJ5LmRwcm9qIiBUYXJnZXRzPSJNYWtlIi8+CisJCTwvVGFyZ2V0PgorCQk8VGFyZ2V0IE5hbWU9IkRlbHBoaVNlcnZlciI+CisJCQk8TVNCdWlsZCBQcm9qZWN0cz0iLi5cLi5cdHV0b3JpYWxcZGVscGhpXERlbHBoaVNlcnZlclxEZWxwaGlTZXJ2ZXIuZHByb2oiLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iRGVscGhpU2VydmVyOkNsZWFuIj4KKwkJCTxNU0J1aWxkIFByb2plY3RzPSIuLlwuLlx0dXRvcmlhbFxkZWxwaGlcRGVscGhpU2VydmVyXERlbHBoaVNlcnZlci5kcHJvaiIgVGFyZ2V0cz0iQ2xlYW4iLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iRGVscGhpU2VydmVyOk1ha2UiPgorCQkJPE1TQnVpbGQgUHJvamVjdHM9Ii4uXC4uXHR1dG9yaWFsXGRlbHBoaVxEZWxwaGlTZXJ2ZXJcRGVscGhpU2VydmVyLmRwcm9qIiBUYXJnZXRzPSJNYWtlIi8+CisJCTwvVGFyZ2V0PgorCQk8VGFyZ2V0IE5hbWU9IkRlbHBoaUNsaWVudCI+CisJCQk8TVNCdWlsZCBQcm9qZWN0cz0iLi5cLi5cdHV0b3JpYWxcZGVscGhpXERlbHBoaUNsaWVudFxEZWxwaGlDbGllbnQuZHByb2oiLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iRGVscGhpQ2xpZW50OkNsZWFuIj4KKwkJCTxNU0J1aWxkIFByb2plY3RzPSIuLlwuLlx0dXRvcmlhbFxkZWxwaGlcRGVscGhpQ2xpZW50XERlbHBoaUNsaWVudC5kcHJvaiIgVGFyZ2V0cz0iQ2xlYW4iLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iRGVscGhpQ2xpZW50Ok1ha2UiPgorCQkJPE1TQnVpbGQgUHJvamVjdHM9Ii4uXC4uXHR1dG9yaWFsXGRlbHBoaVxEZWxwaGlDbGllbnRcRGVscGhpQ2xpZW50LmRwcm9qIiBUYXJnZXRzPSJNYWtlIi8+CisJCTwvVGFyZ2V0PgorCQk8VGFyZ2V0IE5hbWU9IlJlc2VydmVkS2V5d29yZHMiPgorCQkJPE1TQnVpbGQgUHJvamVjdHM9InRlc3Rca2V5d29yZHNcUmVzZXJ2ZWRLZXl3b3Jkcy5kcHJvaiIvPgorCQk8L1RhcmdldD4KKwkJPFRhcmdldCBOYW1lPSJSZXNlcnZlZEtleXdvcmRzOkNsZWFuIj4KKwkJCTxNU0J1aWxkIFByb2plY3RzPSJ0ZXN0XGtleXdvcmRzXFJlc2VydmVkS2V5d29yZHMuZHByb2oiIFRhcmdldHM9IkNsZWFuIi8+CisJCTwvVGFyZ2V0PgorCQk8VGFyZ2V0IE5hbWU9IlJlc2VydmVkS2V5d29yZHM6TWFrZSI+CisJCQk8TVNCdWlsZCBQcm9qZWN0cz0idGVzdFxrZXl3b3Jkc1xSZXNlcnZlZEtleXdvcmRzLmRwcm9qIiBUYXJnZXRzPSJNYWtlIi8+CisJCTwvVGFyZ2V0PgorCQk8VGFyZ2V0IE5hbWU9IkJ1aWxkIj4KKwkJCTxDYWxsVGFyZ2V0IFRhcmdldHM9ImNsaWVudDtzZXJ2ZXI7TXVsdGlwbGV4X1Rlc3RfQ2xpZW50O011bHRpcGxleF9UZXN0X1NlcnZlcjtUZXN0U2VyaWFsaXplcjtza2lwdGVzdF92ZXJzaW9uMTtza2lwdGVzdF92ZXJzaW9uMjtUZXN0VHlwZVJlZ2lzdHJ5O0RlbHBoaVNlcnZlcjtEZWxwaGlDbGllbnQ7UmVzZXJ2ZWRLZXl3b3JkcyIvPgorCQk8L1RhcmdldD4KKwkJPFRhcmdldCBOYW1lPSJDbGVhbiI+CisJCQk8Q2FsbFRhcmdldCBUYXJnZXRzPSJjbGllbnQ6Q2xlYW47c2VydmVyOkNsZWFuO011bHRpcGxleF9UZXN0X0NsaWVudDpDbGVhbjtNdWx0aXBsZXhfVGVzdF9TZXJ2ZXI6Q2xlYW47VGVzdFNlcmlhbGl6ZXI6Q2xlYW47c2tpcHRlc3RfdmVyc2lvbjE6Q2xlYW47c2tpcHRlc3RfdmVyc2lvbjI6Q2xlYW47VGVzdFR5cGVSZWdpc3RyeTpDbGVhbjtEZWxwaGlTZXJ2ZXI6Q2xlYW47RGVscGhpQ2xpZW50OkNsZWFuO1Jlc2VydmVkS2V5d29yZHM6Q2xlYW4iLz4KKwkJPC9UYXJnZXQ+CisJCTxUYXJnZXQgTmFtZT0iTWFrZSI+CisJCQk8Q2FsbFRhcmdldCBUYXJnZXRzPSJjbGllbnQ6TWFrZTtzZXJ2ZXI6TWFrZTtNdWx0aXBsZXhfVGVzdF9DbGllbnQ6TWFrZTtNdWx0aXBsZXhfVGVzdF9TZXJ2ZXI6TWFrZTtUZXN0U2VyaWFsaXplcjpNYWtlO3NraXB0ZXN0X3ZlcnNpb24xOk1ha2U7c2tpcHRlc3RfdmVyc2lvbjI6TWFrZTtUZXN0VHlwZVJlZ2lzdHJ5Ok1ha2U7RGVscGhpU2VydmVyOk1ha2U7RGVscGhpQ2xpZW50Ok1ha2U7UmVzZXJ2ZWRLZXl3b3JkczpNYWtlIi8+CisJCTwvVGFyZ2V0PgorCQk8SW1wb3J0IENvbmRpdGlvbj0iRXhpc3RzKCckKEJEUylcQmluXENvZGVHZWFyLkdyb3VwLlRhcmdldHMnKSIgUHJvamVjdD0iJChCRFMpXEJpblxDb2RlR2Vhci5Hcm91cC5UYXJnZXRzIi8+CisJPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvbGliL2RlbHBoaS90ZXN0L2tleXdvcmRzL1Jlc2VydmVkSW5jbHVkZWQudGhyaWZ0IGIvbGliL2RlbHBoaS90ZXN0L2tleXdvcmRzL1Jlc2VydmVkSW5jbHVkZWQudGhyaWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNDdhNTAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvZGVscGhpL3Rlc3Qva2V5d29yZHMvUmVzZXJ2ZWRJbmNsdWRlZC50aHJpZnQKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvLyBtYWtlIHN1cmUgZ2VuZXJhdGVkIGNvZGUgZG9lcyBub3QgcHJvZHVjZSBuYW1lIGNvbGxpc2lvbnMgd2l0aCBwcmVkZWZpbmVkIGtleXdvcmRzCituYW1lc3BhY2UgZGVscGhpIFN5c1V0aWxzCisKK2NvbnN0IGkzMiBpbnRlZ2VyID0gNDIKKworLy8gRU9GCmRpZmYgLS1naXQgYS9saWIvZGVscGhpL3Rlc3Qva2V5d29yZHMvUmVzZXJ2ZWRLZXl3b3Jkcy5kcHIgYi9saWIvZGVscGhpL3Rlc3Qva2V5d29yZHMvUmVzZXJ2ZWRLZXl3b3Jkcy5kcHIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZiYzhjMQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9kZWxwaGkvdGVzdC9rZXl3b3Jkcy9SZXNlcnZlZEtleXdvcmRzLmRwcgpAQCAtMCwwICsxLDE1IEBACitwcm9ncmFtIFJlc2VydmVkS2V5d29yZHM7CisKK3skQVBQVFlQRSBDT05TT0xFfQorCit1c2VzCisgIFN5c1V0aWxzLCBTeXN0ZW1fOworCitiZWdpbgorICB0cnkKKyAgICB7IFRPRE8gLW9Vc2VyIC1jQ29uc29sZSBNYWluIDogQ29kZSBoaWVyIGVpbmb8Z2VuIH0KKyAgZXhjZXB0CisgICAgb24gRTogRXhjZXB0aW9uIGRvCisgICAgICBXcml0ZWxuKEUuQ2xhc3NOYW1lLCAnOiAnLCBFLk1lc3NhZ2UpOworICBlbmQ7CitlbmQuCmRpZmYgLS1naXQgYS9saWIvZGVscGhpL3Rlc3Qva2V5d29yZHMvUmVzZXJ2ZWRLZXl3b3Jkcy5kcHJvaiBiL2xpYi9kZWxwaGkvdGVzdC9rZXl3b3Jkcy9SZXNlcnZlZEtleXdvcmRzLmRwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZDk1NDQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvZGVscGhpL3Rlc3Qva2V5d29yZHMvUmVzZXJ2ZWRLZXl3b3Jkcy5kcHJvagpAQCAtMCwwICsxLDExMiBAQAor77u/CTxQcm9qZWN0IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorCQk8UHJvcGVydHlHcm91cD4KKwkJCTxQcm9qZWN0R3VpZD57RjJFOUI2RkMtQTkzMS00MjcxLThFMzAtNUE0RTQwMjQ4MUI0fTwvUHJvamVjdEd1aWQ+CisJCQk8TWFpblNvdXJjZT5SZXNlcnZlZEtleXdvcmRzLmRwcjwvTWFpblNvdXJjZT4KKwkJCTxQcm9qZWN0VmVyc2lvbj4xMi4zPC9Qcm9qZWN0VmVyc2lvbj4KKwkJCTxCYXNpcz5UcnVlPC9CYXNpcz4KKwkJCTxDb25maWcgQ29uZGl0aW9uPSInJChDb25maWcpJz09JyciPkRlYnVnPC9Db25maWc+CisJCQk8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorCQkJPEFwcFR5cGU+Q29uc29sZTwvQXBwVHlwZT4KKwkJCTxGcmFtZXdvcmtUeXBlPk5vbmU8L0ZyYW1ld29ya1R5cGU+CisJCQk8RENDX0RDQ0NvbXBpbGVyPkRDQzMyPC9EQ0NfRENDQ29tcGlsZXI+CisJCTwvUHJvcGVydHlHcm91cD4KKwkJPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWcpJz09J0Jhc2lzJyBvciAnJChCYXNlKSchPScnIj4KKwkJCTxCYXNlPnRydWU8L0Jhc2U+CisJCTwvUHJvcGVydHlHcm91cD4KKwkJPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWcpJz09J0RlYnVnJyBvciAnJChDZmdfMSknIT0nJyI+CisJCQk8Q2ZnXzE+dHJ1ZTwvQ2ZnXzE+CisJCQk8Q2ZnUGFyZW50PkJhc2U8L0NmZ1BhcmVudD4KKwkJCTxCYXNlPnRydWU8L0Jhc2U+CisJCTwvUHJvcGVydHlHcm91cD4KKwkJPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWcpJz09J1JlbGVhc2UnIG9yICckKENmZ18yKSchPScnIj4KKwkJCTxDZmdfMj50cnVlPC9DZmdfMj4KKwkJCTxDZmdQYXJlbnQ+QmFzZTwvQ2ZnUGFyZW50PgorCQkJPEJhc2U+dHJ1ZTwvQmFzZT4KKwkJPC9Qcm9wZXJ0eUdyb3VwPgorCQk8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKEJhc2UpJyE9JyciPgorCQkJPERDQ19JbWFnZUJhc2U+MDA0MDAwMDA8L0RDQ19JbWFnZUJhc2U+CisJCQk8RENDX0RjdU91dHB1dD4uXCQoQ29uZmlnKVwkKFBsYXRmb3JtKTwvRENDX0RjdU91dHB1dD4KKwkJCTxEQ0NfVW5pdFNlYXJjaFBhdGg+Z2VuLWRlbHBoaTsuLlwuLlxzcmM7JChEQ0NfVW5pdFNlYXJjaFBhdGgpPC9EQ0NfVW5pdFNlYXJjaFBhdGg+CisJCQk8RENDX1VuaXRBbGlhcz5XaW5UeXBlcz1XaW5kb3dzO1dpblByb2NzPVdpbmRvd3M7RGJpVHlwZXM9QkRFO0RiaVByb2NzPUJERTskKERDQ19Vbml0QWxpYXMpPC9EQ0NfVW5pdEFsaWFzPgorCQkJPERDQ19FeGVPdXRwdXQ+LlwkKENvbmZpZylcJChQbGF0Zm9ybSk8L0RDQ19FeGVPdXRwdXQ+CisJCQk8RENDX04+ZmFsc2U8L0RDQ19OPgorCQkJPERDQ19TPmZhbHNlPC9EQ0NfUz4KKwkJCTxEQ0NfSz5mYWxzZTwvRENDX0s+CisJCQk8RENDX0U+ZmFsc2U8L0RDQ19FPgorCQkJPERDQ19GPmZhbHNlPC9EQ0NfRj4KKwkJPC9Qcm9wZXJ0eUdyb3VwPgorCQk8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENmZ18xKSchPScnIj4KKwkJCTxEQ0NfRGVmaW5lPkRFQlVHOyQoRENDX0RlZmluZSk8L0RDQ19EZWZpbmU+CisJCQk8RENDX09wdGltaXplPmZhbHNlPC9EQ0NfT3B0aW1pemU+CisJCQk8RENDX0dlbmVyYXRlU3RhY2tGcmFtZXM+dHJ1ZTwvRENDX0dlbmVyYXRlU3RhY2tGcmFtZXM+CisJCTwvUHJvcGVydHlHcm91cD4KKwkJPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDZmdfMiknIT0nJyI+CisJCQk8RENDX0xvY2FsRGVidWdTeW1ib2xzPmZhbHNlPC9EQ0NfTG9jYWxEZWJ1Z1N5bWJvbHM+CisJCQk8RENDX0RlZmluZT5SRUxFQVNFOyQoRENDX0RlZmluZSk8L0RDQ19EZWZpbmU+CisJCQk8RENDX1N5bWJvbFJlZmVyZW5jZUluZm8+MDwvRENDX1N5bWJvbFJlZmVyZW5jZUluZm8+CisJCQk8RENDX0RlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0RDQ19EZWJ1Z0luZm9ybWF0aW9uPgorCQk8L1Byb3BlcnR5R3JvdXA+CisJCTxJdGVtR3JvdXA+CisJCQk8RGVscGhpQ29tcGlsZSBJbmNsdWRlPSJSZXNlcnZlZEtleXdvcmRzLmRwciI+CisJCQkJPE1haW5Tb3VyY2U+TWFpblNvdXJjZTwvTWFpblNvdXJjZT4KKwkJCTwvRGVscGhpQ29tcGlsZT4KKwkJCTxCdWlsZENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZSI+CisJCQkJPEtleT5DZmdfMjwvS2V5PgorCQkJCTxDZmdQYXJlbnQ+QmFzZTwvQ2ZnUGFyZW50PgorCQkJPC9CdWlsZENvbmZpZ3VyYXRpb24+CisJCQk8QnVpbGRDb25maWd1cmF0aW9uIEluY2x1ZGU9IkJhc2lzIj4KKwkJCQk8S2V5PkJhc2U8L0tleT4KKwkJCTwvQnVpbGRDb25maWd1cmF0aW9uPgorCQkJPEJ1aWxkQ29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1ZyI+CisJCQkJPEtleT5DZmdfMTwvS2V5PgorCQkJCTxDZmdQYXJlbnQ+QmFzZTwvQ2ZnUGFyZW50PgorCQkJPC9CdWlsZENvbmZpZ3VyYXRpb24+CisJCTwvSXRlbUdyb3VwPgorCQk8SW1wb3J0IENvbmRpdGlvbj0iRXhpc3RzKCckKEJEUylcQmluXENvZGVHZWFyLkRlbHBoaS5UYXJnZXRzJykiIFByb2plY3Q9IiQoQkRTKVxCaW5cQ29kZUdlYXIuRGVscGhpLlRhcmdldHMiLz4KKwkJPEltcG9ydCBDb25kaXRpb249IkV4aXN0cygnJChBUFBEQVRBKVxFbWJhcmNhZGVyb1wkKEJEU0FQUERBVEFCQVNFRElSKVwkKFBST0RVQ1RWRVJTSU9OKVxVc2VyVG9vbHMucHJvaicpIiBQcm9qZWN0PSIkKEFQUERBVEEpXEVtYmFyY2FkZXJvXCQoQkRTQVBQREFUQUJBU0VESVIpXCQoUFJPRFVDVFZFUlNJT04pXFVzZXJUb29scy5wcm9qIi8+CisJCTxQcm9wZXJ0eUdyb3VwPgorCQkJPFByZUJ1aWxkRXZlbnQ+PCFbQ0RBVEFbdGhyaWZ0IC1yICAtZ2VuIGRlbHBoaSBSZXNlcnZlZEtleXdvcmRzLnRocmlmdF1dPjwvUHJlQnVpbGRFdmVudD4KKwkJPC9Qcm9wZXJ0eUdyb3VwPgorCQk8UHJvamVjdEV4dGVuc2lvbnM+CisJCQk8Qm9ybGFuZC5QZXJzb25hbGl0eT5EZWxwaGkuUGVyc29uYWxpdHkuMTI8L0JvcmxhbmQuUGVyc29uYWxpdHk+CisJCQk8Qm9ybGFuZC5Qcm9qZWN0VHlwZS8+CisJCQk8Qm9ybGFuZFByb2plY3Q+CisJCQkJPERlbHBoaS5QZXJzb25hbGl0eT4KKwkJCQkJPFZlcnNpb25JbmZvPgorCQkJCQkJPFZlcnNpb25JbmZvIE5hbWU9IkluY2x1ZGVWZXJJbmZvIj5GYWxzZTwvVmVyc2lvbkluZm8+CisJCQkJCQk8VmVyc2lvbkluZm8gTmFtZT0iQXV0b0luY0J1aWxkIj5GYWxzZTwvVmVyc2lvbkluZm8+CisJCQkJCQk8VmVyc2lvbkluZm8gTmFtZT0iTWFqb3JWZXIiPjE8L1ZlcnNpb25JbmZvPgorCQkJCQkJPFZlcnNpb25JbmZvIE5hbWU9Ik1pbm9yVmVyIj4wPC9WZXJzaW9uSW5mbz4KKwkJCQkJCTxWZXJzaW9uSW5mbyBOYW1lPSJSZWxlYXNlIj4wPC9WZXJzaW9uSW5mbz4KKwkJCQkJCTxWZXJzaW9uSW5mbyBOYW1lPSJCdWlsZCI+MDwvVmVyc2lvbkluZm8+CisJCQkJCQk8VmVyc2lvbkluZm8gTmFtZT0iRGVidWciPkZhbHNlPC9WZXJzaW9uSW5mbz4KKwkJCQkJCTxWZXJzaW9uSW5mbyBOYW1lPSJQcmVSZWxlYXNlIj5GYWxzZTwvVmVyc2lvbkluZm8+CisJCQkJCQk8VmVyc2lvbkluZm8gTmFtZT0iU3BlY2lhbCI+RmFsc2U8L1ZlcnNpb25JbmZvPgorCQkJCQkJPFZlcnNpb25JbmZvIE5hbWU9IlByaXZhdGUiPkZhbHNlPC9WZXJzaW9uSW5mbz4KKwkJCQkJCTxWZXJzaW9uSW5mbyBOYW1lPSJETEwiPkZhbHNlPC9WZXJzaW9uSW5mbz4KKwkJCQkJCTxWZXJzaW9uSW5mbyBOYW1lPSJMb2NhbGUiPjEwMzE8L1ZlcnNpb25JbmZvPgorCQkJCQkJPFZlcnNpb25JbmZvIE5hbWU9IkNvZGVQYWdlIj4xMjUyPC9WZXJzaW9uSW5mbz4KKwkJCQkJPC9WZXJzaW9uSW5mbz4KKwkJCQkJPFZlcnNpb25JbmZvS2V5cz4KKwkJCQkJCTxWZXJzaW9uSW5mb0tleXMgTmFtZT0iQ29tcGFueU5hbWUiLz4KKwkJCQkJCTxWZXJzaW9uSW5mb0tleXMgTmFtZT0iRmlsZURlc2NyaXB0aW9uIi8+CisJCQkJCQk8VmVyc2lvbkluZm9LZXlzIE5hbWU9IkZpbGVWZXJzaW9uIj4xLjAuMC4wPC9WZXJzaW9uSW5mb0tleXM+CisJCQkJCQk8VmVyc2lvbkluZm9LZXlzIE5hbWU9IkludGVybmFsTmFtZSIvPgorCQkJCQkJPFZlcnNpb25JbmZvS2V5cyBOYW1lPSJMZWdhbENvcHlyaWdodCIvPgorCQkJCQkJPFZlcnNpb25JbmZvS2V5cyBOYW1lPSJMZWdhbFRyYWRlbWFya3MiLz4KKwkJCQkJCTxWZXJzaW9uSW5mb0tleXMgTmFtZT0iT3JpZ2luYWxGaWxlbmFtZSIvPgorCQkJCQkJPFZlcnNpb25JbmZvS2V5cyBOYW1lPSJQcm9kdWN0TmFtZSIvPgorCQkJCQkJPFZlcnNpb25JbmZvS2V5cyBOYW1lPSJQcm9kdWN0VmVyc2lvbiI+MS4wLjAuMDwvVmVyc2lvbkluZm9LZXlzPgorCQkJCQkJPFZlcnNpb25JbmZvS2V5cyBOYW1lPSJDb21tZW50cyIvPgorCQkJCQk8L1ZlcnNpb25JbmZvS2V5cz4KKwkJCQkJPFNvdXJjZT4KKwkJCQkJCTxTb3VyY2UgTmFtZT0iTWFpblNvdXJjZSI+UmVzZXJ2ZWRLZXl3b3Jkcy5kcHI8L1NvdXJjZT4KKwkJCQkJPC9Tb3VyY2U+CisJCQkJPC9EZWxwaGkuUGVyc29uYWxpdHk+CisJCQkJPFBsYXRmb3Jtcz4KKwkJCQkJPFBsYXRmb3JtIHZhbHVlPSJXaW4zMiI+VHJ1ZTwvUGxhdGZvcm0+CisJCQkJPC9QbGF0Zm9ybXM+CisJCQk8L0JvcmxhbmRQcm9qZWN0PgorCQkJPFByb2plY3RGaWxlVmVyc2lvbj4xMjwvUHJvamVjdEZpbGVWZXJzaW9uPgorCQk8L1Byb2plY3RFeHRlbnNpb25zPgorCTwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL2xpYi9kZWxwaGkvdGVzdC9jb2RlZ2VuL1Jlc2VydmVkS2V5d29yZHMudGhyaWZ0IGIvbGliL2RlbHBoaS90ZXN0L2tleXdvcmRzL1Jlc2VydmVkS2V5d29yZHMudGhyaWZ0CnNpbWlsYXJpdHkgaW5kZXggNzUlCnJlbmFtZSBmcm9tIGxpYi9kZWxwaGkvdGVzdC9jb2RlZ2VuL1Jlc2VydmVkS2V5d29yZHMudGhyaWZ0CnJlbmFtZSB0byBsaWIvZGVscGhpL3Rlc3Qva2V5d29yZHMvUmVzZXJ2ZWRLZXl3b3Jkcy50aHJpZnQKaW5kZXggOGRiM2VhNS4uMmY0OWQ3NCAxMDA2NDQKLS0tIGEvbGliL2RlbHBoaS90ZXN0L2NvZGVnZW4vUmVzZXJ2ZWRLZXl3b3Jkcy50aHJpZnQKKysrIGIvbGliL2RlbHBoaS90ZXN0L2tleXdvcmRzL1Jlc2VydmVkS2V5d29yZHMudGhyaWZ0CkBAIC0xOCw3ICsxOCw5IEBACiAgKi8KIAogLy8gbWFrZSBzdXJlIGdlbmVyYXRlZCBjb2RlIGRvZXMgbm90IHByb2R1Y2UgbmFtZSBjb2xsaXNpb25zIHdpdGggcHJlZGVmaW5lZCBrZXl3b3JkcworbmFtZXNwYWNlIGRlbHBoaSBTeXN0ZW0KIAoraW5jbHVkZSAiUmVzZXJ2ZWRJbmNsdWRlZC50aHJpZnQiCiAKIAogdHlwZWRlZiBpMzIgQ2FyZGluYWwKQEAgLTk4LDMgKzEwMCwzOSBAQAogfQogCiAKK3R5cGVkZWYgaTMyIElQcm90b2NvbCAKK3R5cGVkZWYgaTMyIElUcmFuc3BvcnQKK3R5cGVkZWYgaTMyIElGYWNlCit0eXBlZGVmIGkzMiBJQXN5bmMKK3R5cGVkZWYgaTMyIFN5c3RlbQordHlwZWRlZiBpMzIgU3lzVXRpbHMKK3R5cGVkZWYgaTMyIEdlbmVyaWNzCit0eXBlZGVmIGkzMiBUaHJpZnQKKworc3RydWN0IFN0cnVjdF9UaHJpZnRfTmFtZXMgeworICAxOiBJUHJvdG9jb2wgICBJUHJvdG9jb2wKKyAgMjogSVRyYW5zcG9ydCAgSVRyYW5zcG9ydAorICAzOiBJRmFjZSAgICAgICBJRmFjZQorICA0OiBJQXN5bmMgICAgICBJQXN5bmMKKyAgNTogU3lzdGVtICAgICAgU3lzdGVtCisgIDY6IFN5c1V0aWxzICAgIFN5c1V0aWxzCisgIDc6IEdlbmVyaWNzICAgIEdlbmVyaWNzCisgIDg6IFRocmlmdCAgICAgIFRocmlmdAorfQorCisKK2VudW0gVGhyaWZ0NDU1NF9FbnVtIHsKKyAgRm9vID0gMCwKKyAgQmFyID0gMSwKKyAgQmF6ID0gMiwKK30KKworc3RydWN0IFRocmlmdDQ1NTRfU3RydWN0IHsKKyAgMSA6IG9wdGlvbmFsIGRvdWJsZSBNaW5WYWx1ZQorICAyIDogb3B0aW9uYWwgZG91YmxlIE1heFZhbHVlCisgIDMgOiBvcHRpb25hbCBib29sIEludGVnZXIgIC8vIGNhdXNlcyBpc3N1ZQorICA0IDogb3B0aW9uYWwgVGhyaWZ0NDU1NF9FbnVtIEZvbworfQorCisKKy8vIEVPRgo=