From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 8654 invoked from network); 31 Dec 2023 19:08:07 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 31 Dec 2023 19:08:07 -0000 Content-Type: multipart/mixed; boundary="===============8843291510377370719==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_lbreakouthd=3A_update_to_1=2E1=2E5?= To: ml@inbox.vuxu.org From: MIvanchev Reply-to: ml@inbox.vuxu.org Message-ID: Date: Sun, 31 Dec 2023 20:08:07 +0100 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============8843291510377370719== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IE1JdmFuY2hldiBhZ2FpbnN0IG1hc3RlciBv biB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vTUl2YW5j aGV2L3ZvaWQtcGFja2FnZXMgbGJyZWFrb3V0aGQtdXBkYXRlCmh0dHBzOi8vZ2l0aHViLmNvbS92 b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80ODAxMQoKbGJyZWFrb3V0aGQ6IHVwZGF0ZSB0 byAxLjEuNQojIyMjIFRlc3RpbmcgdGhlIGNoYW5nZXMNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMg aW4gdGhpcyBQUjogKipZRVMqKg0KDQojIyMjIExvY2FsIGJ1aWxkIHRlc3RpbmcNCi0gSSBidWls dCB0aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICh4ODZfNjQtR0xJ QkMpCgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lk LXBhY2thZ2VzL3B1bGwvNDgwMTEucGF0Y2ggaXMgYXR0YWNoZWQ= --===============8843291510377370719== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-lbreakouthd-update-48011.patch" RnJvbSBkZjdlYTAxNmMzMTQ3OGI5MWYyYmRhMzA4NGRkNDQzZmZmNTA4YjQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWhhaWwgSXZhbmNoZXYgPGNvbnRhY3RAaXZhbmNoZXYubmV0 PgpEYXRlOiBTdW4sIDMxIERlYyAyMDIzIDExOjQxOjEwICswMTAwClN1YmplY3Q6IFtQQVRDSF0g bGJyZWFrb3V0aGQ6IHVwZGF0ZSB0byAxLjEuNQoKLS0tCiBzcmNwa2dzL2xicmVha291dGhkL3Bh dGNoZXMvbXVzbC5wYXRjaCB8IDc0MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmNwa2dz L2xicmVha291dGhkL3RlbXBsYXRlICAgICAgICAgICB8ICAgNCArLQogMiBmaWxlcyBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDc0NSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2xicmVha291dGhkL3BhdGNoZXMvbXVzbC5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGJyZWFrb3V0aGQvcGF0Y2hlcy9tdXNsLnBhdGNoIGIvc3JjcGtncy9sYnJlYWtvdXRoZC9w YXRjaGVzL211c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkOWFkZTJl ZGNhMjIuLjAwMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sYnJlYWtvdXRoZC9wYXRjaGVzL211 c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NDMgKzAsMCBAQAotdWludCBpcyBub3QgcG9y dGFibGUsIHVzZSB1bnNpZ25lZCBpbnQgaW5zdGVhZC4gRml4ZXMgbXVzbC4KLQktLXh0cmFlbWUK LQotLS0tIGEvc3JjL2NsaWVudGdhbWUuY3BwCTIwMTgtMTItMjEgMTk6NDM6NTEuMDAwMDAwMDAw ICswMTAwCi0rKysgYi9zcmMvY2xpZW50Z2FtZS5jcHAJMjAxOS0wNi0xMCAxMTowNDoyNS4yMzA1 NTE4NTAgKzAyMDAKLUBAIC04OCw3ICs4OCw3IEBAIGludCBDbGllbnRHYW1lOjppbml0KGNvbnN0 IHN0cmluZyYgc2V0bmEKLSBDbGllbnRQbGF5ZXIgKkNsaWVudEdhbWU6OmdldE5leHRQbGF5ZXIo KQotIHsKLSAJQ2xpZW50UGxheWVyICpwID0gTlVMTDsKLS0JdWludCBzdGFydElkID0gY3VyUGxh eWVyOwotKwl1bnNpZ25lZCBpbnQgc3RhcnRJZCA9IGN1clBsYXllcjsKLSAKLSAJZG8gewotIAkJ Y3VyUGxheWVyKys7Ci1AQCAtMTA3LDcgKzEwNyw3IEBAIENsaWVudFBsYXllciAqQ2xpZW50R2Ft ZTo6Z2V0TmV4dFBsYXllcigKLSAgKiBwaXMgaXMgd2hhdCBjb250cm9scyBoYXZlIGJlZW4gYWN0 aXZhdGVkCi0gICogcmV0dXJuIGZsYWdzIHdoYXQgaGFzIHRvIGJlIHJlbmRlcmVkIG5ldwotICAq LwotLWludCBDbGllbnRHYW1lOjp1cGRhdGUodWludCBtcywgZG91YmxlIHJ4LCBQYWRkbGVJbnB1 dFN0YXRlICZwaXMpCi0raW50IENsaWVudEdhbWU6OnVwZGF0ZSh1bnNpZ25lZCBpbnQgbXMsIGRv dWJsZSByeCwgUGFkZGxlSW5wdXRTdGF0ZSAmcGlzKQotIHsKLSAJaW50IG9sZFNjb3JlID0gZ2Ft ZS0+cGFkZGxlc1swXS0+c2NvcmU7Ci0gCWludCByZXQgPSAwOwotLS0tIGEvc3JjL2NsaWVudGdh bWUuaAkyMDE5LTAzLTA3IDE1OjM2OjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGIvc3JjL2NsaWVu dGdhbWUuaAkyMDE5LTA2LTEwIDExOjA0OjI1LjIyNjU1MTgwMiArMDIwMAotQEAgLTIxLDE5ICsy MSwxOSBAQAotIAotIGNsYXNzIENsaWVudFBsYXllciB7Ci0gCXN0cmluZyBuYW1lOwotLQl1aW50 IGxpdmVzOwotLQl1aW50IG1heExpdmVzOwotKwl1bnNpZ25lZCBpbnQgbGl2ZXM7Ci0rCXVuc2ln bmVkIGludCBtYXhMaXZlczsKLSAJaW50IHNjb3JlOwotLQl1aW50IGxldmVsOwotKwl1bnNpZ25l ZCBpbnQgbGV2ZWw7Ci0gCUxldmVsIHNuYXBzaG90OwotIHB1YmxpYzoKLS0JQ2xpZW50UGxheWVy KGNvbnN0IHN0cmluZyAmbiwgdWludCBsLCB1aW50IG1sKSA6Ci0rCUNsaWVudFBsYXllcihjb25z dCBzdHJpbmcgJm4sIHVuc2lnbmVkIGludCBsLCB1bnNpZ25lZCBpbnQgbWwpIDoKLSAJCQluYW1l KG4pLCBsaXZlcyhsKSwgbWF4TGl2ZXMobWwpLCBzY29yZSgwKSwgbGV2ZWwoMCkgewotIAkJX2xv Z2luZm8oIkFkZGVkIHBsYXllciAlc1xuIixuLmNfc3RyKCkpOwotIAl9OwotIAljb25zdCBzdHJp bmcmIGdldE5hbWUoKSB7IHJldHVybiBuYW1lOyB9Ci0tCXVpbnQgZ2V0TGl2ZXMoKSB7IHJldHVy biBsaXZlczsgfQotLQl1aW50IGdldE1heExpdmVzKCkgeyByZXR1cm4gbWF4TGl2ZXM7IH0KLSsJ dW5zaWduZWQgaW50IGdldExpdmVzKCkgeyByZXR1cm4gbGl2ZXM7IH0KLSsJdW5zaWduZWQgaW50 IGdldE1heExpdmVzKCkgeyByZXR1cm4gbWF4TGl2ZXM7IH0KLSAJdm9pZCBnYWluTGlmZSgpIHsK LSAJCWlmIChsaXZlcyA8IG1heExpdmVzKQotIAkJCWxpdmVzKys7Ci1AQCAtNDgsMTEgKzQ4LDEx IEBAIHB1YmxpYzoKLSAJCXNjb3JlICs9IHM7Ci0gCQlyZXR1cm4gc2NvcmU7Ci0gCX0KLS0Jdm9p ZCBzZXRMaXZlcyh1aW50IGwpIHsgbGl2ZXMgPSBsOyB9Ci0rCXZvaWQgc2V0TGl2ZXModW5zaWdu ZWQgaW50IGwpIHsgbGl2ZXMgPSBsOyB9Ci0gCXZvaWQgc2V0U2NvcmUoaW50IHMpIHsgc2NvcmUg PSBzOyB9Ci0tCXVpbnQgZ2V0TGV2ZWwoKSB7IHJldHVybiBsZXZlbDsgfQotLQl1aW50IG5leHRM ZXZlbCgpIHsgcmV0dXJuICsrbGV2ZWw7IH0KLS0Jdm9pZCBzZXRMZXZlbCh1aW50IGwpIHsgbGV2 ZWwgPSBsOyB9Ci0rCXVuc2lnbmVkIGludCBnZXRMZXZlbCgpIHsgcmV0dXJuIGxldmVsOyB9Ci0r CXVuc2lnbmVkIGludCBuZXh0TGV2ZWwoKSB7IHJldHVybiArK2xldmVsOyB9Ci0rCXZvaWQgc2V0 TGV2ZWwodW5zaWduZWQgaW50IGwpIHsgbGV2ZWwgPSBsOyB9Ci0gCXZvaWQgc2V0TGV2ZWxTbmFw c2hvdChjb25zdCBMZXZlbCAqbCkgewotIAkJaWYgKGwgPT0gTlVMTCkKLSAJCQlnYW1lX2dldF9s ZXZlbF9zbmFwc2hvdCgmc25hcHNob3QpOwotQEAgLTEwMCw3ICsxMDAsNyBAQCBjbGFzcyBDbGll bnRHYW1lIHsKLSAJR2FtZSAqZ2FtZTsgLyogY3VycmVudCBnYW1lIGNvbnRleHQgKi8KLSAJSGlz Y29yZXMgaGlzY29yZXM7Ci0gCXZlY3Rvcjx1bmlxdWVfcHRyPENsaWVudFBsYXllcj4+IHBsYXll cnM7Ci0tCXVpbnQgY3VyUGxheWVyOwotKwl1bnNpZ25lZCBpbnQgY3VyUGxheWVyOwotIAlDbGll bnRQbGF5ZXIgKmxhc3REZWFkUGxheWVyOwotIAlzdHJpbmcgbXNnOwotIAlUaW1lb3V0IGZyaWN0 aW9uVGltZW91dDsKLUBAIC0xMTQsMTIgKzExNCwxMiBAQCBwdWJsaWM6Ci0gCUNsaWVudEdhbWUo Q29uZmlnICZjZmcpOwotIAl+Q2xpZW50R2FtZSgpOwotIAlpbnQgaW5pdChjb25zdCBzdHJpbmcm IHNldG5hbWUsIGludCBsZXZlbGlkID0gMCk7Ci0tCWludCB1cGRhdGUodWludCBtcywgZG91Ymxl IHJ4LCBQYWRkbGVJbnB1dFN0YXRlICZwaXMpOwotKwlpbnQgdXBkYXRlKHVuc2lnbmVkIGludCBt cywgZG91YmxlIHJ4LCBQYWRkbGVJbnB1dFN0YXRlICZwaXMpOwotIAlHYW1lICpnZXRHYW1lQ29u dGV4dCgpIHsgcmV0dXJuIGdhbWU7IH0KLSAJc3RyaW5nIGdldExldmVsc2V0TmFtZSgpIHsgcmV0 dXJuIGxldmVsc2V0LT5uYW1lOyB9Ci0gCXZvaWQgZ2V0Q3VycmVudExldmVsTmFtZUFuZEF1dGhv cihzdHJpbmcgJm5hbWUsIHN0cmluZyAmYXV0aG9yKSB7Ci0gCQlDbGllbnRQbGF5ZXIgKnAgPSBw bGF5ZXJzW2N1clBsYXllcl0uZ2V0KCk7Ci0tCQl1aW50IGxpZCA9IHAtPmdldExldmVsKCk7Ci0r CQl1bnNpZ25lZCBpbnQgbGlkID0gcC0+Z2V0TGV2ZWwoKTsKLSAJCWlmIChsaWQgPj0gKHVpbnQp bGV2ZWxzZXQtPmNvdW50KSB7Ci0gCQkJbmFtZSA9ICJub25lIjsKLSAJCQlhdXRob3IgPSAibm9u ZSI7IC8qIGlzIGRvbmUsIHNob3VsZCBub3QgaGFwcGVuICovCi1AQCAtMTMxLDggKzEzMSw4IEBA IHB1YmxpYzoKLSAJaW50IGdldExldmVsQ291bnQoKSB7IHJldHVybiBsZXZlbHNldC0+Y291bnQ7 IH0KLSAJSGlzY29yZUNoYXJ0ICpnZXRIaXNjb3JlQ2hhcnQoKSB7IHJldHVybiBoaXNjb3Jlcy5n ZXQobGV2ZWxzZXQtPm5hbWUpOyB9Ci0gCUNsaWVudFBsYXllciogZ2V0Q3VycmVudFBsYXllcigp IHtyZXR1cm4gcGxheWVyc1tjdXJQbGF5ZXJdLmdldCgpOyB9Ci0tCXVpbnQgZ2V0Q3VycmVudFBs YXllcklkKCkge3JldHVybiBjdXJQbGF5ZXI7IH0KLS0Jdm9pZCBzZXRDdXJyZW50UGxheWVySWQo dWludCBpZCkgewotKwl1bnNpZ25lZCBpbnQgZ2V0Q3VycmVudFBsYXllcklkKCkge3JldHVybiBj dXJQbGF5ZXI7IH0KLSsJdm9pZCBzZXRDdXJyZW50UGxheWVySWQodW5zaWduZWQgaW50IGlkKSB7 Ci0gCQljdXJQbGF5ZXIgPSBpZDsKLSAJCS8qIGFkanVzdCBwYWRkbGUgc2NvcmUgKi8KLSAJCWdh bWUtPnBhZGRsZXNbMF0tPnNjb3JlID0gcGxheWVyc1tjdXJQbGF5ZXJdLT5nZXRTY29yZSgpOwot QEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6Ci0gCXZvaWQgdXBkYXRlSGlzY29yZXMoKTsKLSAJ Y29uc3Qgc3RyaW5nJiBnZXRQbGF5ZXJNZXNzYWdlKCkgeyByZXR1cm4gbXNnOyB9Ci0gCXZlY3Rv cjx1bmlxdWVfcHRyPENsaWVudFBsYXllcj4+JiBnZXRQbGF5ZXJzKCkgeyByZXR1cm4gcGxheWVy czsgfQotLQl2b2lkIHJlc3VtZVBsYXllcih1aW50IHBpZCwgdWludCBsaXZlcywgaW50IHNjb3Jl LCB1aW50IGxldmVsKSB7Ci0rCXZvaWQgcmVzdW1lUGxheWVyKHVuc2lnbmVkIGludCBwaWQsIHVu c2lnbmVkIGludCBsaXZlcywgaW50IHNjb3JlLCB1bnNpZ25lZCBpbnQgbGV2ZWwpIHsKLSAJCXBs YXllcnNbcGlkXS0+c2V0TGl2ZXMobGl2ZXMpOwotIAkJcGxheWVyc1twaWRdLT5zZXRTY29yZShz Y29yZSk7Ci0gCQlwbGF5ZXJzW3BpZF0tPnNldExldmVsKGxldmVsKTsKLS0tLSBhL3NyYy9tZW51 LmNwcAkyMDE4LTExLTI0IDE0OjM1OjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGIvc3JjL21lbnUu Y3BwCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjMxNTUxODYyICswMjAwCi1AQCAtMjQsNyArMjQsNyBA QCBleHRlcm4gU0RMX1JlbmRlcmVyICptcmM7Ci0gRm9udCAqTWVudUl0ZW06OmZOb3JtYWwgPSBO VUxMOwotIEZvbnQgKk1lbnVJdGVtOjpmRm9jdXMgPSBOVUxMOwotIEZvbnQgKk1lbnVJdGVtOjpm VG9vbHRpcCA9IE5VTEw7Ci0tdWludCBNZW51SXRlbTo6dG9vbHRpcFdpZHRoID0gMzAwOwotK3Vu c2lnbmVkIGludCBNZW51SXRlbTo6dG9vbHRpcFdpZHRoID0gMzAwOwotIAotIC8qKiBIZWxwZXIg dG8gcmVuZGVyIGEgcGFydCBvZiB0aGUgbWVudSBpdGVtLiBQb3NpdGlvbiBpcyBkZXRlcm1pbmVk Ci0gICogYnkgZ2l2ZW4gYWxpZ25tZW50LiAqLwotLS0tIGEvc3JjL21lbnUuaAkyMDE4LTEyLTIy IDEzOjMwOjU4LjAwMDAwMDAwMCArMDEwMAotKysrIGIvc3JjL21lbnUuaAkyMDE5LTA2LTEwIDEx OjA0OjI1LjIyNzU1MTgxNCArMDIwMAotQEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVjdGVkOgotIAl9 Ci0gcHVibGljOgotIAlzdGF0aWMgRm9udCAqZk5vcm1hbCwgKmZGb2N1cywgKmZUb29sdGlwOwot LQlzdGF0aWMgdWludCB0b29sdGlwV2lkdGg7Ci0rCXN0YXRpYyB1bnNpZ25lZCBpbnQgdG9vbHRp cFdpZHRoOwotIAotIAlNZW51SXRlbShjb25zdCBzdHJpbmcgJmMsIGNvbnN0IHN0cmluZyAmdHQs IGludCBhaWQgPSBBSURfTk9ORSkgOgotIAkJCWNhcHRpb24oYyksIGxibE5vcm1hbCh0cnVlKSwg bGJsRm9jdXModHJ1ZSksCi1AQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6Ci0gCQl9Ci0gCi0gCX0K LS0JdmlydHVhbCB2b2lkIHVwZGF0ZSh1aW50IG1zKSB7Ci0rCXZpcnR1YWwgdm9pZCB1cGRhdGUo dW5zaWduZWQgaW50IG1zKSB7Ci0gCQlpZiAoIWZvY3VzICYmIGZhZGluZ0FscGhhID4gMCkgewot IAkJCWZhZGluZ0FscGhhIC09IDAuNyptczsKLSAJCQlpZiAoZmFkaW5nQWxwaGEgPCAwKQotQEAg LTIxMSw5ICsyMTEsOSBAQCBwdWJsaWM6Ci0gCQlzZXRWYWx1ZShvcHRpb25zW3ZdKTsKLSAJfQot IAlNZW51SXRlbUxpc3QoY29uc3Qgc3RyaW5nICZjLCBjb25zdCBzdHJpbmcgJnR0LCBpbnQgYWlk LAotLQkJCQkJaW50ICZ2LCBjb25zdCBjaGFyICoqb3B0cywgdWludCBvcHROdW0pCi0rCQkJCQlp bnQgJnYsIGNvbnN0IGNoYXIgKipvcHRzLCB1bnNpZ25lZCBpbnQgb3B0TnVtKQotIAkJCTogTWVu dUl0ZW1SYW5nZShjLHR0LGFpZCx2LDAsb3B0TnVtLTEsMSkgewotLQkJZm9yICh1aW50IGkgPSAw OyBpIDwgb3B0TnVtOyBpKyspCi0rCQlmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG9wdE51 bTsgaSsrKQotIAkJCW9wdGlvbnMucHVzaF9iYWNrKG9wdHNbaV0pOwotIAkJc2V0VmFsdWUob3B0 aW9uc1t2XSk7Ci0gCX0KLUBAIC0yNDcsMTAgKzI0NywxMCBAQCBjbGFzcyBNZW51SXRlbUludExp c3QgOiBwdWJsaWMgTWVudUl0ZW1SCi0gCXZlY3RvcjxpbnQ+IG9wdGlvbnM7Ci0gcHVibGljOgot IAlNZW51SXRlbUludExpc3QoY29uc3Qgc3RyaW5nICZjLCBjb25zdCBzdHJpbmcgJnR0LAotLQkJ CQkJaW50ICZ2LCBjb25zdCBpbnQgKm9wdHMsIHVpbnQgb3B0TnVtKQotKwkJCQkJaW50ICZ2LCBj b25zdCBpbnQgKm9wdHMsIHVuc2lnbmVkIGludCBvcHROdW0pCi0gCQkJCTogTWVudUl0ZW1SYW5n ZShjLHR0LEFJRF9OT05FLGlkeCwwLG9wdE51bS0xLDEpLCB2YWwodikgewotIAkJaWR4ID0gMDsK LS0JCWZvciAodWludCBpID0gMDsgaSA8IG9wdE51bTsgaSsrKSB7Ci0rCQlmb3IgKHVuc2lnbmVk IGludCBpID0gMDsgaSA8IG9wdE51bTsgaSsrKSB7Ci0gCQkJaWYgKG9wdHNbaV0gPT0gdmFsKQot IAkJCQlpZHggPSBpOwotIAkJCW9wdGlvbnMucHVzaF9iYWNrKG9wdHNbaV0pOwotQEAgLTMzNCw3 ICszMzQsNyBAQCBwdWJsaWM6Ci0gCQlpbnQgdyA9IHRoZW1lLm1lbnVJdGVtV2lkdGg7Ci0gCQlp bnQgeCA9IHRoZW1lLm1lbnVYIC0gdy8yOwotIAkJaW50IHkgPSB0aGVtZS5tZW51WSAtIGgvMjsK LS0JCWZvciAodWludCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgaSsrKSB7Ci0rCQlmb3IgKHVu c2lnbmVkIGludCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgaSsrKSB7Ci0gCQkJTWVudUl0ZW1T dWIgKnN1YiA9IGR5bmFtaWNfY2FzdDxNZW51SXRlbVN1Yio+KGl0ZW1zW2ldLmdldCgpKTsKLSAJ CQlpdGVtc1tpXS0+c2V0R2VvbWV0cnkoeCwgeSArIGkqdGhlbWUubWVudUl0ZW1IZWlnaHQsCi0g CQkJCQkJdywgdGhlbWUubWVudUl0ZW1IZWlnaHQpOwotQEAgLTM0Miw3ICszNDIsNyBAQCBwdWJs aWM6Ci0gCQkJCXN1Yi0+Z2V0U3ViTWVudSgpLT5hZGp1c3QoKTsKLSAJCX0KLSAJfQotLQl2b2lk IHVwZGF0ZSh1aW50IG1zKSB7Ci0rCXZvaWQgdXBkYXRlKHVuc2lnbmVkIGludCBtcykgewotIAkJ Zm9yIChhdXRvJiBpIDogaXRlbXMpCi0gCQkJaS0+dXBkYXRlKG1zKTsKLSAJfQotLS0tIGEvc3Jj L21peGVyLmgJMjAxOS0wMy0wNyAyMDo1NDo0NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL3NyYy9t aXhlci5oCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjI4NTUxODI2ICswMjAwCi1AQCAtNjMsNyArNjMs NyBAQCBwdWJsaWM6Ci0gCQkJX2xvZ2luZm8oIk1peGVyIGNsb3NlZFxuIik7Ci0gCQl9Ci0gCX0K LS0Jdm9pZCBzZXRWb2x1bWUodWludCB2KSB7IC8qIHYgaXMgMC4uMTAwICovCi0rCXZvaWQgc2V0 Vm9sdW1lKHVuc2lnbmVkIGludCB2KSB7IC8qIHYgaXMgMC4uMTAwICovCi0gCQlpZiAodiA+IDEw MCkKLSAJCQl2ID0gMTAwOwotIAkJdiA9IHYgKiBNSVhfTUFYX1ZPTFVNRSAvIDEwMDsKLS0tLSBh L3NyYy9zZGwuY3BwCTIwMTktMDMtMDcgMTQ6MDc6MDUuMDAwMDAwMDAwICswMTAwCi0rKysgYi9z cmMvc2RsLmNwcAkyMDE5LTA2LTEwIDExOjA0OjI1LjIzMTU1MTg2MiArMDIwMAotQEAgLTQ4NCw3 ICs0ODQsNyBAQCB2b2lkIEZvbnQ6OndyaXRlVGV4dChpbnQgeCwgaW50IHksIGNvbnN0Ci0gCVNE TF9EZXN0cm95VGV4dHVyZSh0ZXgpOwotIH0KLSAKLS12b2lkIExhYmVsOjpzZXRUZXh0KEZvbnQg JmZvbnQsIGNvbnN0IHN0cmluZyAmc3RyLCB1aW50IG1heHcpCi0rdm9pZCBMYWJlbDo6c2V0VGV4 dChGb250ICZmb250LCBjb25zdCBzdHJpbmcgJnN0ciwgdW5zaWduZWQgaW50IG1heHcpCi0gewot IAlpZiAoc3RyID09ICIiKSB7Ci0gCQllbXB0eSA9IHRydWU7Ci0tLS0gYS9zcmMvc2RsLmgJMjAx OS0wMy0wNyAxMzoxNTowNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL3NyYy9zZGwuaAkyMDE5LTA2 LTEwIDExOjA0OjI1LjIyODU1MTgyNiArMDIwMAotQEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6 Ci0gCQkJcmV0dXJuIFRURl9TaXplVGV4dChmb250LHN0ci5jX3N0cigpLHcsaCk7Ci0gCQlyZXR1 cm4gMDsKLSAJfTsKLS0JaW50IGdldFdyYXBwZWRUZXh0U2l6ZShjb25zdCBzdHJpbmcmIHN0ciwg dWludCBtYXh3LCBpbnQgKncsIGludCAqaCkgewotKwlpbnQgZ2V0V3JhcHBlZFRleHRTaXplKGNv bnN0IHN0cmluZyYgc3RyLCB1bnNpZ25lZCBpbnQgbWF4dywgaW50ICp3LCBpbnQgKmgpIHsKLSAJ CSp3ID0gKmggPSAwOwotIAkJU0RMX1N1cmZhY2UgKnN1cmYgPSBUVEZfUmVuZGVyVVRGOF9CbGVu ZGVkX1dyYXBwZWQoCi0gCQkJCQkJZm9udCwgc3RyLmNfc3RyKCksIGNsciwgbWF4dyk7Ci1AQCAt Mjc1LDcgKzI3NSw3IEBAIHB1YmxpYzoKLSAJCQliID0gLTE7Ci0gCQlib3JkZXIgPSBiOwotIAl9 Ci0tCXZvaWQgc2V0VGV4dChGb250ICZmLCBjb25zdCBzdHJpbmcgJnN0ciwgdWludCBtYXggPSAw KTsKLSsJdm9pZCBzZXRUZXh0KEZvbnQgJmYsIGNvbnN0IHN0cmluZyAmc3RyLCB1bnNpZ25lZCBp bnQgbWF4ID0gMCk7Ci0gCXZvaWQgY2xlYXJUZXh0KCkgewotIAkJZW1wdHkgPSB0cnVlOwotIAl9 Ci1AQCAtMjk1LDEyICsyOTUsMTIgQEAgcHVibGljOgotIAl2b2lkIHNldEFscGhhKGludCBhKSB7 Ci0gCQlpbWcuc2V0QWxwaGEoYSk7Ci0gCX0KLS0JdWludCBnZXRIZWlnaHQoKSB7Ci0rCXVuc2ln bmVkIGludCBnZXRIZWlnaHQoKSB7Ci0gCQlpZiAoZW1wdHkpCi0gCQkJcmV0dXJuIDA7Ci0gCQly ZXR1cm4gaW1nLmdldEhlaWdodCgpOwotIAl9Ci0tCXVpbnQgZ2V0V2lkdGgoKSB7Ci0rCXVuc2ln bmVkIGludCBnZXRXaWR0aCgpIHsKLSAJCWlmIChlbXB0eSkKLSAJCQlyZXR1cm4gMDsKLSAJCXJl dHVybiBpbWcuZ2V0V2lkdGgoKTsKLS0tLSBhL3NyYy9zZWxlY3RkbGcuY3BwCTIwMTgtMTItMjEg MjA6MDI6NDguMDAwMDAwMDAwICswMTAwCi0rKysgYi9zcmMvc2VsZWN0ZGxnLmNwcAkyMDE5LTA2 LTEwIDExOjA0OjI1LjIzMjU1MTg3NCArMDIwMAotQEAgLTMxLDE3ICszMSwxNyBAQCBTZXRJbmZv OjpTZXRJbmZvKGNvbnN0IHN0cmluZyAmbiwgVGhlbWUKLSAJYXV0aG9yID0gIj8iOwotIAotIAkv KiBjcmVhdGUgZW1wdHkgcHJldmlldyAqLwotLQl1aW50IHN3ID0gdGhlbWUubWVudUJhY2tncm91 bmQuZ2V0V2lkdGgoKTsKLS0JdWludCBzaCA9IHRoZW1lLm1lbnVCYWNrZ3JvdW5kLmdldEhlaWdo dCgpOwotLQl1aW50IGJ3ID0gdGhlbWUuYnJpY2tzLmdldEdyaWRXaWR0aCgpOwotLQl1aW50IGJo ID0gdGhlbWUuYnJpY2tzLmdldEdyaWRIZWlnaHQoKTsKLS0JdWludCBzb2ZmID0gYmgvMzsKLSsJ dW5zaWduZWQgaW50IHN3ID0gdGhlbWUubWVudUJhY2tncm91bmQuZ2V0V2lkdGgoKTsKLSsJdW5z aWduZWQgaW50IHNoID0gdGhlbWUubWVudUJhY2tncm91bmQuZ2V0SGVpZ2h0KCk7Ci0rCXVuc2ln bmVkIGludCBidyA9IHRoZW1lLmJyaWNrcy5nZXRHcmlkV2lkdGgoKTsKLSsJdW5zaWduZWQgaW50 IGJoID0gdGhlbWUuYnJpY2tzLmdldEdyaWRIZWlnaHQoKTsKLSsJdW5zaWduZWQgaW50IHNvZmYg PSBiaC8zOwotIAlwcmV2aWV3LmNyZWF0ZShNQVBXSURUSCp0aGVtZS5icmlja3MuZ2V0R3JpZFdp ZHRoKCksCi0gCQkJTUFQSEVJR0hUKnRoZW1lLmJyaWNrcy5nZXRHcmlkSGVpZ2h0KCkpOwotIAlT RExfU2V0UmVuZGVyVGFyZ2V0KG1yYywgcHJldmlldy5nZXRUZXgoKSk7Ci0gCUltYWdlJiB3YWxs cGFwZXIgPSB0aGVtZS53YWxscGFwZXJzW3JhbmQoKSV0aGVtZS5udW1XYWxscGFwZXJzXTsKLS0J Zm9yICh1aW50IHd5ID0gMDsgd3kgPCBzaDsgd3kgKz0gd2FsbHBhcGVyLmdldEhlaWdodCgpKQot LQkJZm9yICh1aW50IHd4ID0gMDsgd3ggPCBzdzsgd3ggKz0gd2FsbHBhcGVyLmdldFdpZHRoKCkp Ci0rCWZvciAodW5zaWduZWQgaW50IHd5ID0gMDsgd3kgPCBzaDsgd3kgKz0gd2FsbHBhcGVyLmdl dEhlaWdodCgpKQotKwkJZm9yICh1bnNpZ25lZCBpbnQgd3ggPSAwOyB3eCA8IHN3OyB3eCArPSB3 YWxscGFwZXIuZ2V0V2lkdGgoKSkKLSAJCQl3YWxscGFwZXIuY29weSh3eCx3eSk7Ci0gCXRoZW1l LmZyYW1lU2hhZG93LmNvcHkoc29mZixzb2ZmKTsKLSAKLUBAIC02NCw3ICs2NCw3IEBAIFNldElu Zm86OlNldEluZm8oY29uc3Qgc3RyaW5nICZuLCBUaGVtZQotIAlzdHJpbmcgZnBhdGggPSBnZXRG dWxsTGV2ZWxzZXRQYXRoKG4pOwotIAlzdHJpbmcgbGluZXNbNStFRElUX0hFSUdIVF07Ci0gCWlm c3RyZWFtIGlmcyhmcGF0aCk7Ci0tCXVpbnQgb2Zmc2V0ID0gMDsKLSsJdW5zaWduZWQgaW50IG9m ZnNldCA9IDA7Ci0gCi0gCWlmICghaWZzLmlzX29wZW4oKSkgewotIAkJX2xvZ2VycigiTGV2ZWxz ZXQgJXMgbm90IGZvdW5kLCBubyBwcmV2aWV3IGNyZWF0ZWRcbiIsbi5jX3N0cigpKTsKLUBAIC03 Miw3ICs3Miw3IEBAIFNldEluZm86OlNldEluZm8oY29uc3Qgc3RyaW5nICZuLCBUaGVtZQotIAkJ U0RMX1NldFJlbmRlclRhcmdldChtcmMsIE5VTEwpOwotIAkJcmV0dXJuOwotIAl9Ci0tCWZvciAo dWludCBpID0gMDsgaSA8IDUrRURJVF9IRUlHSFQ7IGkrKykKLSsJZm9yICh1bnNpZ25lZCBpbnQg aSA9IDA7IGkgPCA1K0VESVRfSEVJR0hUOyBpKyspCi0gCQlnZXRsaW5lKGlmcyxsaW5lc1tpXSk7 Ci0gCWlmIChsaW5lc1swXS5maW5kKCJWZXJzaW9uIikgIT0gc3RyaW5nOjpucG9zKSB7Ci0gCQl2 ZXJzaW9uID0gdHJpbVN0cmluZyhsaW5lc1swXS5zdWJzdHIobGluZXNbMF0uZmluZCgnOicpKzEp KTsKLUBAIC04OSw4ICs4OSw4IEBAIFNldEluZm86OlNldEluZm8oY29uc3Qgc3RyaW5nICZuLCBU aGVtZQotIAotIAkvKiBhZGQgYnJpY2tzIG9mIGZpcnN0IGxldmVsCi0gCSAqIFhYWCBkaXJlY3Qg YWNjZXNzIHRvIGJyaWNrIGNvbnZlcnNpb24gdGFibGUgZnJvbSBsaWJnYW1lICovCi0tCWZvciAo dWludCBqID0gMDsgaiA8IEVESVRIRUlHSFQ7IGorKykKLS0JCWZvciAodWludCBpID0gMDsgaSA8 IEVESVRXSURUSDsgaSsrKSB7Ci0rCWZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgRURJVEhF SUdIVDsgaisrKQotKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBFRElUV0lEVEg7IGkr KykgewotIAkJCWludCBrID0gLTE7Ci0gCQkJZm9yICggayA9IDA7IGsgPCBCUklDS19DT1VOVDsg aysrICkKLSAJCQkJaWYgKGxpbmVzWzQrb2Zmc2V0K2pdW2ldID09IGJyaWNrX2NvbnZfdGFibGVb a10uYykKLUBAIC05OSw4ICs5OSw4IEBAIFNldEluZm86OlNldEluZm8oY29uc3Qgc3RyaW5nICZu LCBUaGVtZQotIAkJCQl0aGVtZS5icmlja3NTaGFkb3cuY29weShicmlja19jb252X3RhYmxlW2td LmlkLDAsCi0gCQkJCQkJKGkrMSkqYncrYmgvMywgKDEraikqYmgrYmgvMyk7Ci0gCQl9Ci0tCWZv ciAodWludCBqID0gMDsgaiA8IEVESVRIRUlHSFQ7IGorKykKLS0JCWZvciAodWludCBpID0gMDsg aSA8IEVESVRXSURUSDsgaSsrKSB7Ci0rCWZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgRURJ VEhFSUdIVDsgaisrKQotKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBFRElUV0lEVEg7 IGkrKykgewotIAkJCWludCBrID0gLTE7Ci0gCQkJZm9yICggayA9IDA7IGsgPCBCUklDS19DT1VO VDsgaysrICkKLSAJCQkJaWYgKGxpbmVzWzQrb2Zmc2V0K2pdW2ldID09IGJyaWNrX2NvbnZfdGFi bGVba10uYykKLUBAIC0xMTcsOCArMTE3LDggQEAgU2V0SW5mbzo6U2V0SW5mbyhjb25zdCBzdHJp bmcgJm4sIFRoZW1lCi0gLyoqIENyZWF0ZSBsZXZlbHNldCBsaXN0IGFuZCBwcmV2aWV3cyArIGxh eW91dC4gKi8KLSB2b2lkIFNlbGVjdERpYWxvZzo6aW5pdCgpCi0gewotLQl1aW50IHN3ID0gdGhl bWUubWVudUJhY2tncm91bmQuZ2V0V2lkdGgoKTsKLS0JdWludCBzaCA9IHRoZW1lLm1lbnVCYWNr Z3JvdW5kLmdldEhlaWdodCgpOwotKwl1bnNpZ25lZCBpbnQgc3cgPSB0aGVtZS5tZW51QmFja2dy b3VuZC5nZXRXaWR0aCgpOwotKwl1bnNpZ25lZCBpbnQgc2ggPSB0aGVtZS5tZW51QmFja2dyb3Vu ZC5nZXRIZWlnaHQoKTsKLSAJdmVjdG9yPHN0cmluZz4gbGlzdCwgbGlzdDI7Ci0gCi0gCWxpc3Qu cHVzaF9iYWNrKF8oVE9VUk5BTUVOVCkpOwotQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFNlbGVj dERpYWxvZzo6cmVuZGVyKCkKLSAJCQlmb250LnNldENvbG9yKHRoZW1lLm1lbnVGb250Q29sb3JO b3JtYWwpOwotIAkJZm9udC53cml0ZShseCwgbHktY2gsIF8oIjxQcmV2aW91cyBQYWdlPiIpKTsK LSAJfQotLQlmb3IgKHVpbnQgaSA9IDA7IGkgPCB2bGVuOyBpKyssIHkgKz0gY2gpIHsKLSsJZm9y ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2bGVuOyBpKyssIHkgKz0gY2gpIHsKLSAJCWlmIChw b3MgKyBpIDwgZW50cmllcy5zaXplKCkgJiYgc2VsID09IChpbnQpKHBvcyArIGkpKQotIAkJCWZv bnQuc2V0Q29sb3IodGhlbWUubWVudUZvbnRDb2xvckZvY3VzKTsKLSAJCWVsc2UKLS0tLSBhL3Ny Yy9zZWxlY3RkbGcuaAkyMDE4LTEwLTMxIDE4OjQ5OjM0LjAwMDAwMDAwMCArMDEwMAotKysrIGIv c3JjL3NlbGVjdGRsZy5oCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjI4NTUxODI2ICswMjAwCi1AQCAt MjEsNyArMjEsNyBAQCBjbGFzcyBTZXRJbmZvIHsKLSAJc3RyaW5nIG5hbWU7Ci0gCXN0cmluZyB2 ZXJzaW9uOwotIAlzdHJpbmcgYXV0aG9yOwotLQl1aW50IGxldmVsczsKLSsJdW5zaWduZWQgaW50 IGxldmVsczsKLSAJSW1hZ2UgcHJldmlldzsKLSBwdWJsaWM6Ci0gCVNldEluZm8oY29uc3Qgc3Ry aW5nICZuYW1lLCBUaGVtZSAmdGhlbWUpOwotQEAgLTQwLDEyICs0MCwxMiBAQCBjbGFzcyBTZWxl Y3REaWFsb2cgewotIAlib29sIHF1aXRSZWNlaXZlZDsKLSAJdmVjdG9yPHVuaXF1ZV9wdHI8U2V0 SW5mbz4+IGVudHJpZXM7Ci0gCWludCBzZWw7Ci0tCXVpbnQgcG9zLCBtYXgsIHZsZW47Ci0rCXVu c2lnbmVkIGludCBwb3MsIG1heCwgdmxlbjsKLSAJaW50IHR4LCB0eTsgLyogY2VudGVyZWQgdGl0 bGUgcG9zaXRpb24gKi8KLSAJaW50IGx4LCBseTsgLyogbGlzdCBzdGFydCAqLwotLQl1aW50IGN3 LCBjaDsgLyogY2VsbCBzaXplICovCi0rCXVuc2lnbmVkIGludCBjdywgY2g7IC8qIGNlbGwgc2l6 ZSAqLwotIAlpbnQgcHgsIHB5OwotLQl1aW50IHB3LCBwaDsgLyogcHJldmlldyBnZW9tZXRyeSAq LwotKwl1bnNpZ25lZCBpbnQgcHcsIHBoOyAvKiBwcmV2aWV3IGdlb21ldHJ5ICovCi0gCi0gCUlt YWdlIGJhY2tncm91bmQ7Ci0gCi0tLS0gYS9zcmMvc3ByaXRlLmNwcAkyMDE4LTA5LTAyIDE4OjQ3 OjE4LjAwMDAwMDAwMCArMDIwMAotKysrIGIvc3JjL3Nwcml0ZS5jcHAJMjAxOS0wNi0xMCAxMTow NDoyNS4yMzI1NTE4NzQgKzAyMDAKLUBAIC0yNCw3ICsyNCw3IEBAIGV4dGVybiBTRExfUmVuZGVy ZXIgKm1yYzsKLSBQYXJ0aWNsZTo6UGFydGljbGUoR3JpZEltYWdlICZzaW1nLCBpbnQgX2d4LCBp bnQgX2d5LAotIAkJCQkJaW50IF9zeCwgaW50IF9zeSwgaW50IF9zdywgaW50IF9zaCwKLSAJCQkJ CWRvdWJsZSBweCwgZG91YmxlIHB5LCBkb3VibGUgdngsIGRvdWJsZSB2eSwKLS0JCQkJCWRvdWJs ZSB2cG1zLCB1aW50IGxpZmV0aW1lKQotKwkJCQkJZG91YmxlIHZwbXMsIHVuc2lnbmVkIGludCBs aWZldGltZSkKLSAJOiBpbWcoc2ltZyksIGd4KF9neCksIGd5KF9neSksIHN4KF9zeCksIHN5KF9z eSksIHN3KF9zdyksIHNoKF9zaCksCi0gCSAgcG9zKHB4LHB5KSwgdmVsKHZ4LHZ5KQotIHsKLS0t LSBhL3NyYy9zcHJpdGUuaAkyMDE4LTA5LTAyIDE4OjQ3OjE4LjAwMDAwMDAwMCArMDIwMAotKysr IGIvc3JjL3Nwcml0ZS5oCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjI5NTUxODM4ICswMjAwCi1AQCAt MTksMjEgKzE5LDIxIEBACi0gY2xhc3MgU3ByaXRlIHsKLSBwdWJsaWM6Ci0gCXZpcnR1YWwgflNw cml0ZSgpIHt9OwotLQl2aXJ0dWFsIGludCB1cGRhdGUodWludCBtcykgPSAwOyAvKiByZXR1cm4g MSBpZiB0byBiZSByZW1vdmVkLCAwIG90aGVyd2lzZSAqLwotKwl2aXJ0dWFsIGludCB1cGRhdGUo dW5zaWduZWQgaW50IG1zKSA9IDA7IC8qIHJldHVybiAxIGlmIHRvIGJlIHJlbW92ZWQsIDAgb3Ro ZXJ3aXNlICovCi0gCXZpcnR1YWwgdm9pZCByZW5kZXIoKSA9IDA7Ci0gfTsKLSAKLSBjbGFzcyBB bmltYXRpb24gOiBwdWJsaWMgU3ByaXRlIHsKLSAJR3JpZEltYWdlJiBpbWc7Ci0tCXVpbnQgaWQ7 Ci0rCXVuc2lnbmVkIGludCBpZDsKLSAJaW50IHgsIHk7IC8qIHBvc2l0aW9uIG9uIHNjcmVlbiAq LwotIAlGcmFtZUNvdW50ZXIgZmM7Ci0gcHVibGljOgotLQlBbmltYXRpb24oR3JpZEltYWdlICZf aW1nLCB1aW50IF9pZCwgdWludCBkZWxheSwgaW50IF94LCBpbnQgX3kpCi0rCUFuaW1hdGlvbihH cmlkSW1hZ2UgJl9pbWcsIHVuc2lnbmVkIGludCBfaWQsIHVuc2lnbmVkIGludCBkZWxheSwgaW50 IF94LCBpbnQgX3kpCi0gCQkJCTogaW1nKF9pbWcpLCBpZChfaWQpLCB4KF94KSwgeShfeSkgewot IAkJZmMuaW5pdChpbWcuZ2V0R3JpZFNpemVYKCksIGRlbGF5KTsKLSAJfQotLQlpbnQgdXBkYXRl KHVpbnQgbXMpIHsKLSsJaW50IHVwZGF0ZSh1bnNpZ25lZCBpbnQgbXMpIHsKLSAJCWlmIChmYy51 cGRhdGUobXMpKQotIAkJCXJldHVybiAxOyAvKiBkaWUgKi8KLSAJCXJldHVybiAwOwotQEAgLTUw LDggKzUwLDggQEAgY2xhc3MgUGFydGljbGUgOiBwdWJsaWMgU3ByaXRlIHsKLSAJU21vb3RoQ291 bnRlciBzYzsKLSBwdWJsaWM6Ci0gCVBhcnRpY2xlKEdyaWRJbWFnZSAmc2ltZywgaW50IGd4LCBp bnQgZ3ksIGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwKLS0JCQlkb3VibGUgcHgsIGRv dWJsZSBweSwgZG91YmxlIHZ4LCBkb3VibGUgdnksIGRvdWJsZSB2cG1zLCB1aW50IGxpZmV0aW1l KTsKLS0JaW50IHVwZGF0ZSh1aW50IG1zKSB7Ci0rCQkJZG91YmxlIHB4LCBkb3VibGUgcHksIGRv dWJsZSB2eCwgZG91YmxlIHZ5LCBkb3VibGUgdnBtcywgdW5zaWduZWQgaW50IGxpZmV0aW1lKTsK LSsJaW50IHVwZGF0ZSh1bnNpZ25lZCBpbnQgbXMpIHsKLSAJCXBvcy5hZGQobXMsIHZlbCk7Ci0g CQlyZXR1cm4gc2MudXBkYXRlKG1zKTsKLSAJfQotLS0tIGEvc3JjL3RoZW1lLmNwcAkyMDE5LTAz LTA3IDE1OjE0OjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGIvc3JjL3RoZW1lLmNwcAkyMDE5LTA2 LTEwIDExOjA0OjI1LjIzMzU1MTg4NiArMDIwMAotQEAgLTIyLDEyICsyMiwxMiBAQCBleHRlcm4g U0RMX1JlbmRlcmVyICptcmM7Ci0gCi0gLyoqIExvYWQgcmVzb3VyY2VzIGFuZCBzY2FsZSBpZiBu ZWNlc3NhcnkgdXNpbmcgYnJpY2tzIHNjcmVlbiBoZWlnaHQuCi0gICogV2hhdGV2ZXIgaXMgbWlz c2luZzogRmFsbCBiYWNrIHRvIFN0YW5kYXJkIHRoZW1lLiAqLwotLXZvaWQgVGhlbWU6OmxvYWQo c3RyaW5nIG5hbWUsIHVpbnQgc2NyZWVuV2lkdGgsIHVpbnQgc2NyZWVuSGVpZ2h0LAotLQkJCQl1 aW50IGJyaWNrU2NyZWVuV2lkdGgsIHVpbnQgYnJpY2tTY3JlZW5IZWlnaHQsCi0rdm9pZCBUaGVt ZTo6bG9hZChzdHJpbmcgbmFtZSwgdW5zaWduZWQgaW50IHNjcmVlbldpZHRoLCB1bnNpZ25lZCBp bnQgc2NyZWVuSGVpZ2h0LAotKwkJCQl1bnNpZ25lZCBpbnQgYnJpY2tTY3JlZW5XaWR0aCwgdW5z aWduZWQgaW50IGJyaWNrU2NyZWVuSGVpZ2h0LAotIAkJCQlpbnQgYW50aWFsaWFzaW5nKQotIHsK LSAJc3RyaW5nIHBhdGgsIGZwYXRoOwotLQl1aW50IGl3LCBpaDsKLSsJdW5zaWduZWQgaW50IGl3 LCBpaDsKLSAKLSAJaWYgKG5hbWVbMF0gPT0gJ34nKQotIAkJcGF0aCA9IGdldEhvbWVEaXIoKSAr ICIvIiArIENPTkZJR0RJUiArICIvdGhlbWVzLyIgKyBuYW1lLnN1YnN0cigxKTsKLUBAIC0zNzYs NyArMzc2LDcgQEAgdm9pZCBUaGVtZTo6bG9hZChzdHJpbmcgbmFtZSwgdWludCBzY3JlZQotIAot IAkvKiBsb2FkIGFuZCBzY2FsZSB1cCB0byAxMCB3YWxscGFwZXJzICovCi0gCXN0cmluZyB3cGF0 aCA9IHN0ZFBhdGg7Ci0tCXVpbnQgd2JmaCA9IHNiZmgsIHdiZncgPSBzYmZ3OyAvKiBmb3Igc2Nh bGluZyAqLwotKwl1bnNpZ25lZCBpbnQgd2JmaCA9IHNiZmgsIHdiZncgPSBzYmZ3OyAvKiBmb3Ig c2NhbGluZyAqLwotIAlpZiAoZmlsZUV4aXN0cyhwYXRoICsgIi9iYWNrMC5wbmciKSB8fCBmaWxl RXhpc3RzKHBhdGggKyAiL2JhY2swLmpwZyIpKSB7Ci0gCQl3cGF0aCA9IHBhdGg7Ci0gCQl3YmZo ID0gYnJpY2tGaWxlSGVpZ2h0OwotLS0tIGEvc3JjL3RoZW1lLmgJMjAxOS0wMy0wNyAxNTowNTo1 My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL3NyYy90aGVtZS5oCTIwMTktMDYtMTAgMTE6MDQ6MjUu MjI5NTUxODM4ICswMjAwCi1AQCAtMzMsMzcgKzMzLDM3IEBAIGNsYXNzIFRoZW1lIHsKLSAJc3Ry aW5nIHN0ZFBhdGg7IC8qIHBhdGggdG8gc3RhbmRhcmQgdGhlbWUgZm9yIGZhbGxiYWNrcyAqLwot IAlib29sIG9sZFRoZW1lOwotIAlpbnQgYm9hcmRYOwotLQl1aW50IGJvYXJkV2lkdGg7Ci0rCXVu c2lnbmVkIGludCBib2FyZFdpZHRoOwotIAotIAkvKiBsb2FkZWQgZnJvbSB0aGVtZS5pbmkgKi8K LSAJc3RyaW5nIHRpdGxlOwotIAlzdHJpbmcgYXV0aG9yOwotIAlzdHJpbmcgdmVyc2lvbjsKLS0J dWludCBicmlja0ZpbGVXaWR0aDsKLS0JdWludCBicmlja0ZpbGVIZWlnaHQ7Ci0rCXVuc2lnbmVk IGludCBicmlja0ZpbGVXaWR0aDsKLSsJdW5zaWduZWQgaW50IGJyaWNrRmlsZUhlaWdodDsKLSAJ aW50IHNoYWRvd09mZnNldDsKLSAJc3RyaW5nIGZvbnRTbWFsbE5hbWU7Ci0tCXVpbnQgZm9udFNt YWxsU2l6ZTsKLSsJdW5zaWduZWQgaW50IGZvbnRTbWFsbFNpemU7Ci0gCXN0cmluZyBmb250Tm9y bWFsTmFtZTsKLS0JdWludCBmb250Tm9ybWFsU2l6ZTsKLSsJdW5zaWduZWQgaW50IGZvbnROb3Jt YWxTaXplOwotIAlTRExfQ29sb3IgZm9udENvbG9yTm9ybWFsOwotIAlTRExfQ29sb3IgZm9udENv bG9ySGlnaGxpZ2h0OwotLQl1aW50IHNob3RGcmFtZU51bTsKLS0JdWludCBzaG90QW5pbURlbGF5 OwotLQl1aW50IHdlYXBvbkZyYW1lTnVtOwotLQl1aW50IHdlYXBvbkFuaW1EZWxheTsKLS0JdWlu dCBleHBsRnJhbWVOdW07Ci0tCXVpbnQgZXhwbEFuaW1EZWxheTsKLS0JdWludCBzaGluZUZyYW1l TnVtOwotLQl1aW50IHNoaW5lQW5pbURlbGF5OwotLQl1aW50IG1lbnVYLCBtZW51WSwgbWVudUl0 ZW1XaWR0aCwgbWVudUl0ZW1IZWlnaHQ7Ci0rCXVuc2lnbmVkIGludCBzaG90RnJhbWVOdW07Ci0r CXVuc2lnbmVkIGludCBzaG90QW5pbURlbGF5OwotKwl1bnNpZ25lZCBpbnQgd2VhcG9uRnJhbWVO dW07Ci0rCXVuc2lnbmVkIGludCB3ZWFwb25BbmltRGVsYXk7Ci0rCXVuc2lnbmVkIGludCBleHBs RnJhbWVOdW07Ci0rCXVuc2lnbmVkIGludCBleHBsQW5pbURlbGF5OwotKwl1bnNpZ25lZCBpbnQg c2hpbmVGcmFtZU51bTsKLSsJdW5zaWduZWQgaW50IHNoaW5lQW5pbURlbGF5OwotKwl1bnNpZ25l ZCBpbnQgbWVudVgsIG1lbnVZLCBtZW51SXRlbVdpZHRoLCBtZW51SXRlbUhlaWdodDsKLSAJc3Ry aW5nIG1lbnVGb250Tm9ybWFsTmFtZSwgbWVudUZvbnRGb2N1c05hbWU7Ci0tCXVpbnQgbWVudUZv bnROb3JtYWxTaXplLCBtZW51Rm9udEZvY3VzU2l6ZTsKLSsJdW5zaWduZWQgaW50IG1lbnVGb250 Tm9ybWFsU2l6ZSwgbWVudUZvbnRGb2N1c1NpemU7Ci0gCVNETF9Db2xvciBtZW51Rm9udENvbG9y Tm9ybWFsLCBtZW51Rm9udENvbG9yRm9jdXM7Ci0gCi0gCUltYWdlIG1lbnVCYWNrZ3JvdW5kOwot IAlJbWFnZSB3YWxscGFwZXJzW01BWFdBTExQQVBFUlNdOwotLQl1aW50IG51bVdhbGxwYXBlcnM7 Ci0rCXVuc2lnbmVkIGludCBudW1XYWxscGFwZXJzOwotIAlJbWFnZSBmcmFtZSwgZnJhbWVTaGFk b3c7Ci0gCUdyaWRJbWFnZSBicmlja3MsIGJyaWNrc1NoYWRvdzsKLSAJR3JpZEltYWdlIHBhZGRs ZXMsIHBhZGRsZXNTaGFkb3c7Ci1AQCAtMTA2LDggKzEwNiw4IEBAIHB1YmxpYzoKLSAJCXsKLSAJ CXN0ZFBhdGggPSBzdHJpbmcoREFUQURJUikgKyAiL3RoZW1lcy9TdGFuZGFyZCI7Ci0gCX0KLS0J dm9pZCBsb2FkKHN0cmluZyBuYW1lLCB1aW50IHNjcmVlbldpZHRoLCB1aW50IHNjcmVlbkhlaWdo dCwKLS0JCQkJdWludCBicmlja1NjcmVlbldpZHRoLCB1aW50IGJyaWNrU2NyZWVuSGVpZ2h0LAot Kwl2b2lkIGxvYWQoc3RyaW5nIG5hbWUsIHVuc2lnbmVkIGludCBzY3JlZW5XaWR0aCwgdW5zaWdu ZWQgaW50IHNjcmVlbkhlaWdodCwKLSsJCQkJdW5zaWduZWQgaW50IGJyaWNrU2NyZWVuV2lkdGgs IHVuc2lnbmVkIGludCBicmlja1NjcmVlbkhlaWdodCwKLSAJCQkJaW50IGFudGlhbGlhc2luZyk7 Ci0gfTsKLSAKLS0tLSBhL3NyYy90b29scy5jcHAJMjAxOC0xMS0wNCAxMjowNDoxNy4wMDAwMDAw MDAgKzAxMDAKLSsrKyBiL3NyYy90b29scy5jcHAJMjAxOS0wNi0xMCAxMTowNDoyNS4yMzM1NTE4 ODYgKzAyMDAKLUBAIC05NCw3ICs5NCw3IEBAIGludCBGaWxlUGFyc2VyOjpnZXQoY29uc3Qgc3Ry aW5nJiBrLCBpbnQKLSAJCXYgPSBzdG9pKHN0cik7Ci0gCXJldHVybiByZXQ7Ci0gfQotLWludCBG aWxlUGFyc2VyOjpnZXQoY29uc3Qgc3RyaW5nJiBrLCB1aW50ICZ2KQotK2ludCBGaWxlUGFyc2Vy OjpnZXQoY29uc3Qgc3RyaW5nJiBrLCB1bnNpZ25lZCBpbnQgJnYpCi0gewotIAlzdHJpbmcgc3Ry OwotIAlpbnQgcmV0ID0gZ2V0KGssc3RyKTsKLS0tLSBhL3NyYy90b29scy5oCTIwMTgtMTAtMzEg MTI6MjM6MjIuMDAwMDAwMDAwICswMTAwCi0rKysgYi9zcmMvdG9vbHMuaAkyMDE5LTA2LTEwIDEx OjA0OjI1LjIyOTU1MTgzOCArMDIwMAotQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgotIAlGaWxl UGFyc2VyKGNvbnN0IHN0cmluZyYgIGZuYW1lKTsKLSAJaW50IGdldChjb25zdCBzdHJpbmcmICBr LCBzdHJpbmcgJnYpOwotIAlpbnQgZ2V0KGNvbnN0IHN0cmluZyYgIGssIGludCAmdik7Ci0tCWlu dCBnZXQoY29uc3Qgc3RyaW5nJiAgaywgdWludCAmdik7Ci0rCWludCBnZXQoY29uc3Qgc3RyaW5n JiAgaywgdW5zaWduZWQgaW50ICZ2KTsKLSAJaW50IGdldChjb25zdCBzdHJpbmcmICBrLCB1aW50 OF90ICZ2KTsKLSAJaW50IGdldChjb25zdCBzdHJpbmcmICBrLCBkb3VibGUgJnYpOwotIH07Ci1A QCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKLSAKLSBjbGFzcyBGcmFtZUNvdW50ZXIgOiBwdWJs aWMgU21vb3RoQ291bnRlciB7Ci0gcHVibGljOgotLQl2b2lkIGluaXQodWludCBtYXgsIHVpbnQg ZGVsYXkpIHsKLSsJdm9pZCBpbml0KHVuc2lnbmVkIGludCBtYXgsIHVuc2lnbmVkIGludCBkZWxh eSkgewotIAkJU21vb3RoQ291bnRlcjo6aW5pdChTQ1RfUkVQRUFULCAwLCAtMC4wMSArIG1heCwg ZGVsYXkpOwotIAl9Ci0gCWludCBnZXQoKSB7IHJldHVybiBTbW9vdGhDb3VudGVyOjpnZXQoKTsg fQotLS0tIGEvc3JjL3ZpZXcuY3BwCTIwMTktMDMtMDggMTk6MTM6MzEuMDAwMDAwMDAwICswMTAw Ci0rKysgYi9zcmMvdmlldy5jcHAJMjAxOS0wNi0xMCAxMTowNDoyNS4yMzQ1NTE4OTggKzAyMDAK LUBAIC03NCw3ICs3NCw3IEBAIFZpZXc6OlZpZXcoQ29uZmlnICZjZmcsIENsaWVudEdhbWUgJl9j ZykKLSAKLSAvKiogKFJlKUluaXRpYWxpemUgd2luZG93LCB0aGVtZSBhbmQgbWVudS4KLSAgKiB0 IGlzIHRoZW1lIG5hbWUsIHI9MCBtZWFucyBmdWxsc2NyZWVuLCBvdGhlcndpc2UgdmVydGljYWwg cmVzb2x1dGlvbi4gKi8KLS12b2lkIFZpZXc6OmluaXQoc3RyaW5nIHQsIHVpbnQgcikKLSt2b2lk IFZpZXc6OmluaXQoc3RyaW5nIHQsIHVuc2lnbmVkIGludCByKQotIHsKLSAJX2xvZ2luZm8oIklu aXRpYWxpemluZyBWaWV3IChUaGVtZT0lcywgUmVzb2x1dGlvbj0lZClcbiIsdC5jX3N0cigpLHIp OwotIAotQEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIFZpZXc6OnJlbmRlckJhY2tncm91bmRJbWFn ZSgpIHsKLSAKLSAJLyogbGl2ZXMgKi8KLSAJQ2xpZW50UGxheWVyICpjcCA9IGNnYW1lLmdldEN1 cnJlbnRQbGF5ZXIoKTsKLS0JZm9yICh1aW50IGkgPSAwOyBpIDwgY3AtPmdldE1heExpdmVzKCk7 IGkrKykKLSsJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjcC0+Z2V0TWF4TGl2ZXMoKTsg aSsrKQotIAkJdGhlbWUubGlmZS5jb3B5KDAsIGkgPCBjcC0+Z2V0TGl2ZXMoKSwgMCwgKE1BUEhF SUdIVC1pLTEpKmJoKTsKLSAKLSAJU0RMX1NldFJlbmRlclRhcmdldChtcmMsTlVMTCk7Ci1AQCAt NzM5LDEyICs3MzksMTIgQEAgdm9pZCBWaWV3OjpyZW5kZXJTY29yZUltYWdlKCkKLSB2b2lkIFZp ZXc6OnJlbmRlckV4dHJhc0ltYWdlKCkKLSB7Ci0gCUdhbWUgKmdhbWUgPSBjZ2FtZS5nZXRHYW1l Q29udGV4dCgpOwotLQl1aW50IGJ3ID0gYnJpY2tTY3JlZW5XaWR0aCwgYmggPSBicmlja1NjcmVl bkhlaWdodDsKLS0JdWludCB4c3RhcnQgPSAoaW1nRXh0cmFzLmdldFdpZHRoKCkgLSAzKmJ3KSAv IDQ7Ci0tCXVpbnQgeXN0YXJ0ID0gKGltZ0V4dHJhcy5nZXRIZWlnaHQoKSAtIDMqYmgpIC8gNDsK LS0JdWludCB4b2ZmID0gYncgKyB4c3RhcnQ7Ci0tCXVpbnQgeW9mZiA9IGJoICsgeXN0YXJ0Owot LQl1aW50IHggPSB4c3RhcnQsIHkgPSB5c3RhcnQ7Ci0rCXVuc2lnbmVkIGludCBidyA9IGJyaWNr U2NyZWVuV2lkdGgsIGJoID0gYnJpY2tTY3JlZW5IZWlnaHQ7Ci0rCXVuc2lnbmVkIGludCB4c3Rh cnQgPSAoaW1nRXh0cmFzLmdldFdpZHRoKCkgLSAzKmJ3KSAvIDQ7Ci0rCXVuc2lnbmVkIGludCB5 c3RhcnQgPSAoaW1nRXh0cmFzLmdldEhlaWdodCgpIC0gMypiaCkgLyA0OwotKwl1bnNpZ25lZCBp bnQgeG9mZiA9IGJ3ICsgeHN0YXJ0OwotKwl1bnNpZ25lZCBpbnQgeW9mZiA9IGJoICsgeXN0YXJ0 OwotKwl1bnNpZ25lZCBpbnQgeCA9IHhzdGFydCwgeSA9IHlzdGFydDsKLSAKLSAJU0RMX1NldFJl bmRlclRhcmdldChtcmMsIGltZ0V4dHJhcy5nZXRUZXgoKSk7Ci0gCVNETF9TZXRSZW5kZXJEcmF3 Q29sb3IobXJjLDAsMCwwLDApOwotQEAgLTg0NiwxNCArODQ2LDE0IEBAIGJvb2wgVmlldzo6c2hv d0luZm8oY29uc3QgdmVjdG9yPHN0cmluZz4KLSB7Ci0gCUZvbnQgJmZvbnQgPSB0aGVtZS5mU21h bGw7Ci0gCWJvb2wgcmV0ID0gdHJ1ZTsKLS0JdWludCBoID0gdGV4dC5zaXplKCkgKiBmb250Lmdl dExpbmVIZWlnaHQoKTsKLSsJdW5zaWduZWQgaW50IGggPSB0ZXh0LnNpemUoKSAqIGZvbnQuZ2V0 TGluZUhlaWdodCgpOwotIAlpbnQgdHggPSBtdy0+Z2V0V2lkdGgoKS8yOwotIAlpbnQgdHkgPSAo bXctPmdldEhlaWdodCgpIC0gaCkvMjsKLSAKLSAJZGFya2VuU2NyZWVuKCk7Ci0gCi0gCWZvbnQu c2V0QWxpZ24oQUxJR05fWF9DRU5URVIgfCBBTElHTl9ZX1RPUCk7Ci0tCWZvciAodWludCBpID0g MDsgaSA8IHRleHQuc2l6ZSgpOyBpKyspIHsKLSsJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg PCB0ZXh0LnNpemUoKTsgaSsrKSB7Ci0gCQlmb250LndyaXRlKHR4LHR5LHRleHRbaV0pOwotIAkJ dHkgKz0gZm9udC5nZXRMaW5lSGVpZ2h0KCk7Ci0gCX0KLUBAIC05NjQsMTIgKzk2NCwxMiBAQCB2 b2lkIFZpZXc6OmNyZWF0ZVNwcml0ZXMoKQotIAl9Ci0gfQotIAotLXZvaWQgVmlldzo6Z2V0QmFs bFZpZXdJbmZvKEJhbGwgKmJhbGwsIGludCAqeCwgaW50ICp5LCB1aW50ICp0eXBlKQotK3ZvaWQg Vmlldzo6Z2V0QmFsbFZpZXdJbmZvKEJhbGwgKmJhbGwsIGludCAqeCwgaW50ICp5LCB1bnNpZ25l ZCBpbnQgKnR5cGUpCi0gewotIAlHYW1lICpnYW1lID0gY2dhbWUuZ2V0R2FtZUNvbnRleHQoKTsg LyogZGlyZWN0IGxpYiBnYW1lIGNvbnRleHQgKi8KLSAJUGFkZGxlICpwYWRkbGUgPSBnYW1lLT5w YWRkbGVzWzBdOyAvKiBsb2NhbCBwYWRkbGUgYWx3YXlzIGF0IGJvdHRvbSAqLwotIAotLQl1aW50 IGJ0ID0gMDsKLSsJdW5zaWduZWQgaW50IGJ0ID0gMDsKLSAJZG91YmxlIHB4ID0gYmFsbC0+Y3Vy Lng7Ci0gCWRvdWJsZSBweSA9IGJhbGwtPmN1ci55OwotIAlpZiAoYmFsbC0+YXR0YWNoZWQpIHsK LUBAIC0xMzk1LDcgKzEzOTUsNyBAQCB2b2lkIFZpZXc6OnNhdmVHYW1lKCkKLSAJb2ZzIDw8ICJk aWZmaWN1bHR5PSIgPDwgY29uZmlnLmRpZmYgPDwgIlxuIjsKLSAJb2ZzIDw8ICJjdXJwbGF5ZXI9 IiA8PCBjZ2FtZS5nZXRDdXJyZW50UGxheWVySWQoKSA8PCAiXG4iOwotIAlvZnMgPDwgInBsYXll cnM9IiA8PCBwbGF5ZXJzLnNpemUoKSA8PCAiXG4iOwotLQlmb3IgKHVpbnQgaSA9IDA7IGkgPCBw bGF5ZXJzLnNpemUoKTsgaSsrKSB7Ci0rCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGxh eWVycy5zaXplKCk7IGkrKykgewotIAkJb2ZzIDw8ICJwbGF5ZXIiIDw8IGkgPDwgIiB7XG4iOwot IAkJb2ZzIDw8ICIJbmFtZT0iIDw8IHBsYXllcnNbaV0tPmdldE5hbWUoKSA8PCAiXG4iOwotIAkJ b2ZzIDw8ICIJbGV2ZWw9IiA8PCBwbGF5ZXJzW2ldLT5nZXRMZXZlbCgpIDw8ICJcbiI7Ci1AQCAt MTQzMiwxOCArMTQzMiwxOCBAQCBpbnQgVmlldzo6cmVzdW1lR2FtZSgpCi0gCQlmcC5nZXQoc3Ry aW5nKCJwbGF5ZXIiKSArIHRvX3N0cmluZyhpKSArICIubmFtZSIsY29uZmlnLnBsYXllcl9uYW1l c1tpXSk7Ci0gCi0gCS8qIGluaXRpYWxpemUgZ2FtZSB0byBsZXZlbCBvZiBjdXJyZW50IHBsYXll ciAqLwotLQl1aW50IHBpZCA9IDA7Ci0rCXVuc2lnbmVkIGludCBwaWQgPSAwOwotIAlmcC5nZXQo ImN1cnBsYXllciIscGlkKTsKLSAJaWYgKHBpZCA+PSBNQVhfUExBWUVSUykKLSAJCXBpZCA9IDA7 Ci0tCXVpbnQgbGV2aWQgPSAwOwotKwl1bnNpZ25lZCBpbnQgbGV2aWQgPSAwOwotIAlmcC5nZXQo c3RyaW5nKCJwbGF5ZXIiKSArIHRvX3N0cmluZyhwaWQpICsgIi5sZXZlbCIsbGV2aWQpOwotIAlj Z2FtZS5pbml0KHNldG5hbWUsbGV2aWQpOwotIAotIAkvKiBhZGp1c3QgcGxheWVycyAqLwotIAlm b3IgKGludCBpID0gMDsgaSA8IGNvbmZpZy5wbGF5ZXJfY291bnQ7IGkrKykgewotIAkJc3RyaW5n IHByZWZpeCA9IHN0cmluZygicGxheWVyIikgKyB0b19zdHJpbmcoaSkgKyAiLiI7Ci0tCQl1aW50 IGxldmVsID0gMCwgbGl2ZXMgPSAzOwotKwkJdW5zaWduZWQgaW50IGxldmVsID0gMCwgbGl2ZXMg PSAzOwotIAkJaW50IHNjb3JlID0gMDsKLSAJCWZwLmdldChwcmVmaXggKyAic2NvcmUiLHNjb3Jl KTsKLSAJCWZwLmdldChwcmVmaXggKyAibGV2ZWwiLGxldmVsKTsKLUBAIC0xNTI5LDggKzE1Mjks OCBAQCB2b2lkIFZpZXc6OnJlbmRlckJhbGxzKGJvb2wgc2hhZG93KQotIAlCYWxsICpiYWxsOwot IAlsaXN0X3Jlc2V0KGdhbWUtPmJhbGxzKTsKLSAJd2hpbGUgKCAoIGJhbGwgPSAoQmFsbCopbGlz dF9uZXh0KCBnYW1lLT5iYWxscyApICkgIT0gMCApIHsKLS0JCXVpbnQgdHlwZTsKLS0JCXVpbnQg YWxwaGEgPSAyNTU7Ci0rCQl1bnNpZ25lZCBpbnQgdHlwZTsKLSsJCXVuc2lnbmVkIGludCBhbHBo YSA9IDI1NTsKLSAJCWludCBweCwgcHk7Ci0gCQlnZXRCYWxsVmlld0luZm8oYmFsbCwgJnB4LCAm cHksICZ0eXBlKTsKLSAJCWlmICh0eXBlID09IDEpIC8qIGVuZXJneSBiYWxsICovCi1AQCAtMTU2 MSw3ICsxNTYxLDcgQEAgdm9pZCBWaWV3Ojp1cGRhdGVSZXN1bWVHYW1lVG9vbHRpcCgpCi0gCS8q IFhYWCBtdWx0aXBsZSBsb2NhdGlvbnMuLi4gKi8KLSAJY29uc3QgY2hhciAqZGlmZk5hbWVzW10g PSB7XygiS2lkcyIpLF8oIkVhc3kiKSxfKCJNZWRpdW0iKSxfKCJIYXJkIikgfSA7Ci0gCXN0cmlu ZyB0ZXh0LCBzdHI7Ci0tCXVpbnQgZGlmZiwgcG51bTsKLSsJdW5zaWduZWQgaW50IGRpZmYsIHBu dW07Ci0gCUZpbGVQYXJzZXIgZnAoc2F2ZUZpbGVOYW1lKTsKLSAJZnAuZ2V0KCJsZXZlbHNldCIs dGV4dCk7Ci0gCWZwLmdldCgiZGlmZmljdWx0eSIsZGlmZik7Ci1AQCAtMTU3MywxMCArMTU3Mywx MCBAQCB2b2lkIFZpZXc6OnVwZGF0ZVJlc3VtZUdhbWVUb29sdGlwKCkKLSAJdGV4dCArPSB0b19z dHJpbmcocG51bSk7Ci0gCXRleHQgKz0gXygiIHBsYXllcihzKVxuIik7Ci0gCi0tCWZvciAodWlu dCBpID0gMDsgaSA8IHBudW07IGkrKykgewotKwlmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8 IHBudW07IGkrKykgewotIAkJc3RyaW5nIHByZWZpeCA9IHN0cmluZygicGxheWVyIikgKyB0b19z dHJpbmcoaSkgKyAiLiI7Ci0gCQlzdHJpbmcgbmFtZTsKLS0JCXVpbnQgbGV2ZWwgPSAwLCBsaXZl cyA9IDM7Ci0rCQl1bnNpZ25lZCBpbnQgbGV2ZWwgPSAwLCBsaXZlcyA9IDM7Ci0gCQlpbnQgc2Nv cmUgPSAwOwotIAkJZnAuZ2V0KHByZWZpeCArICJuYW1lIixuYW1lKTsKLSAJCWZwLmdldChwcmVm aXggKyAic2NvcmUiLHNjb3JlKTsKLUBAIC0xNTkxLDcgKzE1OTEsNyBAQCB2b2lkIFZpZXc6OnVw ZGF0ZVJlc3VtZUdhbWVUb29sdGlwKCkKLSAJcmVzdW1lTWVudUl0ZW0tPnNldFRvb2x0aXAodGV4 dCk7Ci0gfQotIAotLXZvaWQgVmlldzo6cmVuZGVyRXh0cmFIZWxwKEdyaWRJbWFnZSAmaW1nLCB1 aW50IGd4LCB1aW50IGd5LCBjb25zdCBzdHJpbmcgJnN0ciwgaW50IHgsIGludCB5KQotK3ZvaWQg Vmlldzo6cmVuZGVyRXh0cmFIZWxwKEdyaWRJbWFnZSAmaW1nLCB1bnNpZ25lZCBpbnQgZ3gsIHVu c2lnbmVkIGludCBneSwgY29uc3Qgc3RyaW5nICZzdHIsIGludCB4LCBpbnQgeSkKLSB7Ci0gCWlt Zy5jb3B5KGd4LGd5LHgseSk7Ci0gCXRoZW1lLmZTbWFsbC5zZXRBbGlnbihBTElHTl9YX0xFRlQg fCBBTElHTl9ZX0NFTlRFUik7Ci1AQCAtMTYyMSw3ICsxNjIxLDcgQEAgdm9pZCBWaWV3OjpzaG93 SGVscCgpCi0gCQk7Ci0gCi0gCWludCB4ID0gYnJpY2tTY3JlZW5XaWR0aCwgeSA9IGJyaWNrU2Ny ZWVuSGVpZ2h0OwotLQl1aW50IG1heHcgPSBicmlja1NjcmVlbldpZHRoICogMTA7Ci0rCXVuc2ln bmVkIGludCBtYXh3ID0gYnJpY2tTY3JlZW5XaWR0aCAqIDEwOwotIAotIAlkYXJrZW5TY3JlZW4o KTsKLSAKLS0tLSBhL3NyYy92aWV3LmgJMjAxOS0wMy0wNyAxNTo0NDozNi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBiL3NyYy92aWV3LmgJMjAxOS0wNi0xMCAxMTowNDoyNS4yMjk1NTE4MzggKzAyMDAK LUBAIC0xMDUsNyArMTA1LDcgQEAgY2xhc3MgVmlldyB7Ci0gCXZvaWQgc2hvd0hlbHAoKTsKLSAJ dm9pZCBjcmVhdGVQYXJ0aWNsZXMoQnJpY2tIaXQgKmhpdCk7Ci0gCXZvaWQgY3JlYXRlU3ByaXRl cygpOwotLQl2b2lkIGdldEJhbGxWaWV3SW5mbyhCYWxsICpiYWxsLCBpbnQgKngsIGludCAqeSwg dWludCAqdHlwZSk7Ci0rCXZvaWQgZ2V0QmFsbFZpZXdJbmZvKEJhbGwgKmJhbGwsIGludCAqeCwg aW50ICp5LCB1bnNpZ25lZCBpbnQgKnR5cGUpOwotIAl2b2lkIHBsYXlTb3VuZHMoKTsKLSAJdm9p ZCBjcmVhdGVNZW51cygpOwotIAl2b2lkIGdyYWJJbnB1dChpbnQgZ3JhYik7Ci1AQCAtMTE2LDE0 ICsxMTYsMTQgQEAgY2xhc3MgVmlldyB7Ci0gCXZvaWQgZGFya2VuU2NyZWVuKGludCBhbHBoYSA9 IDMyKTsKLSAJdm9pZCBpbml0VGl0bGVMYWJlbCgpOwotIAl2b2lkIHVwZGF0ZVJlc3VtZUdhbWVU b29sdGlwKCk7Ci0tCXZvaWQgcmVuZGVyRXh0cmFIZWxwKEdyaWRJbWFnZSAmaW1nLCB1aW50IGd4 LCB1aW50IGd5LCBjb25zdCBzdHJpbmcgJnN0ciwgaW50IHgsIGludCB5KTsKLSsJdm9pZCByZW5k ZXJFeHRyYUhlbHAoR3JpZEltYWdlICZpbWcsIHVuc2lnbmVkIGludCBneCwgdW5zaWduZWQgaW50 IGd5LCBjb25zdCBzdHJpbmcgJnN0ciwgaW50IHgsIGludCB5KTsKLSAJdm9pZCBydW5Ccmlja0Rl c3Ryb3lEbGcoKTsKLSAJdm9pZCB3YWl0Rm9ySW5wdXRSZWxlYXNlKCk7Ci0gCXZvaWQgZ2V0TmV3 U2hpbmVQb3NpdGlvbigpOwotIHB1YmxpYzoKLSAJVmlldyhDb25maWcgJmNmZywgQ2xpZW50R2Ft ZSAmX2NnKTsKLSAJflZpZXcoKTsKLS0Jdm9pZCBpbml0KHN0cmluZyB0LCB1aW50IHIpOwotKwl2 b2lkIGluaXQoc3RyaW5nIHQsIHVuc2lnbmVkIGludCByKTsKLSAJdm9pZCBydW4oKTsKLSAJdm9p ZCByZW5kZXIoKTsKLSAJdm9pZCBydW5NZW51KCk7Ci0tLS0gYS9zcmMvY2xpZW50Z2FtZS5jcHAJ MjAxOS0wNi0xMCAxMTowODo1NS41MTU3NTY0ODUgKzAyMDAKLSsrKyBiL3NyYy9jbGllbnRnYW1l LmNwcAkyMDE5LTA2LTEwIDExOjA5OjE3Ljk2NDAyMTM1NSArMDIwMAotQEAgLTk1LDcgKzk1LDcg QEAgQ2xpZW50UGxheWVyICpDbGllbnRHYW1lOjpnZXROZXh0UGxheWVyKAotIAkJaWYgKGN1clBs YXllciA9PSBwbGF5ZXJzLnNpemUoKSkKLSAJCQljdXJQbGF5ZXIgPSAwOwotIAkJcCA9IHBsYXll cnNbY3VyUGxheWVyXS5nZXQoKTsKLS0JCWlmIChwLT5nZXRMaXZlcygpID4gMCAmJiBwLT5nZXRM ZXZlbCgpIDwgKHVpbnQpbGV2ZWxzZXQtPmNvdW50KQotKwkJaWYgKHAtPmdldExpdmVzKCkgPiAw ICYmIHAtPmdldExldmVsKCkgPCAodW5zaWduZWQgaW50KWxldmVsc2V0LT5jb3VudCkKLSAJCQly ZXR1cm4gcDsKLSAJfSB3aGlsZSAoY3VyUGxheWVyICE9IHN0YXJ0SWQpOwotIAlyZXR1cm4gTlVM TDsKLUBAIC0xOTIsNyArMTkyLDcgQEAgaW50IENsaWVudEdhbWU6OnVwZGF0ZSh1bnNpZ25lZCBp bnQgbXMsCi0gCQlDbGllbnRQbGF5ZXIgKnAgPSBwbGF5ZXJzW2N1clBsYXllcl0uZ2V0KCk7Ci0g CQkvKiBib251cyBsZXZlbHMgYXJlIGp1c3Qgc2tpcHBlZCBvbiBmYWlsdXJlICovCi0gCQlpZiAo Z2FtZS0+d2lubmVyID09IFBBRERMRV9CT1RUT00gfHwgZ2FtZS0+bGV2ZWxfdHlwZSAhPSBMVF9O T1JNQUwpIHsKLS0JCQlpZiAocC0+bmV4dExldmVsKCkgPCAodWludClsZXZlbHNldC0+Y291bnQp Ci0rCQkJaWYgKHAtPm5leHRMZXZlbCgpIDwgKHVuc2lnbmVkIGludClsZXZlbHNldC0+Y291bnQp Ci0gCQkJCXAtPnNldExldmVsU25hcHNob3QobGV2ZWxzZXQtPmxldmVsc1twLT5nZXRMZXZlbCgp XSk7Ci0gCQkJZWxzZSB7Ci0gCQkJCXN0cnByaW50Zihtc2csXygiQ29uZ3JhdHVsYXRpb25zLCAl cywgeW91IGNsZWFyZWQgYWxsIGxldmVscyEiKSxwLT5nZXROYW1lKCkuY19zdHIoKSk7Ci0tLS0g YS9zcmMvY2xpZW50Z2FtZS5oCTIwMTktMDYtMTAgMTE6MTA6MzAuNTAwODc3MjMxICswMjAwCi0r KysgYi9zcmMvY2xpZW50Z2FtZS5oCTIwMTktMDYtMTAgMTE6MTA6NDEuOTcyMDEyNTgxICswMjAw Ci1AQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKLSAJdm9pZCBnZXRDdXJyZW50TGV2ZWxOYW1l QW5kQXV0aG9yKHN0cmluZyAmbmFtZSwgc3RyaW5nICZhdXRob3IpIHsKLSAJCUNsaWVudFBsYXll ciAqcCA9IHBsYXllcnNbY3VyUGxheWVyXS5nZXQoKTsKLSAJCXVuc2lnbmVkIGludCBsaWQgPSBw LT5nZXRMZXZlbCgpOwotLQkJaWYgKGxpZCA+PSAodWludClsZXZlbHNldC0+Y291bnQpIHsKLSsJ CWlmIChsaWQgPj0gKHVuc2lnbmVkIGludClsZXZlbHNldC0+Y291bnQpIHsKLSAJCQluYW1lID0g Im5vbmUiOwotIAkJCWF1dGhvciA9ICJub25lIjsgLyogaXMgZG9uZSwgc2hvdWxkIG5vdCBoYXBw ZW4gKi8KLSAJCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xicmVha291dGhkL3RlbXBs YXRlIGIvc3JjcGtncy9sYnJlYWtvdXRoZC90ZW1wbGF0ZQppbmRleCBjYjkwNjJlNGY2MzE2Li40 MWU3NWIwMmU2YTMzIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xicmVha291dGhkL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvbGJyZWFrb3V0aGQvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdsYnJlYWtvdXRoZCcKIHBrZ25hbWU9bGJyZWFrb3V0aGQKLXZlcnNpb249 MS4wLjYKK3ZlcnNpb249MS4xLjUKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1 cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWxvY2Fsc3RhdGVkaXI9L3Zhci8ke3BrZ25hbWV9IgpAQCAt MTAsNSArMTAsNSBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+ IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8vbGdhbWVzLnNv dXJjZWZvcmdlLm5ldC9MQnJlYWtvdXRIRC8iCiBkaXN0ZmlsZXM9IiR7U09VUkNFRk9SR0VfU0lU RX0vbGdhbWVzLyRwa2duYW1lLSR2ZXJzaW9uLnRhci5neiIKLWNoZWNrc3VtPWRmNWY4YWQ4OGJj ZjIwYmQzNGUxZGZkNzc2OTdiNDlhMTY4ZDgzYWQ0M2Q4ZmRmNWEzZmVlMWZlMjcyZTE1YmQKK2No ZWNrc3VtPTc1ZThjNjU5ZmZkNDQxYTVjNzY5M2RkMGVmZDRmYjIwZWQ1NjA0NTEzNTY1YmE4NGY1 MDViOTlkMTNkYjBkZWEKIG5vY2hlY2twZXJtcz15ZXMgIyB1c2VzIGEgd29ybGQtd3JpdGFibGUg LmhzY3IgZmlsZSBmb3IgZ2xvYmFsIGxlYWRlcmJvYXJkCg== --===============8843291510377370719==--