R2l0IGNvbW1pdCBiM2FmNTgyMjkzNDM1MzczNzg1MTY3YzJjY2ZiZGVjZTkyZTJhYzcxIGJ5IFdv bHRoZXJhIHZhbiBIb3ZlbGwuCkNvbW1pdHRlZCBvbiAyNS8wOC8yMDE1IGF0IDE2OjE0LgpQdXNo ZWQgYnkgd29sdGhlcmF2IGludG8gYnJhbmNoICdjYWxsaWdyYS8yLjknLgoKQWxsb3cgJ3NoaWZ0 Jy1tb2RpZmVyIGFmdGVyIGRyYWdnaW5nIGFuIGFzc2lzdGFudCBoYW5kbGUgdG8gc25hcCBsaW5l cy4KClRoaXMgZ2l2ZXMgaG9yaXpvbnRhbCBzbmFwcGluZyB0byBtb3N0IHN0cmFpZ2h0LWxpbmUg YXNzaXN0YW50cy4KVGhlIHJhZGlhbCBhc3Npc3RhbnRzIHdpbGwgaGF2ZSB0aGUgdGhpcmQgaGFu ZGxlIHNuYXAgdG8gJ3BlcmZlY3RseSBjaXJjdWxhcicuCgpTaGlmdCBpcyBhIGJpdCBvZiBhbiB1 bmZvcnR1bmF0ZSBjaG9pY2UgZ2l2ZW4gdGhlIGRpcy1tZXJnZSBub2RlIGZ1bmN0aW9uIHdhcwph dCBvbmUgcG9pbnQgYWxzbyBvbiBzaGlmdCwgYnV0IHNoaWZ0LXNuYXAgaXMgc2ltaWxhciB0byB0 aGUgb3RoZXIgdHdvIHRvb2xzCmluIGtyaXRhKHN0cmFpZ2h0IGxpbmUgYW5kIGdyYWRpZW50IHRv b2wpLCBidXQgdGhhdCBoYWQgYmVlbiBkaXNhYmxlZCBhbnl3YXkuCgpDQ0JVRzogMzMyNTI3CkND TUFJTDpraW1hZ2VzaG9wQGtkZS5vcmcKCk0gICs3MSAgIC0yICAgIGtyaXRhL3BsdWdpbnMvYXNz aXN0YW50cy9SdWxlckFzc2lzdGFudC9raXNfcnVsZXJfYXNzaXN0YW50X3Rvb2wuY2MKTSAgKzQg ICAgLTAgICAga3JpdGEvcGx1Z2lucy9hc3Npc3RhbnRzL1J1bGVyQXNzaXN0YW50L2tpc19ydWxl cl9hc3Npc3RhbnRfdG9vbC5oCgpodHRwOi8vY29tbWl0cy5rZGUub3JnL2NhbGxpZ3JhL2IzYWY1 ODIyOTM0MzUzNzM3ODUxNjdjMmNjZmJkZWNlOTJlMmFjNzEKCmRpZmYgLS1naXQgYS9rcml0YS9w bHVnaW5zL2Fzc2lzdGFudHMvUnVsZXJBc3Npc3RhbnQva2lzX3J1bGVyX2Fzc2lzdGFudF90b29s LmNjIGIva3JpdGEvcGx1Z2lucy9hc3Npc3RhbnRzL1J1bGVyQXNzaXN0YW50L2tpc19ydWxlcl9h c3Npc3RhbnRfdG9vbC5jYwppbmRleCAwYTE1NmI2Li43N2JkYzJkIDEwMDY0NAotLS0gYS9rcml0 YS9wbHVnaW5zL2Fzc2lzdGFudHMvUnVsZXJBc3Npc3RhbnQva2lzX3J1bGVyX2Fzc2lzdGFudF90 b29sLmNjCisrKyBiL2tyaXRhL3BsdWdpbnMvYXNzaXN0YW50cy9SdWxlckFzc2lzdGFudC9raXNf cnVsZXJfYXNzaXN0YW50X3Rvb2wuY2MKQEAgLTE0MSw2ICsxNDEsNyBAQCB2b2lkIEtpc1J1bGVy QXNzaXN0YW50VG9vbDo6YmVnaW5QcmltYXJ5QWN0aW9uKEtvUG9pbnRlckV2ZW50ICpldmVudCkK ICAgICAgICAgICAgICAgICBpZiAoZGlzdCA8IG1pbkRpc3QpIHsKICAgICAgICAgICAgICAgICAg ICAgbWluRGlzdCA9IGRpc3Q7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1f ZHJhZ1N0YXJ0ID0gUVBvaW50Rihhc3Npc3RhbnQtPnRvcFJpZ2h0KCkuZGF0YSgpLT54KCksYXNz aXN0YW50LT50b3BSaWdodCgpLmRhdGEoKS0+eSgpKTsKICAgICAgICAgICAgICAgICBtX2ludGVy bmFsTW9kZSA9IE1PREVfRFJBR0dJTkdfTk9ERTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9o YW5kbGVEcmFnID09IGFzc2lzdGFudC0+dG9wUmlnaHQoKSkgewogICAgICAgICAgICAgICAgIGRv dWJsZSBkaXN0ID0gbm9ybTIobW91c2VQb3MgLSBtX2NhbnZhcy0+dmlld0NvbnZlcnRlcigpLT5k b2N1bWVudFRvVmlldygqbV9oYW5kbGVEcmFnKSk7CkBAIC0xNDgsMjAgKzE0OSwyNSBAQCB2b2lk IEtpc1J1bGVyQXNzaXN0YW50VG9vbDo6YmVnaW5QcmltYXJ5QWN0aW9uKEtvUG9pbnRlckV2ZW50 ICpldmVudCkKICAgICAgICAgICAgICAgICAgICAgbWluRGlzdCA9IGRpc3Q7CiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgIG1faW50ZXJuYWxNb2RlID0gTU9ERV9EUkFHR0lOR19O T0RFOworICAgICAgICAgICAgICAgIG1fZHJhZ1N0YXJ0ID0gUVBvaW50Rihhc3Npc3RhbnQtPnRv cExlZnQoKS5kYXRhKCktPngoKSxhc3Npc3RhbnQtPnRvcExlZnQoKS5kYXRhKCktPnkoKSk7CiAg ICAgICAgICAgICB9IGVsc2UgaWYgKG1faGFuZGxlRHJhZyA9PSBhc3Npc3RhbnQtPmJvdHRvbUxl ZnQoKSkgewogICAgICAgICAgICAgICAgIGRvdWJsZSBkaXN0ID0gbm9ybTIobW91c2VQb3MgLSBt X2NhbnZhcy0+dmlld0NvbnZlcnRlcigpLT5kb2N1bWVudFRvVmlldygqbV9oYW5kbGVEcmFnKSk7 CiAgICAgICAgICAgICAgICAgaWYgKGRpc3QgPCBtaW5EaXN0KSB7CiAgICAgICAgICAgICAgICAg ICAgIG1pbkRpc3QgPSBkaXN0OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBt X2ludGVybmFsTW9kZSA9IE1PREVfRFJBR0dJTkdfTk9ERTsKKyAgICAgICAgICAgICAgICBtX2Ry YWdTdGFydCA9IFFQb2ludEYoYXNzaXN0YW50LT5ib3R0b21SaWdodCgpLmRhdGEoKS0+eCgpLGFz c2lzdGFudC0+Ym90dG9tUmlnaHQoKS5kYXRhKCktPnkoKSk7CiAgICAgICAgICAgICB9IGVsc2Ug aWYgKG1faGFuZGxlRHJhZyA9PSBhc3Npc3RhbnQtPmJvdHRvbVJpZ2h0KCkpIHsKICAgICAgICAg ICAgICAgICBkb3VibGUgZGlzdCA9IG5vcm0yKG1vdXNlUG9zIC0gbV9jYW52YXMtPnZpZXdDb252 ZXJ0ZXIoKS0+ZG9jdW1lbnRUb1ZpZXcoKm1faGFuZGxlRHJhZykpOwogICAgICAgICAgICAgICAg IGlmIChkaXN0IDwgbWluRGlzdCkgewogICAgICAgICAgICAgICAgICAgICBtaW5EaXN0ID0gZGlz dDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9pbnRlcm5hbE1vZGUgPSBN T0RFX0RSQUdHSU5HX05PREU7CisgICAgICAgICAgICAgICAgbV9kcmFnU3RhcnQgPSBRUG9pbnRG KGFzc2lzdGFudC0+Ym90dG9tTGVmdCgpLmRhdGEoKS0+eCgpLGFzc2lzdGFudC0+Ym90dG9tTGVm dCgpLmRhdGEoKS0+eSgpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9oYW5kbGVEcmFnID09 IGFzc2lzdGFudC0+bGVmdE1pZGRsZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9pbnRlcm5hbE1v ZGUgPSBNT0RFX0RSQUdHSU5HX1RSQU5TTEFUSU5HX1RXT05PREVTOworICAgICAgICAgICAgICAg IG1fZHJhZ1N0YXJ0ID0gUVBvaW50RigoYXNzaXN0YW50LT5ib3R0b21MZWZ0KCkuZGF0YSgpLT54 KCkrYXNzaXN0YW50LT50b3BMZWZ0KCkuZGF0YSgpLT54KCkpKjAuNSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGFzc2lzdGFudC0+Ym90dG9tTGVmdCgpLmRhdGEoKS0+ eSgpK2Fzc2lzdGFudC0+dG9wTGVmdCgpLmRhdGEoKS0+eSgpKSowLjUpOwogICAgICAgICAgICAg ICAgIG1fc2VsZWN0ZWROb2RlMSA9IG5ldyBLaXNQYWludGluZ0Fzc2lzdGFudEhhbmRsZShhc3Np c3RhbnQtPnRvcExlZnQoKS5kYXRhKCktPngoKSxhc3Npc3RhbnQtPnRvcExlZnQoKS5kYXRhKCkt PnkoKSk7CiAgICAgICAgICAgICAgICAgbV9zZWxlY3RlZE5vZGUyID0gbmV3IEtpc1BhaW50aW5n QXNzaXN0YW50SGFuZGxlKGFzc2lzdGFudC0+Ym90dG9tTGVmdCgpLmRhdGEoKS0+eCgpLGFzc2lz dGFudC0+Ym90dG9tTGVmdCgpLmRhdGEoKS0+eSgpKTsKICAgICAgICAgICAgICAgICBtX25ld0Fz c2lzdGFudCA9IEtpc1BhaW50aW5nQXNzaXN0YW50RmFjdG9yeVJlZ2lzdHJ5OjppbnN0YW5jZSgp LT5nZXQoInBlcnNwZWN0aXZlIiktPmNyZWF0ZVBhaW50aW5nQXNzaXN0YW50KCk7CkBAIC0xNzQs NiArMTgwLDggQEAgdm9pZCBLaXNSdWxlckFzc2lzdGFudFRvb2w6OmJlZ2luUHJpbWFyeUFjdGlv bihLb1BvaW50ZXJFdmVudCAqZXZlbnQpCiAgICAgICAgICAgICAgICAgbV9jYW52YXMtPnVwZGF0 ZUNhbnZhcygpOyAvLyBUT0RPIHVwZGF0ZSBvbmx5IHRoZSByZWxldmFudCBwYXJ0IG9mIHRoZSBj YW52YXMKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG1f aGFuZGxlRHJhZyA9PSBhc3Npc3RhbnQtPnJpZ2h0TWlkZGxlKCkpIHsKKyAgICAgICAgICAgICAg ICBtX2RyYWdTdGFydCA9IFFQb2ludEYoKGFzc2lzdGFudC0+dG9wUmlnaHQoKS5kYXRhKCktPngo KSthc3Npc3RhbnQtPmJvdHRvbVJpZ2h0KCkuZGF0YSgpLT54KCkpKjAuNSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFzc2lzdGFudC0+dG9wUmlnaHQoKS5kYXRhKCkt PnkoKSthc3Npc3RhbnQtPmJvdHRvbVJpZ2h0KCkuZGF0YSgpLT55KCkpKjAuNSk7CiAgICAgICAg ICAgICAgICAgbV9pbnRlcm5hbE1vZGUgPSBNT0RFX0RSQUdHSU5HX1RSQU5TTEFUSU5HX1RXT05P REVTOwogICAgICAgICAgICAgICAgIG1fc2VsZWN0ZWROb2RlMSA9IG5ldyBLaXNQYWludGluZ0Fz c2lzdGFudEhhbmRsZShhc3Npc3RhbnQtPnRvcFJpZ2h0KCkuZGF0YSgpLT54KCksYXNzaXN0YW50 LT50b3BSaWdodCgpLmRhdGEoKS0+eSgpKTsKICAgICAgICAgICAgICAgICBtX3NlbGVjdGVkTm9k ZTIgPSBuZXcgS2lzUGFpbnRpbmdBc3Npc3RhbnRIYW5kbGUoYXNzaXN0YW50LT5ib3R0b21SaWdo dCgpLmRhdGEoKS0+eCgpLGFzc2lzdGFudC0+Ym90dG9tUmlnaHQoKS5kYXRhKCktPnkoKSk7CkBA IC0xODcsNiArMTk1LDggQEAgdm9pZCBLaXNSdWxlckFzc2lzdGFudFRvb2w6OmJlZ2luUHJpbWFy eUFjdGlvbihLb1BvaW50ZXJFdmVudCAqZXZlbnQpCiAgICAgICAgICAgICAgICAgbV9jYW52YXMt PnVwZGF0ZUNhbnZhcygpOyAvLyBUT0RPIHVwZGF0ZSBvbmx5IHRoZSByZWxldmFudCBwYXJ0IG9m IHRoZSBjYW52YXMKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9IGVsc2Ug aWYgKG1faGFuZGxlRHJhZyA9PSBhc3Npc3RhbnQtPnRvcE1pZGRsZSgpKSB7CisgICAgICAgICAg ICAgICAgbV9kcmFnU3RhcnQgPSBRUG9pbnRGKChhc3Npc3RhbnQtPnRvcExlZnQoKS5kYXRhKCkt PngoKSthc3Npc3RhbnQtPnRvcFJpZ2h0KCkuZGF0YSgpLT54KCkpKjAuNSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFzc2lzdGFudC0+dG9wTGVmdCgpLmRhdGEoKS0+ eSgpK2Fzc2lzdGFudC0+dG9wUmlnaHQoKS5kYXRhKCktPnkoKSkqMC41KTsKICAgICAgICAgICAg ICAgICBtX2ludGVybmFsTW9kZSA9IE1PREVfRFJBR0dJTkdfVFJBTlNMQVRJTkdfVFdPTk9ERVM7 CiAgICAgICAgICAgICAgICAgbV9zZWxlY3RlZE5vZGUxID0gbmV3IEtpc1BhaW50aW5nQXNzaXN0 YW50SGFuZGxlKGFzc2lzdGFudC0+dG9wTGVmdCgpLmRhdGEoKS0+eCgpLGFzc2lzdGFudC0+dG9w TGVmdCgpLmRhdGEoKS0+eSgpKTsKICAgICAgICAgICAgICAgICBtX3NlbGVjdGVkTm9kZTIgPSBu ZXcgS2lzUGFpbnRpbmdBc3Npc3RhbnRIYW5kbGUoYXNzaXN0YW50LT50b3BSaWdodCgpLmRhdGEo KS0+eCgpLGFzc2lzdGFudC0+dG9wUmlnaHQoKS5kYXRhKCktPnkoKSk7CkBAIC0yMDAsNiArMjEw LDggQEAgdm9pZCBLaXNSdWxlckFzc2lzdGFudFRvb2w6OmJlZ2luUHJpbWFyeUFjdGlvbihLb1Bv aW50ZXJFdmVudCAqZXZlbnQpCiAgICAgICAgICAgICAgICAgbV9jYW52YXMtPnVwZGF0ZUNhbnZh cygpOyAvLyBUT0RPIHVwZGF0ZSBvbmx5IHRoZSByZWxldmFudCBwYXJ0IG9mIHRoZSBjYW52YXMK ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG1faGFuZGxl RHJhZyA9PSBhc3Npc3RhbnQtPmJvdHRvbU1pZGRsZSgpKSB7CisgICAgICAgICAgICAgICAgbV9k cmFnU3RhcnQgPSBRUG9pbnRGKChhc3Npc3RhbnQtPmJvdHRvbUxlZnQoKS5kYXRhKCktPngoKSth c3Npc3RhbnQtPmJvdHRvbVJpZ2h0KCkuZGF0YSgpLT54KCkpKjAuNSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGFzc2lzdGFudC0+Ym90dG9tTGVmdCgpLmRhdGEoKS0+ eSgpK2Fzc2lzdGFudC0+Ym90dG9tUmlnaHQoKS5kYXRhKCktPnkoKSkqMC41KTsKICAgICAgICAg ICAgICAgICBtX2ludGVybmFsTW9kZSA9IE1PREVfRFJBR0dJTkdfVFJBTlNMQVRJTkdfVFdPTk9E RVM7CiAgICAgICAgICAgICAgICAgbV9zZWxlY3RlZE5vZGUxID0gbmV3IEtpc1BhaW50aW5nQXNz aXN0YW50SGFuZGxlKGFzc2lzdGFudC0+Ym90dG9tTGVmdCgpLmRhdGEoKS0+eCgpLGFzc2lzdGFu dC0+Ym90dG9tTGVmdCgpLmRhdGEoKS0+eSgpKTsKICAgICAgICAgICAgICAgICBtX3NlbGVjdGVk Tm9kZTIgPSBuZXcgS2lzUGFpbnRpbmdBc3Npc3RhbnRIYW5kbGUoYXNzaXN0YW50LT5ib3R0b21S aWdodCgpLmRhdGEoKS0+eCgpLGFzc2lzdGFudC0+Ym90dG9tUmlnaHQoKS5kYXRhKCktPnkoKSk7 CkBAIC0yMTMsOCArMjI1LDM5IEBAIHZvaWQgS2lzUnVsZXJBc3Npc3RhbnRUb29sOjpiZWdpblBy aW1hcnlBY3Rpb24oS29Qb2ludGVyRXZlbnQgKmV2ZW50KQogICAgICAgICAgICAgICAgIG1fY2Fu dmFzLT51cGRhdGVDYW52YXMoKTsgLy8gVE9ETyB1cGRhdGUgb25seSB0aGUgcmVsZXZhbnQgcGFy dCBvZiB0aGUgY2FudmFzCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQor ICAgICAgICAgICAgbV9zbmFwSXNSYWRpYWwgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmICht X2hhbmRsZURyYWcgJiYgYXNzaXN0YW50LT5oYW5kbGVzKCkuc2l6ZSgpPjEgJiYgKGFzc2lzdGFu dC0+aWQoKSA9PSAicnVsZXIiIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhc3Npc3RhbnQtPmlkKCkgPT0gInBhcmFsbGVsIHJ1bGVyIiB8fAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXNzaXN0YW50LT5pZCgpID09ICJpbmZpbml0ZSBydWxlciIg fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lzdGFudC0+aWQoKSA9 PSAic3BsaW5lIikpeworICAgICAgICAgICAgaWYgKG1faGFuZGxlRHJhZyA9PSBhc3Npc3RhbnQt PmhhbmRsZXMoKVswXSkgeworICAgICAgICAgICAgICAgIG1fZHJhZ1N0YXJ0ID0gKmFzc2lzdGFu dC0+aGFuZGxlcygpWzFdOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX2hhbmRsZURyYWcgPT0g YXNzaXN0YW50LT5oYW5kbGVzKClbMV0pIHsKKyAgICAgICAgICAgICAgICBtX2RyYWdTdGFydCA9 ICphc3Npc3RhbnQtPmhhbmRsZXMoKVswXTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9oYW5k bGVEcmFnID09IGFzc2lzdGFudC0+aGFuZGxlcygpWzJdKSB7CisgICAgICAgICAgICAgICAgbV9k cmFnU3RhcnQgPSAqYXNzaXN0YW50LT5oYW5kbGVzKClbMF07CisgICAgICAgICAgICB9IGVsc2Ug aWYgKG1faGFuZGxlRHJhZyA9PSBhc3Npc3RhbnQtPmhhbmRsZXMoKVszXSkgeworICAgICAgICAg ICAgICAgIG1fZHJhZ1N0YXJ0ID0gKmFzc2lzdGFudC0+aGFuZGxlcygpWzFdOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgbV9zbmFwSXNSYWRpYWwgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNl IGlmIChtX2hhbmRsZURyYWcgJiYgYXNzaXN0YW50LT5oYW5kbGVzKCkuc2l6ZSgpPjIgJiYgKGFz c2lzdGFudC0+aWQoKSA9PSAiZWxsaXBzZSIgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFzc2lzdGFudC0+aWQoKSA9PSAiY29uY2VudHJpYyBlbGxpcHNlIiB8fAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzaXN0YW50LT5pZCgpID09ICJmaXNo ZXllLXBvaW50IikpeworICAgICAgICAgICAgbV9zbmFwSXNSYWRpYWwgPSBmYWxzZTsKKyAgICAg ICAgICAgIGlmIChtX2hhbmRsZURyYWcgPT0gYXNzaXN0YW50LT5oYW5kbGVzKClbMF0pIHsKKyAg ICAgICAgICAgICAgICBtX2RyYWdTdGFydCA9ICphc3Npc3RhbnQtPmhhbmRsZXMoKVsxXTsKKyAg ICAgICAgICAgIH0gZWxzZSBpZiAobV9oYW5kbGVEcmFnID09IGFzc2lzdGFudC0+aGFuZGxlcygp WzFdKSB7CisgICAgICAgICAgICAgICAgbV9kcmFnU3RhcnQgPSAqYXNzaXN0YW50LT5oYW5kbGVz KClbMF07CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1faGFuZGxlRHJhZyA9PSBhc3Npc3RhbnQt PmhhbmRsZXMoKVsyXSkgeworICAgICAgICAgICAgICAgIG1fZHJhZ1N0YXJ0ID0gYXNzaXN0YW50 LT5idXR0b25Qb3NpdGlvbigpOworICAgICAgICAgICAgICAgIG1fcmFkaXVzID0gUUxpbmVGKG1f ZHJhZ1N0YXJ0LCAqYXNzaXN0YW50LT5oYW5kbGVzKClbMF0pOworICAgICAgICAgICAgICAgIG1f c25hcElzUmFkaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgbV9kcmFnU3RhcnQgPSBhc3Npc3RhbnQtPmJ1dHRvblBv c2l0aW9uKCk7CisgICAgICAgICAgICBtX3NuYXBJc1JhZGlhbCA9IGZhbHNlOwogICAgICAgICB9 Ci0gICAgICAgIAogICAgIH0KIAogICAgIGlmIChtX2hhbmRsZURyYWcpIHsKQEAgLTI4OSw2ICsz MzIsMTYgQEAgdm9pZCBLaXNSdWxlckFzc2lzdGFudFRvb2w6OmNvbnRpbnVlUHJpbWFyeUFjdGlv bihLb1BvaW50ZXJFdmVudCAqZXZlbnQpCiB7CiAgICAgaWYgKG1faGFuZGxlRHJhZykgewogICAg ICAgICAqbV9oYW5kbGVEcmFnID0gZXZlbnQtPnBvaW50OworICAgICAgICAvL3BvcnRlZCBmcm9t IHRoZSBncmFkaWVudCB0b29sLi4uIHdlIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhpcyBtb3JlIGlu IHRoZSBmdXR1cmUuCisgICAgICAgIGlmIChldmVudC0+bW9kaWZpZXJzKCkgPT0gUXQ6OlNoaWZ0 TW9kaWZpZXIgJiYgbV9zbmFwSXNSYWRpYWwpIHsKKyAgICAgICAgICAgIFFMaW5lRiBkcmFnUmFk aXVzID0gUUxpbmVGKG1fZHJhZ1N0YXJ0LCBldmVudC0+cG9pbnQpOworICAgICAgICAgICAgZHJh Z1JhZGl1cy5zZXRMZW5ndGgobV9yYWRpdXMubGVuZ3RoKCkpOyAKKyAgICAgICAgICAgICptX2hh bmRsZURyYWcgPSBkcmFnUmFkaXVzLnAyKCk7CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQtPm1v ZGlmaWVycygpID09IFF0OjpTaGlmdE1vZGlmaWVyICkgeworICAgICAgICAgICAgKm1faGFuZGxl RHJhZyA9IHN0cmFpZ2h0TGluZShldmVudC0+cG9pbnQsIG1fZHJhZ1N0YXJ0KTsKKyAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICptX2hhbmRsZURyYWcgPSBldmVudC0+cG9pbnQ7CisgICAg ICAgIH0KICAgICAgICAgbV9oYW5kbGVEcmFnLT51bmNhY2hlKCk7CiAKICAgICAgICAgbV9oYW5k bGVDb21iaW5lID0gMDsKQEAgLTQ2NCw3ICs1MTcsNyBAQCB2b2lkIEtpc1J1bGVyQXNzaXN0YW50 VG9vbDo6bW91c2VNb3ZlRXZlbnQoS29Qb2ludGVyRXZlbnQgKmV2ZW50KQogICAgICAgICAqbV9u ZXdBc3Npc3RhbnQtPmhhbmRsZXMoKS5iYWNrKCkgPSBldmVudC0+cG9pbnQ7CiAgICAgICAgIG1f Y2FudmFzLT51cGRhdGVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKG1fbmV3QXNzaXN0YW50ICYm IG1faW50ZXJuYWxNb2RlID09IE1PREVfRFJBR0dJTkdfVFJBTlNMQVRJTkdfVFdPTk9ERVMpIHsK LSAgICAgICAgUVBvaW50RiB0cmFuc2xhdGUgPSBldmVudC0+cG9pbnQgLSBtX2RyYWdFbmQ7Cisg ICAgICAgIFFQb2ludEYgdHJhbnNsYXRlID0gZXZlbnQtPnBvaW50IC0gbV9kcmFnRW5kOzsKICAg ICAgICAgbV9kcmFnRW5kID0gZXZlbnQtPnBvaW50OwogICAgICAgICBtX3NlbGVjdGVkTm9kZTEu ZGF0YSgpLT5vcGVyYXRvciA9KFFQb2ludEYobV9zZWxlY3RlZE5vZGUxLmRhdGEoKS0+eCgpLG1f c2VsZWN0ZWROb2RlMS5kYXRhKCktPnkoKSkgKyB0cmFuc2xhdGUpOwogICAgICAgICBtX3NlbGVj dGVkTm9kZTIuZGF0YSgpLT5vcGVyYXRvciA9IChRUG9pbnRGKG1fc2VsZWN0ZWROb2RlMi5kYXRh KCktPngoKSxtX3NlbGVjdGVkTm9kZTIuZGF0YSgpLT55KCkpICsgdHJhbnNsYXRlKTsKQEAgLTQ3 Miw2ICs1MjUsMjIgQEAgdm9pZCBLaXNSdWxlckFzc2lzdGFudFRvb2w6Om1vdXNlTW92ZUV2ZW50 KEtvUG9pbnRlckV2ZW50ICpldmVudCkKICAgICB9CiB9CiAKK1FQb2ludEYgS2lzUnVsZXJBc3Np c3RhbnRUb29sOjpzdHJhaWdodExpbmUoUVBvaW50RiBwb2ludCwgUVBvaW50RiBjb21wYXJlKQor eworICAgIFFQb2ludEYgY29tcGFyaXNvbiA9IHBvaW50IC0gY29tcGFyZTsKKyAgICBRUG9pbnRG IHJlc3VsdDsKKworICAgIGlmIChmYWJzKGNvbXBhcmlzb24ueCgpKSA+IGZhYnMoY29tcGFyaXNv bi55KCkpKSB7CisgICAgICAgIHJlc3VsdC5zZXRYKHBvaW50LngoKSk7CisgICAgICAgIHJlc3Vs dC5zZXRZKGNvbXBhcmUueSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQuc2V0WChj b21wYXJlLngoKSk7CisgICAgICAgIHJlc3VsdC5zZXRZKHBvaW50LnkoKSk7CisgICAgfQorCisg ICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBLaXNSdWxlckFzc2lzdGFudFRvb2w6OnBhaW50 KFFQYWludGVyJiBfZ2MsIGNvbnN0IEtvVmlld0NvbnZlcnRlciAmX2NvbnZlcnRlcikKIHsKICAg ICBRQ29sb3IgaGFuZGxlc0NvbG9yKDAsIDAsIDAsIDEyNSk7CmRpZmYgLS1naXQgYS9rcml0YS9w bHVnaW5zL2Fzc2lzdGFudHMvUnVsZXJBc3Npc3RhbnQva2lzX3J1bGVyX2Fzc2lzdGFudF90b29s LmggYi9rcml0YS9wbHVnaW5zL2Fzc2lzdGFudHMvUnVsZXJBc3Npc3RhbnQva2lzX3J1bGVyX2Fz c2lzdGFudF90b29sLmgKaW5kZXggZjRkYzE1NC4uMGZmMDJjOSAxMDA2NDQKLS0tIGEva3JpdGEv cGx1Z2lucy9hc3Npc3RhbnRzL1J1bGVyQXNzaXN0YW50L2tpc19ydWxlcl9hc3Npc3RhbnRfdG9v bC5oCisrKyBiL2tyaXRhL3BsdWdpbnMvYXNzaXN0YW50cy9SdWxlckFzc2lzdGFudC9raXNfcnVs ZXJfYXNzaXN0YW50X3Rvb2wuaApAQCAtNTksNiArNTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg b3V0bGluZU9uKEtpc1BhaW50aW5nQXNzaXN0YW50KiBhc3Npc3RhbnQpOwogICAgIHZvaWQgb3V0 bGluZU9mZihLaXNQYWludGluZ0Fzc2lzdGFudCogYXNzaXN0YW50KTsKICAgICBib29sIG1vdXNl TmVhcihjb25zdCBRUG9pbnRGJiBtb3VzZXAsIGNvbnN0IFFQb2ludEYmIHBvaW50KTsKKyAgICBR UG9pbnRGIHN0cmFpZ2h0TGluZShRUG9pbnRGIHBvaW50LCBRUG9pbnRGIGNvbXBhcmUpOwogICAg IEtpc1BhaW50aW5nQXNzaXN0YW50SGFuZGxlU1Agbm9kZU5lYXJQb2ludChLaXNQYWludGluZ0Fz c2lzdGFudCogZ3JpZCwgUVBvaW50RiBwb2ludCk7CiAKIHB1YmxpYyBRX1NMT1RTOgpAQCAtODQs NiArODUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgUVBvaW50RiBtX21vdXNlUG9zaXRpb247CiAgICAg VWk6OkFzc2lzdGFudHNUb29sT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgUVdpZGdldCogbV9vcHRp b25zV2lkZ2V0OworICAgIFFQb2ludEYgbV9kcmFnU3RhcnQ7CisgICAgUUxpbmVGIG1fcmFkaXVz OworICAgIGJvb2wgbV9zbmFwSXNSYWRpYWw7CiAgICAgUVBvaW50RiBtX2RyYWdFbmQ7CiAKIHBy aXZhdGU6Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkty aXRhIG1haWxpbmcgbGlzdApraW1hZ2VzaG9wQGtkZS5vcmcKaHR0cHM6Ly9tYWlsLmtkZS5vcmcv bWFpbG1hbi9saXN0aW5mby9raW1hZ2VzaG9wCg==