ZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CmluZGV4IDc5ODVjZDMuLjY4YTMwNjIgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQpAQCAtMSw3ICsxLDYgQEAKLSMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC9kYmFwaS5weTogdGVzdHMgZm9yIERCLUFQSSBjb21wbGlhbmNlCiAjCi0jIENvcHlyaWdodCAoQykgMjAwNC0yMDEwIEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KKyMgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTAgR2VyaGFyZCBIw6RyaW5nIDxnaEBnaGFlcmluZy5kZT4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgcHlzcWxpdGUuCiAjCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkKaW5kZXggOWVlYmI3Yi4uODc2NDI4NCAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weQpAQCAtMSw3ICsxLDYgQEAKLSMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC9mYWN0b3J5LnB5OiB0ZXN0cyBmb3IgdGhlIHZhcmlvdXMgZmFjdG9yaWVzIGluIHB5c3FsaXRlCiAjCi0jIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KKyMgQ29weXJpZ2h0IChDKSAyMDA1LTIwMDcgR2VyaGFyZCBIw6RyaW5nIDxnaEBnaGFlcmluZy5kZT4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgcHlzcWxpdGUuCiAjCkBAIC0yMzUsMjAgKzIzNCwyMCBAQCBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKIAogICAgIGRlZiB0ZXN0X3VuaWNvZGUoc2VsZik6Ci0gICAgICAgIGF1c3RyaWEgPSAi1nN0ZXJyZWljaCIKKyAgICAgICAgYXVzdHJpYSA9ICLDlnN0ZXJyZWljaCIKICAgICAgICAgcm93ID0gc2VsZi5jb24uZXhlY3V0ZSgic2VsZWN0ID8iLCAoYXVzdHJpYSwpKS5mZXRjaG9uZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyb3dbMF0pLCBzdHIsICJ0eXBlIG9mIHJvd1swXSBtdXN0IGJlIHVuaWNvZGUiKQogCiAgICAgZGVmIHRlc3Rfc3RyaW5nKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi50ZXh0X2ZhY3RvcnkgPSBieXRlcwotICAgICAgICBhdXN0cmlhID0gItZzdGVycmVpY2giCisgICAgICAgIGF1c3RyaWEgPSAiw5ZzdGVycmVpY2giCiAgICAgICAgIHJvdyA9IHNlbGYuY29uLmV4ZWN1dGUoInNlbGVjdCA/IiwgKGF1c3RyaWEsKSkuZmV0Y2hvbmUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUocm93WzBdKSwgYnl0ZXMsICJ0eXBlIG9mIHJvd1swXSBtdXN0IGJlIGJ5dGVzIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMF0sIGF1c3RyaWEuZW5jb2RlKCJ1dGYtOCIpLCAiY29sdW1uIG11c3QgZXF1YWwgb3JpZ2luYWwgZGF0YSBpbiBVVEYtOCIpCiAKICAgICBkZWYgdGVzdF9jdXN0b20oc2VsZik6CiAgICAgICAgIHNlbGYuY29uLnRleHRfZmFjdG9yeSA9IGxhbWJkYSB4OiBzdHIoeCwgInV0Zi04IiwgImlnbm9yZSIpCi0gICAgICAgIGF1c3RyaWEgPSAi1nN0ZXJyZWljaCIKKyAgICAgICAgYXVzdHJpYSA9ICLDlnN0ZXJyZWljaCIKICAgICAgICAgcm93ID0gc2VsZi5jb24uZXhlY3V0ZSgic2VsZWN0ID8iLCAoYXVzdHJpYSwpKS5mZXRjaG9uZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyb3dbMF0pLCBzdHIsICJ0eXBlIG9mIHJvd1swXSBtdXN0IGJlIHVuaWNvZGUiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocm93WzBdLmVuZHN3aXRoKCJyZWljaCIpLCAiY29sdW1uIG11c3QgY29udGFpbiBvcmlnaW5hbCBkYXRhIikKQEAgLTI1OCw3ICsyNTcsNyBAQCBkZWYgdGVzdF9vcHRpbWl6ZWRfdW5pY29kZShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgY206CiAgICAgICAgICAgICBzZWxmLmNvbi50ZXh0X2ZhY3RvcnkgPSBzcWxpdGUuT3B0aW1pemVkVW5pY29kZQogICAgICAgICBzZWxmLmFzc2VydEluKCJmYWN0b3J5LnB5IiwgY20uZmlsZW5hbWUpCi0gICAgICAgIGF1c3RyaWEgPSAi1nN0ZXJyZWljaCIKKyAgICAgICAgYXVzdHJpYSA9ICLDlnN0ZXJyZWljaCIKICAgICAgICAgZ2VybWFueSA9ICJEZXV0Y2hsYW5kIgogICAgICAgICBhX3JvdyA9IHNlbGYuY29uLmV4ZWN1dGUoInNlbGVjdCA/IiwgKGF1c3RyaWEsKSkuZmV0Y2hvbmUoKQogICAgICAgICBkX3JvdyA9IHNlbGYuY29uLmV4ZWN1dGUoInNlbGVjdCA/IiwgKGdlcm1hbnksKSkuZmV0Y2hvbmUoKQpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9ob29rcy5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvaG9va3MucHkKaW5kZXggNDI1MDg4OC4uYTIxOWU4OSAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9ob29rcy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L2hvb2tzLnB5CkBAIC0xLDcgKzEsNiBAQAotIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L2hvb2tzLnB5OiB0ZXN0cyBmb3IgdmFyaW91cyBTUUxpdGUtc3BlY2lmaWMgaG9va3MKICMKLSMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcgR2VyaGFyZCBI5HJpbmcgPGdoQGdoYWVyaW5nLmRlPgorIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNyBHZXJoYXJkIEjDpHJpbmcgPGdoQGdoYWVyaW5nLmRlPgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBweXNxbGl0ZS4KICMKQEAgLTQyLDcgKzQxLDcgQEAgZGVmIHRlc3RfY3JlYXRlX2NvbGxhdGlvbl9ub3RfY2FsbGFibGUoc2VsZik6CiAgICAgZGVmIHRlc3RfY3JlYXRlX2NvbGxhdGlvbl9ub3RfYXNjaWkoc2VsZik6CiAgICAgICAgIGNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3FsaXRlLlByb2dyYW1taW5nRXJyb3IpOgotICAgICAgICAgICAgY29uLmNyZWF0ZV9jb2xsYXRpb24oImNvbGzkIiwgbGFtYmRhIHgsIHk6ICh4ID4geSkgLSAoeCA8IHkpKQorICAgICAgICAgICAgY29uLmNyZWF0ZV9jb2xsYXRpb24oImNvbGzDpCIsIGxhbWJkYSB4LCB5OiAoeCA+IHkpIC0gKHggPCB5KSkKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9jb2xsYXRpb25fYmFkX3VwcGVyKHNlbGYpOgogICAgICAgICBjbGFzcyBCYWRVcHBlclN0cihzdHIpOgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9yZWdyZXNzaW9uLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9yZWdyZXNzaW9uLnB5CmluZGV4IDEzMTI0MjQuLmM4ZTBiMjcgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvcmVncmVzc2lvbi5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3JlZ3Jlc3Npb24ucHkKQEAgLTEsNyArMSw2IEBACi0jLSotIGNvZGluZzogaXNvLTg4NTktMSAtKi0KICMgcHlzcWxpdGUyL3Rlc3QvcmVncmVzc2lvbi5weTogcHlzcWxpdGUgcmVncmVzc2lvbiB0ZXN0cwogIwotIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxMCBHZXJoYXJkIEjkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CisjIENvcHlyaWdodCAoQykgMjAwNi0yMDEwIEdlcmhhcmQgSMOkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHB5c3FsaXRlLgogIwpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQppbmRleCAzYjQ3ZmYxLi44MDI4NDkwIDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQpAQCAtMSw3ICsxLDYgQEAKLSMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC90cmFuc2FjdGlvbnMucHk6IHRlc3RzIHRyYW5zYWN0aW9ucwogIwotIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNyBHZXJoYXJkIEjkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CisjIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IEdlcmhhcmQgSMOkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHB5c3FsaXRlLgogIwpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC90eXBlcy5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvdHlwZXMucHkKaW5kZXggZGY4YWFkOS4uOTJlYzYzNCAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC90eXBlcy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3R5cGVzLnB5CkBAIC0xLDcgKzEsNiBAQAotIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L3R5cGVzLnB5OiB0ZXN0cyBmb3IgdHlwZSBjb252ZXJzaW9uIGFuZCBkZXRlY3Rpb24KICMKLSMgQ29weXJpZ2h0IChDKSAyMDA1IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KKyMgQ29weXJpZ2h0IChDKSAyMDA1IEdlcmhhcmQgSMOkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHB5c3FsaXRlLgogIwpAQCAtNDEsMTAgKzQwLDEwIEBAIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5jb24uY2xvc2UoKQogCiAgICAgZGVmIHRlc3Rfc3RyaW5nKHNlbGYpOgotICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJpbnNlcnQgaW50byB0ZXN0KHMpIHZhbHVlcyAoPykiLCAoItZzdGVycmVpY2giLCkpCisgICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QocykgdmFsdWVzICg/KSIsICgiw5ZzdGVycmVpY2giLCkpCiAgICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoInNlbGVjdCBzIGZyb20gdGVzdCIpCiAgICAgICAgIHJvdyA9IHNlbGYuY3VyLmZldGNob25lKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMF0sICLWc3RlcnJlaWNoIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMF0sICLDlnN0ZXJyZWljaCIpCiAKICAgICBkZWYgdGVzdF9zbWFsbF9pbnQoc2VsZik6CiAgICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QoaSkgdmFsdWVzICg/KSIsICg0MiwpKQpAQCAtNzUsOSArNzQsOSBAQCBkZWYgdGVzdF9ibG9iKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvd1swXSwgc2FtcGxlKQogCiAgICAgZGVmIHRlc3RfdW5pY29kZV9leGVjdXRlKHNlbGYpOgotICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJzZWxlY3QgJ9ZzdGVycmVpY2gnIikKKyAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgic2VsZWN0ICfDlnN0ZXJyZWljaCciKQogICAgICAgICByb3cgPSBzZWxmLmN1ci5mZXRjaG9uZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93WzBdLCAi1nN0ZXJyZWljaCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93WzBdLCAiw5ZzdGVycmVpY2giKQogCiBjbGFzcyBEZWNsVHlwZXNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgY2xhc3MgRm9vOgo=