From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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: from inbox.vuxu.org (inbox.vuxu.org [IPv6:::1]) by inbox.vuxu.org (Postfix) with ESMTP id 2EAD22140C for ; Sat, 27 Jan 2024 17:11:21 +0100 (CET) Content-Type: multipart/mixed; boundary="===============4163280713767611094==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_lbreakouthd=3A_update_to_1=2E1=2E5?= To: ml@inbox.vuxu.org From: MIvanchev Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Sat, 27 Jan 2024 17:11:21 +0100 List-Id: Message-Id: <20240127161121.2EAD22140C@inbox.vuxu.org> GitHub notification mails are now in MIME to allow UTF8. --===============4163280713767611094== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgTUl2YW5jaGV2IGFnYWluc3QgbWFz dGVyIG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9N SXZhbmNoZXYvdm9pZC1wYWNrYWdlcyBsYnJlYWtvdXRoZC11cGRhdGUKaHR0cHM6Ly9naXRodWIu Y29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQ4MDExCgpsYnJlYWtvdXRoZDogdXBk YXRlIHRvIDEuMS41CiMjIyMgVGVzdGluZyB0aGUgY2hhbmdlcw0KLSBJIHRlc3RlZCB0aGUgY2hh bmdlcyBpbiB0aGlzIFBSOiAqKllFUyoqDQoNCiMjIyMgTG9jYWwgYnVpbGQgdGVzdGluZw0KLSBJ IGJ1aWx0IHRoaXMgUFIgbG9jYWxseSBmb3IgbXkgbmF0aXZlIGFyY2hpdGVjdHVyZSwgKHg4Nl82 NC1HTElCQykKCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4 L3ZvaWQtcGFja2FnZXMvcHVsbC80ODAxMS5wYXRjaCBpcyBhdHRhY2hlZA== --===============4163280713767611094== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-lbreakouthd-update-48011.patch" RnJvbSAxNWNkMmM4ZmEyMmExMTM4NDc3NmJmY2IwOTRjNzdlOGE3OTVjNmFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWhhaWwgSXZhbmNoZXYgPGNvbnRhY3RAaXZhbmNoZXYubmV0 PgpEYXRlOiBTdW4sIDMxIERlYyAyMDIzIDExOjQxOjEwICswMTAwClN1YmplY3Q6IFtQQVRDSF0g bGJyZWFrb3V0aGQ6IHVwZGF0ZSB0byAxLjEuNiwgYWRvcHQKCi0tLQogc3JjcGtncy9sYnJlYWtv dXRoZC9wYXRjaGVzL211c2wucGF0Y2ggfCA3NDMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog c3JjcGtncy9sYnJlYWtvdXRoZC9wYXRjaGVzL3VpbnQucGF0Y2ggfCAgMTggKwogc3JjcGtncy9s YnJlYWtvdXRoZC90ZW1wbGF0ZSAgICAgICAgICAgfCAgIDcgKy0KIDMgZmlsZXMgY2hhbmdlZCwg MjIgaW5zZXJ0aW9ucygrKSwgNzQ2IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvbGJyZWFrb3V0aGQvcGF0Y2hlcy9tdXNsLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9sYnJlYWtvdXRoZC9wYXRjaGVzL3VpbnQucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2xicmVha291dGhkL3BhdGNoZXMvbXVzbC5wYXRjaCBiL3NyY3BrZ3MvbGJyZWFrb3V0aGQv cGF0Y2hlcy9tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDlhZGUy ZWRjYTIyLi4wMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGJyZWFrb3V0aGQvcGF0Y2hlcy9t dXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzQzICswLDAgQEAKLXVpbnQgaXMgbm90IHBv cnRhYmxlLCB1c2UgdW5zaWduZWQgaW50IGluc3RlYWQuIEZpeGVzIG11c2wuCi0JLS14dHJhZW1l Ci0KLS0tLSBhL3NyYy9jbGllbnRnYW1lLmNwcAkyMDE4LTEyLTIxIDE5OjQzOjUxLjAwMDAwMDAw MCArMDEwMAotKysrIGIvc3JjL2NsaWVudGdhbWUuY3BwCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjMw NTUxODUwICswMjAwCi1AQCAtODgsNyArODgsNyBAQCBpbnQgQ2xpZW50R2FtZTo6aW5pdChjb25z dCBzdHJpbmcmIHNldG5hCi0gQ2xpZW50UGxheWVyICpDbGllbnRHYW1lOjpnZXROZXh0UGxheWVy KCkKLSB7Ci0gCUNsaWVudFBsYXllciAqcCA9IE5VTEw7Ci0tCXVpbnQgc3RhcnRJZCA9IGN1clBs YXllcjsKLSsJdW5zaWduZWQgaW50IHN0YXJ0SWQgPSBjdXJQbGF5ZXI7Ci0gCi0gCWRvIHsKLSAJ CWN1clBsYXllcisrOwotQEAgLTEwNyw3ICsxMDcsNyBAQCBDbGllbnRQbGF5ZXIgKkNsaWVudEdh bWU6OmdldE5leHRQbGF5ZXIoCi0gICogcGlzIGlzIHdoYXQgY29udHJvbHMgaGF2ZSBiZWVuIGFj dGl2YXRlZAotICAqIHJldHVybiBmbGFncyB3aGF0IGhhcyB0byBiZSByZW5kZXJlZCBuZXcKLSAg Ki8KLS1pbnQgQ2xpZW50R2FtZTo6dXBkYXRlKHVpbnQgbXMsIGRvdWJsZSByeCwgUGFkZGxlSW5w dXRTdGF0ZSAmcGlzKQotK2ludCBDbGllbnRHYW1lOjp1cGRhdGUodW5zaWduZWQgaW50IG1zLCBk b3VibGUgcngsIFBhZGRsZUlucHV0U3RhdGUgJnBpcykKLSB7Ci0gCWludCBvbGRTY29yZSA9IGdh bWUtPnBhZGRsZXNbMF0tPnNjb3JlOwotIAlpbnQgcmV0ID0gMDsKLS0tLSBhL3NyYy9jbGllbnRn YW1lLmgJMjAxOS0wMy0wNyAxNTozNjowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL3NyYy9jbGll bnRnYW1lLmgJMjAxOS0wNi0xMCAxMTowNDoyNS4yMjY1NTE4MDIgKzAyMDAKLUBAIC0yMSwxOSAr MjEsMTkgQEAKLSAKLSBjbGFzcyBDbGllbnRQbGF5ZXIgewotIAlzdHJpbmcgbmFtZTsKLS0JdWlu dCBsaXZlczsKLS0JdWludCBtYXhMaXZlczsKLSsJdW5zaWduZWQgaW50IGxpdmVzOwotKwl1bnNp Z25lZCBpbnQgbWF4TGl2ZXM7Ci0gCWludCBzY29yZTsKLS0JdWludCBsZXZlbDsKLSsJdW5zaWdu ZWQgaW50IGxldmVsOwotIAlMZXZlbCBzbmFwc2hvdDsKLSBwdWJsaWM6Ci0tCUNsaWVudFBsYXll cihjb25zdCBzdHJpbmcgJm4sIHVpbnQgbCwgdWludCBtbCkgOgotKwlDbGllbnRQbGF5ZXIoY29u c3Qgc3RyaW5nICZuLCB1bnNpZ25lZCBpbnQgbCwgdW5zaWduZWQgaW50IG1sKSA6Ci0gCQkJbmFt ZShuKSwgbGl2ZXMobCksIG1heExpdmVzKG1sKSwgc2NvcmUoMCksIGxldmVsKDApIHsKLSAJCV9s b2dpbmZvKCJBZGRlZCBwbGF5ZXIgJXNcbiIsbi5jX3N0cigpKTsKLSAJfTsKLSAJY29uc3Qgc3Ry aW5nJiBnZXROYW1lKCkgeyByZXR1cm4gbmFtZTsgfQotLQl1aW50IGdldExpdmVzKCkgeyByZXR1 cm4gbGl2ZXM7IH0KLS0JdWludCBnZXRNYXhMaXZlcygpIHsgcmV0dXJuIG1heExpdmVzOyB9Ci0r CXVuc2lnbmVkIGludCBnZXRMaXZlcygpIHsgcmV0dXJuIGxpdmVzOyB9Ci0rCXVuc2lnbmVkIGlu dCBnZXRNYXhMaXZlcygpIHsgcmV0dXJuIG1heExpdmVzOyB9Ci0gCXZvaWQgZ2FpbkxpZmUoKSB7 Ci0gCQlpZiAobGl2ZXMgPCBtYXhMaXZlcykKLSAJCQlsaXZlcysrOwotQEAgLTQ4LDExICs0OCwx MSBAQCBwdWJsaWM6Ci0gCQlzY29yZSArPSBzOwotIAkJcmV0dXJuIHNjb3JlOwotIAl9Ci0tCXZv aWQgc2V0TGl2ZXModWludCBsKSB7IGxpdmVzID0gbDsgfQotKwl2b2lkIHNldExpdmVzKHVuc2ln bmVkIGludCBsKSB7IGxpdmVzID0gbDsgfQotIAl2b2lkIHNldFNjb3JlKGludCBzKSB7IHNjb3Jl ID0gczsgfQotLQl1aW50IGdldExldmVsKCkgeyByZXR1cm4gbGV2ZWw7IH0KLS0JdWludCBuZXh0 TGV2ZWwoKSB7IHJldHVybiArK2xldmVsOyB9Ci0tCXZvaWQgc2V0TGV2ZWwodWludCBsKSB7IGxl dmVsID0gbDsgfQotKwl1bnNpZ25lZCBpbnQgZ2V0TGV2ZWwoKSB7IHJldHVybiBsZXZlbDsgfQot Kwl1bnNpZ25lZCBpbnQgbmV4dExldmVsKCkgeyByZXR1cm4gKytsZXZlbDsgfQotKwl2b2lkIHNl dExldmVsKHVuc2lnbmVkIGludCBsKSB7IGxldmVsID0gbDsgfQotIAl2b2lkIHNldExldmVsU25h cHNob3QoY29uc3QgTGV2ZWwgKmwpIHsKLSAJCWlmIChsID09IE5VTEwpCi0gCQkJZ2FtZV9nZXRf bGV2ZWxfc25hcHNob3QoJnNuYXBzaG90KTsKLUBAIC0xMDAsNyArMTAwLDcgQEAgY2xhc3MgQ2xp ZW50R2FtZSB7Ci0gCUdhbWUgKmdhbWU7IC8qIGN1cnJlbnQgZ2FtZSBjb250ZXh0ICovCi0gCUhp c2NvcmVzIGhpc2NvcmVzOwotIAl2ZWN0b3I8dW5pcXVlX3B0cjxDbGllbnRQbGF5ZXI+PiBwbGF5 ZXJzOwotLQl1aW50IGN1clBsYXllcjsKLSsJdW5zaWduZWQgaW50IGN1clBsYXllcjsKLSAJQ2xp ZW50UGxheWVyICpsYXN0RGVhZFBsYXllcjsKLSAJc3RyaW5nIG1zZzsKLSAJVGltZW91dCBmcmlj dGlvblRpbWVvdXQ7Ci1AQCAtMTE0LDEyICsxMTQsMTIgQEAgcHVibGljOgotIAlDbGllbnRHYW1l KENvbmZpZyAmY2ZnKTsKLSAJfkNsaWVudEdhbWUoKTsKLSAJaW50IGluaXQoY29uc3Qgc3RyaW5n JiBzZXRuYW1lLCBpbnQgbGV2ZWxpZCA9IDApOwotLQlpbnQgdXBkYXRlKHVpbnQgbXMsIGRvdWJs ZSByeCwgUGFkZGxlSW5wdXRTdGF0ZSAmcGlzKTsKLSsJaW50IHVwZGF0ZSh1bnNpZ25lZCBpbnQg bXMsIGRvdWJsZSByeCwgUGFkZGxlSW5wdXRTdGF0ZSAmcGlzKTsKLSAJR2FtZSAqZ2V0R2FtZUNv bnRleHQoKSB7IHJldHVybiBnYW1lOyB9Ci0gCXN0cmluZyBnZXRMZXZlbHNldE5hbWUoKSB7IHJl dHVybiBsZXZlbHNldC0+bmFtZTsgfQotIAl2b2lkIGdldEN1cnJlbnRMZXZlbE5hbWVBbmRBdXRo b3Ioc3RyaW5nICZuYW1lLCBzdHJpbmcgJmF1dGhvcikgewotIAkJQ2xpZW50UGxheWVyICpwID0g cGxheWVyc1tjdXJQbGF5ZXJdLmdldCgpOwotLQkJdWludCBsaWQgPSBwLT5nZXRMZXZlbCgpOwot KwkJdW5zaWduZWQgaW50IGxpZCA9IHAtPmdldExldmVsKCk7Ci0gCQlpZiAobGlkID49ICh1aW50 KWxldmVsc2V0LT5jb3VudCkgewotIAkJCW5hbWUgPSAibm9uZSI7Ci0gCQkJYXV0aG9yID0gIm5v bmUiOyAvKiBpcyBkb25lLCBzaG91bGQgbm90IGhhcHBlbiAqLwotQEAgLTEzMSw4ICsxMzEsOCBA QCBwdWJsaWM6Ci0gCWludCBnZXRMZXZlbENvdW50KCkgeyByZXR1cm4gbGV2ZWxzZXQtPmNvdW50 OyB9Ci0gCUhpc2NvcmVDaGFydCAqZ2V0SGlzY29yZUNoYXJ0KCkgeyByZXR1cm4gaGlzY29yZXMu Z2V0KGxldmVsc2V0LT5uYW1lKTsgfQotIAlDbGllbnRQbGF5ZXIqIGdldEN1cnJlbnRQbGF5ZXIo KSB7cmV0dXJuIHBsYXllcnNbY3VyUGxheWVyXS5nZXQoKTsgfQotLQl1aW50IGdldEN1cnJlbnRQ bGF5ZXJJZCgpIHtyZXR1cm4gY3VyUGxheWVyOyB9Ci0tCXZvaWQgc2V0Q3VycmVudFBsYXllcklk KHVpbnQgaWQpIHsKLSsJdW5zaWduZWQgaW50IGdldEN1cnJlbnRQbGF5ZXJJZCgpIHtyZXR1cm4g Y3VyUGxheWVyOyB9Ci0rCXZvaWQgc2V0Q3VycmVudFBsYXllcklkKHVuc2lnbmVkIGludCBpZCkg ewotIAkJY3VyUGxheWVyID0gaWQ7Ci0gCQkvKiBhZGp1c3QgcGFkZGxlIHNjb3JlICovCi0gCQln YW1lLT5wYWRkbGVzWzBdLT5zY29yZSA9IHBsYXllcnNbY3VyUGxheWVyXS0+Z2V0U2NvcmUoKTsK LUBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgotIAl2b2lkIHVwZGF0ZUhpc2NvcmVzKCk7Ci0g CWNvbnN0IHN0cmluZyYgZ2V0UGxheWVyTWVzc2FnZSgpIHsgcmV0dXJuIG1zZzsgfQotIAl2ZWN0 b3I8dW5pcXVlX3B0cjxDbGllbnRQbGF5ZXI+PiYgZ2V0UGxheWVycygpIHsgcmV0dXJuIHBsYXll cnM7IH0KLS0Jdm9pZCByZXN1bWVQbGF5ZXIodWludCBwaWQsIHVpbnQgbGl2ZXMsIGludCBzY29y ZSwgdWludCBsZXZlbCkgewotKwl2b2lkIHJlc3VtZVBsYXllcih1bnNpZ25lZCBpbnQgcGlkLCB1 bnNpZ25lZCBpbnQgbGl2ZXMsIGludCBzY29yZSwgdW5zaWduZWQgaW50IGxldmVsKSB7Ci0gCQlw bGF5ZXJzW3BpZF0tPnNldExpdmVzKGxpdmVzKTsKLSAJCXBsYXllcnNbcGlkXS0+c2V0U2NvcmUo c2NvcmUpOwotIAkJcGxheWVyc1twaWRdLT5zZXRMZXZlbChsZXZlbCk7Ci0tLS0gYS9zcmMvbWVu dS5jcHAJMjAxOC0xMS0yNCAxNDozNTo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL3NyYy9tZW51 LmNwcAkyMDE5LTA2LTEwIDExOjA0OjI1LjIzMTU1MTg2MiArMDIwMAotQEAgLTI0LDcgKzI0LDcg QEAgZXh0ZXJuIFNETF9SZW5kZXJlciAqbXJjOwotIEZvbnQgKk1lbnVJdGVtOjpmTm9ybWFsID0g TlVMTDsKLSBGb250ICpNZW51SXRlbTo6ZkZvY3VzID0gTlVMTDsKLSBGb250ICpNZW51SXRlbTo6 ZlRvb2x0aXAgPSBOVUxMOwotLXVpbnQgTWVudUl0ZW06OnRvb2x0aXBXaWR0aCA9IDMwMDsKLSt1 bnNpZ25lZCBpbnQgTWVudUl0ZW06OnRvb2x0aXBXaWR0aCA9IDMwMDsKLSAKLSAvKiogSGVscGVy IHRvIHJlbmRlciBhIHBhcnQgb2YgdGhlIG1lbnUgaXRlbS4gUG9zaXRpb24gaXMgZGV0ZXJtaW5l ZAotICAqIGJ5IGdpdmVuIGFsaWdubWVudC4gKi8KLS0tLSBhL3NyYy9tZW51LmgJMjAxOC0xMi0y MiAxMzozMDo1OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL3NyYy9tZW51LmgJMjAxOS0wNi0xMCAx MTowNDoyNS4yMjc1NTE4MTQgKzAyMDAKLUBAIC01OSw3ICs1OSw3IEBAIHByb3RlY3RlZDoKLSAJ fQotIHB1YmxpYzoKLSAJc3RhdGljIEZvbnQgKmZOb3JtYWwsICpmRm9jdXMsICpmVG9vbHRpcDsK LS0Jc3RhdGljIHVpbnQgdG9vbHRpcFdpZHRoOwotKwlzdGF0aWMgdW5zaWduZWQgaW50IHRvb2x0 aXBXaWR0aDsKLSAKLSAJTWVudUl0ZW0oY29uc3Qgc3RyaW5nICZjLCBjb25zdCBzdHJpbmcgJnR0 LCBpbnQgYWlkID0gQUlEX05PTkUpIDoKLSAJCQljYXB0aW9uKGMpLCBsYmxOb3JtYWwodHJ1ZSks IGxibEZvY3VzKHRydWUpLAotQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgotIAkJfQotIAotIAl9 Ci0tCXZpcnR1YWwgdm9pZCB1cGRhdGUodWludCBtcykgewotKwl2aXJ0dWFsIHZvaWQgdXBkYXRl KHVuc2lnbmVkIGludCBtcykgewotIAkJaWYgKCFmb2N1cyAmJiBmYWRpbmdBbHBoYSA+IDApIHsK LSAJCQlmYWRpbmdBbHBoYSAtPSAwLjcqbXM7Ci0gCQkJaWYgKGZhZGluZ0FscGhhIDwgMCkKLUBA IC0yMTEsOSArMjExLDkgQEAgcHVibGljOgotIAkJc2V0VmFsdWUob3B0aW9uc1t2XSk7Ci0gCX0K LSAJTWVudUl0ZW1MaXN0KGNvbnN0IHN0cmluZyAmYywgY29uc3Qgc3RyaW5nICZ0dCwgaW50IGFp ZCwKLS0JCQkJCWludCAmdiwgY29uc3QgY2hhciAqKm9wdHMsIHVpbnQgb3B0TnVtKQotKwkJCQkJ aW50ICZ2LCBjb25zdCBjaGFyICoqb3B0cywgdW5zaWduZWQgaW50IG9wdE51bSkKLSAJCQk6IE1l bnVJdGVtUmFuZ2UoYyx0dCxhaWQsdiwwLG9wdE51bS0xLDEpIHsKLS0JCWZvciAodWludCBpID0g MDsgaSA8IG9wdE51bTsgaSsrKQotKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBvcHRO dW07IGkrKykKLSAJCQlvcHRpb25zLnB1c2hfYmFjayhvcHRzW2ldKTsKLSAJCXNldFZhbHVlKG9w dGlvbnNbdl0pOwotIAl9Ci1AQCAtMjQ3LDEwICsyNDcsMTAgQEAgY2xhc3MgTWVudUl0ZW1JbnRM aXN0IDogcHVibGljIE1lbnVJdGVtUgotIAl2ZWN0b3I8aW50PiBvcHRpb25zOwotIHB1YmxpYzoK LSAJTWVudUl0ZW1JbnRMaXN0KGNvbnN0IHN0cmluZyAmYywgY29uc3Qgc3RyaW5nICZ0dCwKLS0J CQkJCWludCAmdiwgY29uc3QgaW50ICpvcHRzLCB1aW50IG9wdE51bSkKLSsJCQkJCWludCAmdiwg Y29uc3QgaW50ICpvcHRzLCB1bnNpZ25lZCBpbnQgb3B0TnVtKQotIAkJCQk6IE1lbnVJdGVtUmFu Z2UoYyx0dCxBSURfTk9ORSxpZHgsMCxvcHROdW0tMSwxKSwgdmFsKHYpIHsKLSAJCWlkeCA9IDA7 Ci0tCQlmb3IgKHVpbnQgaSA9IDA7IGkgPCBvcHROdW07IGkrKykgewotKwkJZm9yICh1bnNpZ25l ZCBpbnQgaSA9IDA7IGkgPCBvcHROdW07IGkrKykgewotIAkJCWlmIChvcHRzW2ldID09IHZhbCkK LSAJCQkJaWR4ID0gaTsKLSAJCQlvcHRpb25zLnB1c2hfYmFjayhvcHRzW2ldKTsKLUBAIC0zMzQs NyArMzM0LDcgQEAgcHVibGljOgotIAkJaW50IHcgPSB0aGVtZS5tZW51SXRlbVdpZHRoOwotIAkJ aW50IHggPSB0aGVtZS5tZW51WCAtIHcvMjsKLSAJCWludCB5ID0gdGhlbWUubWVudVkgLSBoLzI7 Ci0tCQlmb3IgKHVpbnQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7IGkrKykgewotKwkJZm9yICh1 bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7IGkrKykgewotIAkJCU1lbnVJdGVt U3ViICpzdWIgPSBkeW5hbWljX2Nhc3Q8TWVudUl0ZW1TdWIqPihpdGVtc1tpXS5nZXQoKSk7Ci0g CQkJaXRlbXNbaV0tPnNldEdlb21ldHJ5KHgsIHkgKyBpKnRoZW1lLm1lbnVJdGVtSGVpZ2h0LAot IAkJCQkJCXcsIHRoZW1lLm1lbnVJdGVtSGVpZ2h0KTsKLUBAIC0zNDIsNyArMzQyLDcgQEAgcHVi bGljOgotIAkJCQlzdWItPmdldFN1Yk1lbnUoKS0+YWRqdXN0KCk7Ci0gCQl9Ci0gCX0KLS0Jdm9p ZCB1cGRhdGUodWludCBtcykgewotKwl2b2lkIHVwZGF0ZSh1bnNpZ25lZCBpbnQgbXMpIHsKLSAJ CWZvciAoYXV0byYgaSA6IGl0ZW1zKQotIAkJCWktPnVwZGF0ZShtcyk7Ci0gCX0KLS0tLSBhL3Ny Yy9taXhlci5oCTIwMTktMDMtMDcgMjA6NTQ6NDUuMDAwMDAwMDAwICswMTAwCi0rKysgYi9zcmMv bWl4ZXIuaAkyMDE5LTA2LTEwIDExOjA0OjI1LjIyODU1MTgyNiArMDIwMAotQEAgLTYzLDcgKzYz LDcgQEAgcHVibGljOgotIAkJCV9sb2dpbmZvKCJNaXhlciBjbG9zZWRcbiIpOwotIAkJfQotIAl9 Ci0tCXZvaWQgc2V0Vm9sdW1lKHVpbnQgdikgeyAvKiB2IGlzIDAuLjEwMCAqLwotKwl2b2lkIHNl dFZvbHVtZSh1bnNpZ25lZCBpbnQgdikgeyAvKiB2IGlzIDAuLjEwMCAqLwotIAkJaWYgKHYgPiAx MDApCi0gCQkJdiA9IDEwMDsKLSAJCXYgPSB2ICogTUlYX01BWF9WT0xVTUUgLyAxMDA7Ci0tLS0g YS9zcmMvc2RsLmNwcAkyMDE5LTAzLTA3IDE0OjA3OjA1LjAwMDAwMDAwMCArMDEwMAotKysrIGIv c3JjL3NkbC5jcHAJMjAxOS0wNi0xMCAxMTowNDoyNS4yMzE1NTE4NjIgKzAyMDAKLUBAIC00ODQs NyArNDg0LDcgQEAgdm9pZCBGb250Ojp3cml0ZVRleHQoaW50IHgsIGludCB5LCBjb25zdAotIAlT RExfRGVzdHJveVRleHR1cmUodGV4KTsKLSB9Ci0gCi0tdm9pZCBMYWJlbDo6c2V0VGV4dChGb250 ICZmb250LCBjb25zdCBzdHJpbmcgJnN0ciwgdWludCBtYXh3KQotK3ZvaWQgTGFiZWw6OnNldFRl eHQoRm9udCAmZm9udCwgY29uc3Qgc3RyaW5nICZzdHIsIHVuc2lnbmVkIGludCBtYXh3KQotIHsK LSAJaWYgKHN0ciA9PSAiIikgewotIAkJZW1wdHkgPSB0cnVlOwotLS0tIGEvc3JjL3NkbC5oCTIw MTktMDMtMDcgMTM6MTU6MDcuMDAwMDAwMDAwICswMTAwCi0rKysgYi9zcmMvc2RsLmgJMjAxOS0w Ni0xMCAxMTowNDoyNS4yMjg1NTE4MjYgKzAyMDAKLUBAIC0yMDksNyArMjA5LDcgQEAgcHVibGlj OgotIAkJCXJldHVybiBUVEZfU2l6ZVRleHQoZm9udCxzdHIuY19zdHIoKSx3LGgpOwotIAkJcmV0 dXJuIDA7Ci0gCX07Ci0tCWludCBnZXRXcmFwcGVkVGV4dFNpemUoY29uc3Qgc3RyaW5nJiBzdHIs IHVpbnQgbWF4dywgaW50ICp3LCBpbnQgKmgpIHsKLSsJaW50IGdldFdyYXBwZWRUZXh0U2l6ZShj b25zdCBzdHJpbmcmIHN0ciwgdW5zaWduZWQgaW50IG1heHcsIGludCAqdywgaW50ICpoKSB7Ci0g CQkqdyA9ICpoID0gMDsKLSAJCVNETF9TdXJmYWNlICpzdXJmID0gVFRGX1JlbmRlclVURjhfQmxl bmRlZF9XcmFwcGVkKAotIAkJCQkJCWZvbnQsIHN0ci5jX3N0cigpLCBjbHIsIG1heHcpOwotQEAg LTI3NSw3ICsyNzUsNyBAQCBwdWJsaWM6Ci0gCQkJYiA9IC0xOwotIAkJYm9yZGVyID0gYjsKLSAJ fQotLQl2b2lkIHNldFRleHQoRm9udCAmZiwgY29uc3Qgc3RyaW5nICZzdHIsIHVpbnQgbWF4ID0g MCk7Ci0rCXZvaWQgc2V0VGV4dChGb250ICZmLCBjb25zdCBzdHJpbmcgJnN0ciwgdW5zaWduZWQg aW50IG1heCA9IDApOwotIAl2b2lkIGNsZWFyVGV4dCgpIHsKLSAJCWVtcHR5ID0gdHJ1ZTsKLSAJ fQotQEAgLTI5NSwxMiArMjk1LDEyIEBAIHB1YmxpYzoKLSAJdm9pZCBzZXRBbHBoYShpbnQgYSkg ewotIAkJaW1nLnNldEFscGhhKGEpOwotIAl9Ci0tCXVpbnQgZ2V0SGVpZ2h0KCkgewotKwl1bnNp Z25lZCBpbnQgZ2V0SGVpZ2h0KCkgewotIAkJaWYgKGVtcHR5KQotIAkJCXJldHVybiAwOwotIAkJ cmV0dXJuIGltZy5nZXRIZWlnaHQoKTsKLSAJfQotLQl1aW50IGdldFdpZHRoKCkgewotKwl1bnNp Z25lZCBpbnQgZ2V0V2lkdGgoKSB7Ci0gCQlpZiAoZW1wdHkpCi0gCQkJcmV0dXJuIDA7Ci0gCQly ZXR1cm4gaW1nLmdldFdpZHRoKCk7Ci0tLS0gYS9zcmMvc2VsZWN0ZGxnLmNwcAkyMDE4LTEyLTIx IDIwOjAyOjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIGIvc3JjL3NlbGVjdGRsZy5jcHAJMjAxOS0w Ni0xMCAxMTowNDoyNS4yMzI1NTE4NzQgKzAyMDAKLUBAIC0zMSwxNyArMzEsMTcgQEAgU2V0SW5m bzo6U2V0SW5mbyhjb25zdCBzdHJpbmcgJm4sIFRoZW1lCi0gCWF1dGhvciA9ICI/IjsKLSAKLSAJ LyogY3JlYXRlIGVtcHR5IHByZXZpZXcgKi8KLS0JdWludCBzdyA9IHRoZW1lLm1lbnVCYWNrZ3Jv dW5kLmdldFdpZHRoKCk7Ci0tCXVpbnQgc2ggPSB0aGVtZS5tZW51QmFja2dyb3VuZC5nZXRIZWln aHQoKTsKLS0JdWludCBidyA9IHRoZW1lLmJyaWNrcy5nZXRHcmlkV2lkdGgoKTsKLS0JdWludCBi aCA9IHRoZW1lLmJyaWNrcy5nZXRHcmlkSGVpZ2h0KCk7Ci0tCXVpbnQgc29mZiA9IGJoLzM7Ci0r CXVuc2lnbmVkIGludCBzdyA9IHRoZW1lLm1lbnVCYWNrZ3JvdW5kLmdldFdpZHRoKCk7Ci0rCXVu c2lnbmVkIGludCBzaCA9IHRoZW1lLm1lbnVCYWNrZ3JvdW5kLmdldEhlaWdodCgpOwotKwl1bnNp Z25lZCBpbnQgYncgPSB0aGVtZS5icmlja3MuZ2V0R3JpZFdpZHRoKCk7Ci0rCXVuc2lnbmVkIGlu dCBiaCA9IHRoZW1lLmJyaWNrcy5nZXRHcmlkSGVpZ2h0KCk7Ci0rCXVuc2lnbmVkIGludCBzb2Zm ID0gYmgvMzsKLSAJcHJldmlldy5jcmVhdGUoTUFQV0lEVEgqdGhlbWUuYnJpY2tzLmdldEdyaWRX aWR0aCgpLAotIAkJCU1BUEhFSUdIVCp0aGVtZS5icmlja3MuZ2V0R3JpZEhlaWdodCgpKTsKLSAJ U0RMX1NldFJlbmRlclRhcmdldChtcmMsIHByZXZpZXcuZ2V0VGV4KCkpOwotIAlJbWFnZSYgd2Fs bHBhcGVyID0gdGhlbWUud2FsbHBhcGVyc1tyYW5kKCkldGhlbWUubnVtV2FsbHBhcGVyc107Ci0t CWZvciAodWludCB3eSA9IDA7IHd5IDwgc2g7IHd5ICs9IHdhbGxwYXBlci5nZXRIZWlnaHQoKSkK LS0JCWZvciAodWludCB3eCA9IDA7IHd4IDwgc3c7IHd4ICs9IHdhbGxwYXBlci5nZXRXaWR0aCgp KQotKwlmb3IgKHVuc2lnbmVkIGludCB3eSA9IDA7IHd5IDwgc2g7IHd5ICs9IHdhbGxwYXBlci5n ZXRIZWlnaHQoKSkKLSsJCWZvciAodW5zaWduZWQgaW50IHd4ID0gMDsgd3ggPCBzdzsgd3ggKz0g d2FsbHBhcGVyLmdldFdpZHRoKCkpCi0gCQkJd2FsbHBhcGVyLmNvcHkod3gsd3kpOwotIAl0aGVt ZS5mcmFtZVNoYWRvdy5jb3B5KHNvZmYsc29mZik7Ci0gCi1AQCAtNjQsNyArNjQsNyBAQCBTZXRJ bmZvOjpTZXRJbmZvKGNvbnN0IHN0cmluZyAmbiwgVGhlbWUKLSAJc3RyaW5nIGZwYXRoID0gZ2V0 RnVsbExldmVsc2V0UGF0aChuKTsKLSAJc3RyaW5nIGxpbmVzWzUrRURJVF9IRUlHSFRdOwotIAlp ZnN0cmVhbSBpZnMoZnBhdGgpOwotLQl1aW50IG9mZnNldCA9IDA7Ci0rCXVuc2lnbmVkIGludCBv ZmZzZXQgPSAwOwotIAotIAlpZiAoIWlmcy5pc19vcGVuKCkpIHsKLSAJCV9sb2dlcnIoIkxldmVs c2V0ICVzIG5vdCBmb3VuZCwgbm8gcHJldmlldyBjcmVhdGVkXG4iLG4uY19zdHIoKSk7Ci1AQCAt NzIsNyArNzIsNyBAQCBTZXRJbmZvOjpTZXRJbmZvKGNvbnN0IHN0cmluZyAmbiwgVGhlbWUKLSAJ CVNETF9TZXRSZW5kZXJUYXJnZXQobXJjLCBOVUxMKTsKLSAJCXJldHVybjsKLSAJfQotLQlmb3Ig KHVpbnQgaSA9IDA7IGkgPCA1K0VESVRfSEVJR0hUOyBpKyspCi0rCWZvciAodW5zaWduZWQgaW50 IGkgPSAwOyBpIDwgNStFRElUX0hFSUdIVDsgaSsrKQotIAkJZ2V0bGluZShpZnMsbGluZXNbaV0p OwotIAlpZiAobGluZXNbMF0uZmluZCgiVmVyc2lvbiIpICE9IHN0cmluZzo6bnBvcykgewotIAkJ dmVyc2lvbiA9IHRyaW1TdHJpbmcobGluZXNbMF0uc3Vic3RyKGxpbmVzWzBdLmZpbmQoJzonKSsx KSk7Ci1AQCAtODksOCArODksOCBAQCBTZXRJbmZvOjpTZXRJbmZvKGNvbnN0IHN0cmluZyAmbiwg VGhlbWUKLSAKLSAJLyogYWRkIGJyaWNrcyBvZiBmaXJzdCBsZXZlbAotIAkgKiBYWFggZGlyZWN0 IGFjY2VzcyB0byBicmljayBjb252ZXJzaW9uIHRhYmxlIGZyb20gbGliZ2FtZSAqLwotLQlmb3Ig KHVpbnQgaiA9IDA7IGogPCBFRElUSEVJR0hUOyBqKyspCi0tCQlmb3IgKHVpbnQgaSA9IDA7IGkg PCBFRElUV0lEVEg7IGkrKykgewotKwlmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IEVESVRI RUlHSFQ7IGorKykKLSsJCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgRURJVFdJRFRIOyBp KyspIHsKLSAJCQlpbnQgayA9IC0xOwotIAkJCWZvciAoIGsgPSAwOyBrIDwgQlJJQ0tfQ09VTlQ7 IGsrKyApCi0gCQkJCWlmIChsaW5lc1s0K29mZnNldCtqXVtpXSA9PSBicmlja19jb252X3RhYmxl W2tdLmMpCi1AQCAtOTksOCArOTksOCBAQCBTZXRJbmZvOjpTZXRJbmZvKGNvbnN0IHN0cmluZyAm biwgVGhlbWUKLSAJCQkJdGhlbWUuYnJpY2tzU2hhZG93LmNvcHkoYnJpY2tfY29udl90YWJsZVtr XS5pZCwwLAotIAkJCQkJCShpKzEpKmJ3K2JoLzMsICgxK2opKmJoK2JoLzMpOwotIAkJfQotLQlm b3IgKHVpbnQgaiA9IDA7IGogPCBFRElUSEVJR0hUOyBqKyspCi0tCQlmb3IgKHVpbnQgaSA9IDA7 IGkgPCBFRElUV0lEVEg7IGkrKykgewotKwlmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IEVE SVRIRUlHSFQ7IGorKykKLSsJCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgRURJVFdJRFRI OyBpKyspIHsKLSAJCQlpbnQgayA9IC0xOwotIAkJCWZvciAoIGsgPSAwOyBrIDwgQlJJQ0tfQ09V TlQ7IGsrKyApCi0gCQkJCWlmIChsaW5lc1s0K29mZnNldCtqXVtpXSA9PSBicmlja19jb252X3Rh YmxlW2tdLmMpCi1AQCAtMTE3LDggKzExNyw4IEBAIFNldEluZm86OlNldEluZm8oY29uc3Qgc3Ry aW5nICZuLCBUaGVtZQotIC8qKiBDcmVhdGUgbGV2ZWxzZXQgbGlzdCBhbmQgcHJldmlld3MgKyBs YXlvdXQuICovCi0gdm9pZCBTZWxlY3REaWFsb2c6OmluaXQoKQotIHsKLS0JdWludCBzdyA9IHRo ZW1lLm1lbnVCYWNrZ3JvdW5kLmdldFdpZHRoKCk7Ci0tCXVpbnQgc2ggPSB0aGVtZS5tZW51QmFj a2dyb3VuZC5nZXRIZWlnaHQoKTsKLSsJdW5zaWduZWQgaW50IHN3ID0gdGhlbWUubWVudUJhY2tn cm91bmQuZ2V0V2lkdGgoKTsKLSsJdW5zaWduZWQgaW50IHNoID0gdGhlbWUubWVudUJhY2tncm91 bmQuZ2V0SGVpZ2h0KCk7Ci0gCXZlY3RvcjxzdHJpbmc+IGxpc3QsIGxpc3QyOwotIAotIAlsaXN0 LnB1c2hfYmFjayhfKFRPVVJOQU1FTlQpKTsKLUBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBTZWxl Y3REaWFsb2c6OnJlbmRlcigpCi0gCQkJZm9udC5zZXRDb2xvcih0aGVtZS5tZW51Rm9udENvbG9y Tm9ybWFsKTsKLSAJCWZvbnQud3JpdGUobHgsIGx5LWNoLCBfKCI8UHJldmlvdXMgUGFnZT4iKSk7 Ci0gCX0KLS0JZm9yICh1aW50IGkgPSAwOyBpIDwgdmxlbjsgaSsrLCB5ICs9IGNoKSB7Ci0rCWZv ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdmxlbjsgaSsrLCB5ICs9IGNoKSB7Ci0gCQlpZiAo cG9zICsgaSA8IGVudHJpZXMuc2l6ZSgpICYmIHNlbCA9PSAoaW50KShwb3MgKyBpKSkKLSAJCQlm b250LnNldENvbG9yKHRoZW1lLm1lbnVGb250Q29sb3JGb2N1cyk7Ci0gCQllbHNlCi0tLS0gYS9z cmMvc2VsZWN0ZGxnLmgJMjAxOC0xMC0zMSAxODo0OTozNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBi L3NyYy9zZWxlY3RkbGcuaAkyMDE5LTA2LTEwIDExOjA0OjI1LjIyODU1MTgyNiArMDIwMAotQEAg LTIxLDcgKzIxLDcgQEAgY2xhc3MgU2V0SW5mbyB7Ci0gCXN0cmluZyBuYW1lOwotIAlzdHJpbmcg dmVyc2lvbjsKLSAJc3RyaW5nIGF1dGhvcjsKLS0JdWludCBsZXZlbHM7Ci0rCXVuc2lnbmVkIGlu dCBsZXZlbHM7Ci0gCUltYWdlIHByZXZpZXc7Ci0gcHVibGljOgotIAlTZXRJbmZvKGNvbnN0IHN0 cmluZyAmbmFtZSwgVGhlbWUgJnRoZW1lKTsKLUBAIC00MCwxMiArNDAsMTIgQEAgY2xhc3MgU2Vs ZWN0RGlhbG9nIHsKLSAJYm9vbCBxdWl0UmVjZWl2ZWQ7Ci0gCXZlY3Rvcjx1bmlxdWVfcHRyPFNl dEluZm8+PiBlbnRyaWVzOwotIAlpbnQgc2VsOwotLQl1aW50IHBvcywgbWF4LCB2bGVuOwotKwl1 bnNpZ25lZCBpbnQgcG9zLCBtYXgsIHZsZW47Ci0gCWludCB0eCwgdHk7IC8qIGNlbnRlcmVkIHRp dGxlIHBvc2l0aW9uICovCi0gCWludCBseCwgbHk7IC8qIGxpc3Qgc3RhcnQgKi8KLS0JdWludCBj dywgY2g7IC8qIGNlbGwgc2l6ZSAqLwotKwl1bnNpZ25lZCBpbnQgY3csIGNoOyAvKiBjZWxsIHNp emUgKi8KLSAJaW50IHB4LCBweTsKLS0JdWludCBwdywgcGg7IC8qIHByZXZpZXcgZ2VvbWV0cnkg Ki8KLSsJdW5zaWduZWQgaW50IHB3LCBwaDsgLyogcHJldmlldyBnZW9tZXRyeSAqLwotIAotIAlJ bWFnZSBiYWNrZ3JvdW5kOwotIAotLS0tIGEvc3JjL3Nwcml0ZS5jcHAJMjAxOC0wOS0wMiAxODo0 NzoxOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL3NyYy9zcHJpdGUuY3BwCTIwMTktMDYtMTAgMTE6 MDQ6MjUuMjMyNTUxODc0ICswMjAwCi1AQCAtMjQsNyArMjQsNyBAQCBleHRlcm4gU0RMX1JlbmRl cmVyICptcmM7Ci0gUGFydGljbGU6OlBhcnRpY2xlKEdyaWRJbWFnZSAmc2ltZywgaW50IF9neCwg aW50IF9neSwKLSAJCQkJCWludCBfc3gsIGludCBfc3ksIGludCBfc3csIGludCBfc2gsCi0gCQkJ CQlkb3VibGUgcHgsIGRvdWJsZSBweSwgZG91YmxlIHZ4LCBkb3VibGUgdnksCi0tCQkJCQlkb3Vi bGUgdnBtcywgdWludCBsaWZldGltZSkKLSsJCQkJCWRvdWJsZSB2cG1zLCB1bnNpZ25lZCBpbnQg bGlmZXRpbWUpCi0gCTogaW1nKHNpbWcpLCBneChfZ3gpLCBneShfZ3kpLCBzeChfc3gpLCBzeShf c3kpLCBzdyhfc3cpLCBzaChfc2gpLAotIAkgIHBvcyhweCxweSksIHZlbCh2eCx2eSkKLSB7Ci0t LS0gYS9zcmMvc3ByaXRlLmgJMjAxOC0wOS0wMiAxODo0NzoxOC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBiL3NyYy9zcHJpdGUuaAkyMDE5LTA2LTEwIDExOjA0OjI1LjIyOTU1MTgzOCArMDIwMAotQEAg LTE5LDIxICsxOSwyMSBAQAotIGNsYXNzIFNwcml0ZSB7Ci0gcHVibGljOgotIAl2aXJ0dWFsIH5T cHJpdGUoKSB7fTsKLS0JdmlydHVhbCBpbnQgdXBkYXRlKHVpbnQgbXMpID0gMDsgLyogcmV0dXJu IDEgaWYgdG8gYmUgcmVtb3ZlZCwgMCBvdGhlcndpc2UgKi8KLSsJdmlydHVhbCBpbnQgdXBkYXRl KHVuc2lnbmVkIGludCBtcykgPSAwOyAvKiByZXR1cm4gMSBpZiB0byBiZSByZW1vdmVkLCAwIG90 aGVyd2lzZSAqLwotIAl2aXJ0dWFsIHZvaWQgcmVuZGVyKCkgPSAwOwotIH07Ci0gCi0gY2xhc3Mg QW5pbWF0aW9uIDogcHVibGljIFNwcml0ZSB7Ci0gCUdyaWRJbWFnZSYgaW1nOwotLQl1aW50IGlk OwotKwl1bnNpZ25lZCBpbnQgaWQ7Ci0gCWludCB4LCB5OyAvKiBwb3NpdGlvbiBvbiBzY3JlZW4g Ki8KLSAJRnJhbWVDb3VudGVyIGZjOwotIHB1YmxpYzoKLS0JQW5pbWF0aW9uKEdyaWRJbWFnZSAm X2ltZywgdWludCBfaWQsIHVpbnQgZGVsYXksIGludCBfeCwgaW50IF95KQotKwlBbmltYXRpb24o R3JpZEltYWdlICZfaW1nLCB1bnNpZ25lZCBpbnQgX2lkLCB1bnNpZ25lZCBpbnQgZGVsYXksIGlu dCBfeCwgaW50IF95KQotIAkJCQk6IGltZyhfaW1nKSwgaWQoX2lkKSwgeChfeCksIHkoX3kpIHsK LSAJCWZjLmluaXQoaW1nLmdldEdyaWRTaXplWCgpLCBkZWxheSk7Ci0gCX0KLS0JaW50IHVwZGF0 ZSh1aW50IG1zKSB7Ci0rCWludCB1cGRhdGUodW5zaWduZWQgaW50IG1zKSB7Ci0gCQlpZiAoZmMu dXBkYXRlKG1zKSkKLSAJCQlyZXR1cm4gMTsgLyogZGllICovCi0gCQlyZXR1cm4gMDsKLUBAIC01 MCw4ICs1MCw4IEBAIGNsYXNzIFBhcnRpY2xlIDogcHVibGljIFNwcml0ZSB7Ci0gCVNtb290aENv dW50ZXIgc2M7Ci0gcHVibGljOgotIAlQYXJ0aWNsZShHcmlkSW1hZ2UgJnNpbWcsIGludCBneCwg aW50IGd5LCBpbnQgc3gsIGludCBzeSwgaW50IHN3LCBpbnQgc2gsCi0tCQkJZG91YmxlIHB4LCBk b3VibGUgcHksIGRvdWJsZSB2eCwgZG91YmxlIHZ5LCBkb3VibGUgdnBtcywgdWludCBsaWZldGlt ZSk7Ci0tCWludCB1cGRhdGUodWludCBtcykgewotKwkJCWRvdWJsZSBweCwgZG91YmxlIHB5LCBk b3VibGUgdngsIGRvdWJsZSB2eSwgZG91YmxlIHZwbXMsIHVuc2lnbmVkIGludCBsaWZldGltZSk7 Ci0rCWludCB1cGRhdGUodW5zaWduZWQgaW50IG1zKSB7Ci0gCQlwb3MuYWRkKG1zLCB2ZWwpOwot IAkJcmV0dXJuIHNjLnVwZGF0ZShtcyk7Ci0gCX0KLS0tLSBhL3NyYy90aGVtZS5jcHAJMjAxOS0w My0wNyAxNToxNDo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL3NyYy90aGVtZS5jcHAJMjAxOS0w Ni0xMCAxMTowNDoyNS4yMzM1NTE4ODYgKzAyMDAKLUBAIC0yMiwxMiArMjIsMTIgQEAgZXh0ZXJu IFNETF9SZW5kZXJlciAqbXJjOwotIAotIC8qKiBMb2FkIHJlc291cmNlcyBhbmQgc2NhbGUgaWYg bmVjZXNzYXJ5IHVzaW5nIGJyaWNrcyBzY3JlZW4gaGVpZ2h0LgotICAqIFdoYXRldmVyIGlzIG1p c3Npbmc6IEZhbGwgYmFjayB0byBTdGFuZGFyZCB0aGVtZS4gKi8KLS12b2lkIFRoZW1lOjpsb2Fk KHN0cmluZyBuYW1lLCB1aW50IHNjcmVlbldpZHRoLCB1aW50IHNjcmVlbkhlaWdodCwKLS0JCQkJ dWludCBicmlja1NjcmVlbldpZHRoLCB1aW50IGJyaWNrU2NyZWVuSGVpZ2h0LAotK3ZvaWQgVGhl bWU6OmxvYWQoc3RyaW5nIG5hbWUsIHVuc2lnbmVkIGludCBzY3JlZW5XaWR0aCwgdW5zaWduZWQg aW50IHNjcmVlbkhlaWdodCwKLSsJCQkJdW5zaWduZWQgaW50IGJyaWNrU2NyZWVuV2lkdGgsIHVu c2lnbmVkIGludCBicmlja1NjcmVlbkhlaWdodCwKLSAJCQkJaW50IGFudGlhbGlhc2luZykKLSB7 Ci0gCXN0cmluZyBwYXRoLCBmcGF0aDsKLS0JdWludCBpdywgaWg7Ci0rCXVuc2lnbmVkIGludCBp dywgaWg7Ci0gCi0gCWlmIChuYW1lWzBdID09ICd+JykKLSAJCXBhdGggPSBnZXRIb21lRGlyKCkg KyAiLyIgKyBDT05GSUdESVIgKyAiL3RoZW1lcy8iICsgbmFtZS5zdWJzdHIoMSk7Ci1AQCAtMzc2 LDcgKzM3Niw3IEBAIHZvaWQgVGhlbWU6OmxvYWQoc3RyaW5nIG5hbWUsIHVpbnQgc2NyZWUKLSAK LSAJLyogbG9hZCBhbmQgc2NhbGUgdXAgdG8gMTAgd2FsbHBhcGVycyAqLwotIAlzdHJpbmcgd3Bh dGggPSBzdGRQYXRoOwotLQl1aW50IHdiZmggPSBzYmZoLCB3YmZ3ID0gc2JmdzsgLyogZm9yIHNj YWxpbmcgKi8KLSsJdW5zaWduZWQgaW50IHdiZmggPSBzYmZoLCB3YmZ3ID0gc2JmdzsgLyogZm9y IHNjYWxpbmcgKi8KLSAJaWYgKGZpbGVFeGlzdHMocGF0aCArICIvYmFjazAucG5nIikgfHwgZmls ZUV4aXN0cyhwYXRoICsgIi9iYWNrMC5qcGciKSkgewotIAkJd3BhdGggPSBwYXRoOwotIAkJd2Jm aCA9IGJyaWNrRmlsZUhlaWdodDsKLS0tLSBhL3NyYy90aGVtZS5oCTIwMTktMDMtMDcgMTU6MDU6 NTMuMDAwMDAwMDAwICswMTAwCi0rKysgYi9zcmMvdGhlbWUuaAkyMDE5LTA2LTEwIDExOjA0OjI1 LjIyOTU1MTgzOCArMDIwMAotQEAgLTMzLDM3ICszMywzNyBAQCBjbGFzcyBUaGVtZSB7Ci0gCXN0 cmluZyBzdGRQYXRoOyAvKiBwYXRoIHRvIHN0YW5kYXJkIHRoZW1lIGZvciBmYWxsYmFja3MgKi8K LSAJYm9vbCBvbGRUaGVtZTsKLSAJaW50IGJvYXJkWDsKLS0JdWludCBib2FyZFdpZHRoOwotKwl1 bnNpZ25lZCBpbnQgYm9hcmRXaWR0aDsKLSAKLSAJLyogbG9hZGVkIGZyb20gdGhlbWUuaW5pICov Ci0gCXN0cmluZyB0aXRsZTsKLSAJc3RyaW5nIGF1dGhvcjsKLSAJc3RyaW5nIHZlcnNpb247Ci0t CXVpbnQgYnJpY2tGaWxlV2lkdGg7Ci0tCXVpbnQgYnJpY2tGaWxlSGVpZ2h0OwotKwl1bnNpZ25l ZCBpbnQgYnJpY2tGaWxlV2lkdGg7Ci0rCXVuc2lnbmVkIGludCBicmlja0ZpbGVIZWlnaHQ7Ci0g CWludCBzaGFkb3dPZmZzZXQ7Ci0gCXN0cmluZyBmb250U21hbGxOYW1lOwotLQl1aW50IGZvbnRT bWFsbFNpemU7Ci0rCXVuc2lnbmVkIGludCBmb250U21hbGxTaXplOwotIAlzdHJpbmcgZm9udE5v cm1hbE5hbWU7Ci0tCXVpbnQgZm9udE5vcm1hbFNpemU7Ci0rCXVuc2lnbmVkIGludCBmb250Tm9y bWFsU2l6ZTsKLSAJU0RMX0NvbG9yIGZvbnRDb2xvck5vcm1hbDsKLSAJU0RMX0NvbG9yIGZvbnRD b2xvckhpZ2hsaWdodDsKLS0JdWludCBzaG90RnJhbWVOdW07Ci0tCXVpbnQgc2hvdEFuaW1EZWxh eTsKLS0JdWludCB3ZWFwb25GcmFtZU51bTsKLS0JdWludCB3ZWFwb25BbmltRGVsYXk7Ci0tCXVp bnQgZXhwbEZyYW1lTnVtOwotLQl1aW50IGV4cGxBbmltRGVsYXk7Ci0tCXVpbnQgc2hpbmVGcmFt ZU51bTsKLS0JdWludCBzaGluZUFuaW1EZWxheTsKLS0JdWludCBtZW51WCwgbWVudVksIG1lbnVJ dGVtV2lkdGgsIG1lbnVJdGVtSGVpZ2h0OwotKwl1bnNpZ25lZCBpbnQgc2hvdEZyYW1lTnVtOwot Kwl1bnNpZ25lZCBpbnQgc2hvdEFuaW1EZWxheTsKLSsJdW5zaWduZWQgaW50IHdlYXBvbkZyYW1l TnVtOwotKwl1bnNpZ25lZCBpbnQgd2VhcG9uQW5pbURlbGF5OwotKwl1bnNpZ25lZCBpbnQgZXhw bEZyYW1lTnVtOwotKwl1bnNpZ25lZCBpbnQgZXhwbEFuaW1EZWxheTsKLSsJdW5zaWduZWQgaW50 IHNoaW5lRnJhbWVOdW07Ci0rCXVuc2lnbmVkIGludCBzaGluZUFuaW1EZWxheTsKLSsJdW5zaWdu ZWQgaW50IG1lbnVYLCBtZW51WSwgbWVudUl0ZW1XaWR0aCwgbWVudUl0ZW1IZWlnaHQ7Ci0gCXN0 cmluZyBtZW51Rm9udE5vcm1hbE5hbWUsIG1lbnVGb250Rm9jdXNOYW1lOwotLQl1aW50IG1lbnVG b250Tm9ybWFsU2l6ZSwgbWVudUZvbnRGb2N1c1NpemU7Ci0rCXVuc2lnbmVkIGludCBtZW51Rm9u dE5vcm1hbFNpemUsIG1lbnVGb250Rm9jdXNTaXplOwotIAlTRExfQ29sb3IgbWVudUZvbnRDb2xv ck5vcm1hbCwgbWVudUZvbnRDb2xvckZvY3VzOwotIAotIAlJbWFnZSBtZW51QmFja2dyb3VuZDsK LSAJSW1hZ2Ugd2FsbHBhcGVyc1tNQVhXQUxMUEFQRVJTXTsKLS0JdWludCBudW1XYWxscGFwZXJz OwotKwl1bnNpZ25lZCBpbnQgbnVtV2FsbHBhcGVyczsKLSAJSW1hZ2UgZnJhbWUsIGZyYW1lU2hh ZG93OwotIAlHcmlkSW1hZ2UgYnJpY2tzLCBicmlja3NTaGFkb3c7Ci0gCUdyaWRJbWFnZSBwYWRk bGVzLCBwYWRkbGVzU2hhZG93OwotQEAgLTEwNiw4ICsxMDYsOCBAQCBwdWJsaWM6Ci0gCQl7Ci0g CQlzdGRQYXRoID0gc3RyaW5nKERBVEFESVIpICsgIi90aGVtZXMvU3RhbmRhcmQiOwotIAl9Ci0t CXZvaWQgbG9hZChzdHJpbmcgbmFtZSwgdWludCBzY3JlZW5XaWR0aCwgdWludCBzY3JlZW5IZWln aHQsCi0tCQkJCXVpbnQgYnJpY2tTY3JlZW5XaWR0aCwgdWludCBicmlja1NjcmVlbkhlaWdodCwK LSsJdm9pZCBsb2FkKHN0cmluZyBuYW1lLCB1bnNpZ25lZCBpbnQgc2NyZWVuV2lkdGgsIHVuc2ln bmVkIGludCBzY3JlZW5IZWlnaHQsCi0rCQkJCXVuc2lnbmVkIGludCBicmlja1NjcmVlbldpZHRo LCB1bnNpZ25lZCBpbnQgYnJpY2tTY3JlZW5IZWlnaHQsCi0gCQkJCWludCBhbnRpYWxpYXNpbmcp OwotIH07Ci0gCi0tLS0gYS9zcmMvdG9vbHMuY3BwCTIwMTgtMTEtMDQgMTI6MDQ6MTcuMDAwMDAw MDAwICswMTAwCi0rKysgYi9zcmMvdG9vbHMuY3BwCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjMzNTUx ODg2ICswMjAwCi1AQCAtOTQsNyArOTQsNyBAQCBpbnQgRmlsZVBhcnNlcjo6Z2V0KGNvbnN0IHN0 cmluZyYgaywgaW50Ci0gCQl2ID0gc3RvaShzdHIpOwotIAlyZXR1cm4gcmV0OwotIH0KLS1pbnQg RmlsZVBhcnNlcjo6Z2V0KGNvbnN0IHN0cmluZyYgaywgdWludCAmdikKLStpbnQgRmlsZVBhcnNl cjo6Z2V0KGNvbnN0IHN0cmluZyYgaywgdW5zaWduZWQgaW50ICZ2KQotIHsKLSAJc3RyaW5nIHN0 cjsKLSAJaW50IHJldCA9IGdldChrLHN0cik7Ci0tLS0gYS9zcmMvdG9vbHMuaAkyMDE4LTEwLTMx IDEyOjIzOjIyLjAwMDAwMDAwMCArMDEwMAotKysrIGIvc3JjL3Rvb2xzLmgJMjAxOS0wNi0xMCAx MTowNDoyNS4yMjk1NTE4MzggKzAyMDAKLUBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKLSAJRmls ZVBhcnNlcihjb25zdCBzdHJpbmcmICBmbmFtZSk7Ci0gCWludCBnZXQoY29uc3Qgc3RyaW5nJiAg aywgc3RyaW5nICZ2KTsKLSAJaW50IGdldChjb25zdCBzdHJpbmcmICBrLCBpbnQgJnYpOwotLQlp bnQgZ2V0KGNvbnN0IHN0cmluZyYgIGssIHVpbnQgJnYpOwotKwlpbnQgZ2V0KGNvbnN0IHN0cmlu ZyYgIGssIHVuc2lnbmVkIGludCAmdik7Ci0gCWludCBnZXQoY29uc3Qgc3RyaW5nJiAgaywgdWlu dDhfdCAmdik7Ci0gCWludCBnZXQoY29uc3Qgc3RyaW5nJiAgaywgZG91YmxlICZ2KTsKLSB9Owot QEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJsaWM6Ci0gCi0gY2xhc3MgRnJhbWVDb3VudGVyIDogcHVi bGljIFNtb290aENvdW50ZXIgewotIHB1YmxpYzoKLS0Jdm9pZCBpbml0KHVpbnQgbWF4LCB1aW50 IGRlbGF5KSB7Ci0rCXZvaWQgaW5pdCh1bnNpZ25lZCBpbnQgbWF4LCB1bnNpZ25lZCBpbnQgZGVs YXkpIHsKLSAJCVNtb290aENvdW50ZXI6OmluaXQoU0NUX1JFUEVBVCwgMCwgLTAuMDEgKyBtYXgs IGRlbGF5KTsKLSAJfQotIAlpbnQgZ2V0KCkgeyByZXR1cm4gU21vb3RoQ291bnRlcjo6Z2V0KCk7 IH0KLS0tLSBhL3NyYy92aWV3LmNwcAkyMDE5LTAzLTA4IDE5OjEzOjMxLjAwMDAwMDAwMCArMDEw MAotKysrIGIvc3JjL3ZpZXcuY3BwCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjM0NTUxODk4ICswMjAw Ci1AQCAtNzQsNyArNzQsNyBAQCBWaWV3OjpWaWV3KENvbmZpZyAmY2ZnLCBDbGllbnRHYW1lICZf Y2cpCi0gCi0gLyoqIChSZSlJbml0aWFsaXplIHdpbmRvdywgdGhlbWUgYW5kIG1lbnUuCi0gICog dCBpcyB0aGVtZSBuYW1lLCByPTAgbWVhbnMgZnVsbHNjcmVlbiwgb3RoZXJ3aXNlIHZlcnRpY2Fs IHJlc29sdXRpb24uICovCi0tdm9pZCBWaWV3Ojppbml0KHN0cmluZyB0LCB1aW50IHIpCi0rdm9p ZCBWaWV3Ojppbml0KHN0cmluZyB0LCB1bnNpZ25lZCBpbnQgcikKLSB7Ci0gCV9sb2dpbmZvKCJJ bml0aWFsaXppbmcgVmlldyAoVGhlbWU9JXMsIFJlc29sdXRpb249JWQpXG4iLHQuY19zdHIoKSxy KTsKLSAKLUBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBWaWV3OjpyZW5kZXJCYWNrZ3JvdW5kSW1h Z2UoKSB7Ci0gCi0gCS8qIGxpdmVzICovCi0gCUNsaWVudFBsYXllciAqY3AgPSBjZ2FtZS5nZXRD dXJyZW50UGxheWVyKCk7Ci0tCWZvciAodWludCBpID0gMDsgaSA8IGNwLT5nZXRNYXhMaXZlcygp OyBpKyspCi0rCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY3AtPmdldE1heExpdmVzKCk7 IGkrKykKLSAJCXRoZW1lLmxpZmUuY29weSgwLCBpIDwgY3AtPmdldExpdmVzKCksIDAsIChNQVBI RUlHSFQtaS0xKSpiaCk7Ci0gCi0gCVNETF9TZXRSZW5kZXJUYXJnZXQobXJjLE5VTEwpOwotQEAg LTczOSwxMiArNzM5LDEyIEBAIHZvaWQgVmlldzo6cmVuZGVyU2NvcmVJbWFnZSgpCi0gdm9pZCBW aWV3OjpyZW5kZXJFeHRyYXNJbWFnZSgpCi0gewotIAlHYW1lICpnYW1lID0gY2dhbWUuZ2V0R2Ft ZUNvbnRleHQoKTsKLS0JdWludCBidyA9IGJyaWNrU2NyZWVuV2lkdGgsIGJoID0gYnJpY2tTY3Jl ZW5IZWlnaHQ7Ci0tCXVpbnQgeHN0YXJ0ID0gKGltZ0V4dHJhcy5nZXRXaWR0aCgpIC0gMypidykg LyA0OwotLQl1aW50IHlzdGFydCA9IChpbWdFeHRyYXMuZ2V0SGVpZ2h0KCkgLSAzKmJoKSAvIDQ7 Ci0tCXVpbnQgeG9mZiA9IGJ3ICsgeHN0YXJ0OwotLQl1aW50IHlvZmYgPSBiaCArIHlzdGFydDsK LS0JdWludCB4ID0geHN0YXJ0LCB5ID0geXN0YXJ0OwotKwl1bnNpZ25lZCBpbnQgYncgPSBicmlj a1NjcmVlbldpZHRoLCBiaCA9IGJyaWNrU2NyZWVuSGVpZ2h0OwotKwl1bnNpZ25lZCBpbnQgeHN0 YXJ0ID0gKGltZ0V4dHJhcy5nZXRXaWR0aCgpIC0gMypidykgLyA0OwotKwl1bnNpZ25lZCBpbnQg eXN0YXJ0ID0gKGltZ0V4dHJhcy5nZXRIZWlnaHQoKSAtIDMqYmgpIC8gNDsKLSsJdW5zaWduZWQg aW50IHhvZmYgPSBidyArIHhzdGFydDsKLSsJdW5zaWduZWQgaW50IHlvZmYgPSBiaCArIHlzdGFy dDsKLSsJdW5zaWduZWQgaW50IHggPSB4c3RhcnQsIHkgPSB5c3RhcnQ7Ci0gCi0gCVNETF9TZXRS ZW5kZXJUYXJnZXQobXJjLCBpbWdFeHRyYXMuZ2V0VGV4KCkpOwotIAlTRExfU2V0UmVuZGVyRHJh d0NvbG9yKG1yYywwLDAsMCwwKTsKLUBAIC04NDYsMTQgKzg0NiwxNCBAQCBib29sIFZpZXc6OnNo b3dJbmZvKGNvbnN0IHZlY3RvcjxzdHJpbmc+Ci0gewotIAlGb250ICZmb250ID0gdGhlbWUuZlNt YWxsOwotIAlib29sIHJldCA9IHRydWU7Ci0tCXVpbnQgaCA9IHRleHQuc2l6ZSgpICogZm9udC5n ZXRMaW5lSGVpZ2h0KCk7Ci0rCXVuc2lnbmVkIGludCBoID0gdGV4dC5zaXplKCkgKiBmb250Lmdl dExpbmVIZWlnaHQoKTsKLSAJaW50IHR4ID0gbXctPmdldFdpZHRoKCkvMjsKLSAJaW50IHR5ID0g KG13LT5nZXRIZWlnaHQoKSAtIGgpLzI7Ci0gCi0gCWRhcmtlblNjcmVlbigpOwotIAotIAlmb250 LnNldEFsaWduKEFMSUdOX1hfQ0VOVEVSIHwgQUxJR05fWV9UT1ApOwotLQlmb3IgKHVpbnQgaSA9 IDA7IGkgPCB0ZXh0LnNpemUoKTsgaSsrKSB7Ci0rCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp IDwgdGV4dC5zaXplKCk7IGkrKykgewotIAkJZm9udC53cml0ZSh0eCx0eSx0ZXh0W2ldKTsKLSAJ CXR5ICs9IGZvbnQuZ2V0TGluZUhlaWdodCgpOwotIAl9Ci1AQCAtOTY0LDEyICs5NjQsMTIgQEAg dm9pZCBWaWV3OjpjcmVhdGVTcHJpdGVzKCkKLSAJfQotIH0KLSAKLS12b2lkIFZpZXc6OmdldEJh bGxWaWV3SW5mbyhCYWxsICpiYWxsLCBpbnQgKngsIGludCAqeSwgdWludCAqdHlwZSkKLSt2b2lk IFZpZXc6OmdldEJhbGxWaWV3SW5mbyhCYWxsICpiYWxsLCBpbnQgKngsIGludCAqeSwgdW5zaWdu ZWQgaW50ICp0eXBlKQotIHsKLSAJR2FtZSAqZ2FtZSA9IGNnYW1lLmdldEdhbWVDb250ZXh0KCk7 IC8qIGRpcmVjdCBsaWIgZ2FtZSBjb250ZXh0ICovCi0gCVBhZGRsZSAqcGFkZGxlID0gZ2FtZS0+ cGFkZGxlc1swXTsgLyogbG9jYWwgcGFkZGxlIGFsd2F5cyBhdCBib3R0b20gKi8KLSAKLS0JdWlu dCBidCA9IDA7Ci0rCXVuc2lnbmVkIGludCBidCA9IDA7Ci0gCWRvdWJsZSBweCA9IGJhbGwtPmN1 ci54OwotIAlkb3VibGUgcHkgPSBiYWxsLT5jdXIueTsKLSAJaWYgKGJhbGwtPmF0dGFjaGVkKSB7 Ci1AQCAtMTM5NSw3ICsxMzk1LDcgQEAgdm9pZCBWaWV3OjpzYXZlR2FtZSgpCi0gCW9mcyA8PCAi ZGlmZmljdWx0eT0iIDw8IGNvbmZpZy5kaWZmIDw8ICJcbiI7Ci0gCW9mcyA8PCAiY3VycGxheWVy PSIgPDwgY2dhbWUuZ2V0Q3VycmVudFBsYXllcklkKCkgPDwgIlxuIjsKLSAJb2ZzIDw8ICJwbGF5 ZXJzPSIgPDwgcGxheWVycy5zaXplKCkgPDwgIlxuIjsKLS0JZm9yICh1aW50IGkgPSAwOyBpIDwg cGxheWVycy5zaXplKCk7IGkrKykgewotKwlmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBs YXllcnMuc2l6ZSgpOyBpKyspIHsKLSAJCW9mcyA8PCAicGxheWVyIiA8PCBpIDw8ICIge1xuIjsK LSAJCW9mcyA8PCAiCW5hbWU9IiA8PCBwbGF5ZXJzW2ldLT5nZXROYW1lKCkgPDwgIlxuIjsKLSAJ CW9mcyA8PCAiCWxldmVsPSIgPDwgcGxheWVyc1tpXS0+Z2V0TGV2ZWwoKSA8PCAiXG4iOwotQEAg LTE0MzIsMTggKzE0MzIsMTggQEAgaW50IFZpZXc6OnJlc3VtZUdhbWUoKQotIAkJZnAuZ2V0KHN0 cmluZygicGxheWVyIikgKyB0b19zdHJpbmcoaSkgKyAiLm5hbWUiLGNvbmZpZy5wbGF5ZXJfbmFt ZXNbaV0pOwotIAotIAkvKiBpbml0aWFsaXplIGdhbWUgdG8gbGV2ZWwgb2YgY3VycmVudCBwbGF5 ZXIgKi8KLS0JdWludCBwaWQgPSAwOwotKwl1bnNpZ25lZCBpbnQgcGlkID0gMDsKLSAJZnAuZ2V0 KCJjdXJwbGF5ZXIiLHBpZCk7Ci0gCWlmIChwaWQgPj0gTUFYX1BMQVlFUlMpCi0gCQlwaWQgPSAw OwotLQl1aW50IGxldmlkID0gMDsKLSsJdW5zaWduZWQgaW50IGxldmlkID0gMDsKLSAJZnAuZ2V0 KHN0cmluZygicGxheWVyIikgKyB0b19zdHJpbmcocGlkKSArICIubGV2ZWwiLGxldmlkKTsKLSAJ Y2dhbWUuaW5pdChzZXRuYW1lLGxldmlkKTsKLSAKLSAJLyogYWRqdXN0IHBsYXllcnMgKi8KLSAJ Zm9yIChpbnQgaSA9IDA7IGkgPCBjb25maWcucGxheWVyX2NvdW50OyBpKyspIHsKLSAJCXN0cmlu ZyBwcmVmaXggPSBzdHJpbmcoInBsYXllciIpICsgdG9fc3RyaW5nKGkpICsgIi4iOwotLQkJdWlu dCBsZXZlbCA9IDAsIGxpdmVzID0gMzsKLSsJCXVuc2lnbmVkIGludCBsZXZlbCA9IDAsIGxpdmVz ID0gMzsKLSAJCWludCBzY29yZSA9IDA7Ci0gCQlmcC5nZXQocHJlZml4ICsgInNjb3JlIixzY29y ZSk7Ci0gCQlmcC5nZXQocHJlZml4ICsgImxldmVsIixsZXZlbCk7Ci1AQCAtMTUyOSw4ICsxNTI5 LDggQEAgdm9pZCBWaWV3OjpyZW5kZXJCYWxscyhib29sIHNoYWRvdykKLSAJQmFsbCAqYmFsbDsK LSAJbGlzdF9yZXNldChnYW1lLT5iYWxscyk7Ci0gCXdoaWxlICggKCBiYWxsID0gKEJhbGwqKWxp c3RfbmV4dCggZ2FtZS0+YmFsbHMgKSApICE9IDAgKSB7Ci0tCQl1aW50IHR5cGU7Ci0tCQl1aW50 IGFscGhhID0gMjU1OwotKwkJdW5zaWduZWQgaW50IHR5cGU7Ci0rCQl1bnNpZ25lZCBpbnQgYWxw aGEgPSAyNTU7Ci0gCQlpbnQgcHgsIHB5OwotIAkJZ2V0QmFsbFZpZXdJbmZvKGJhbGwsICZweCwg JnB5LCAmdHlwZSk7Ci0gCQlpZiAodHlwZSA9PSAxKSAvKiBlbmVyZ3kgYmFsbCAqLwotQEAgLTE1 NjEsNyArMTU2MSw3IEBAIHZvaWQgVmlldzo6dXBkYXRlUmVzdW1lR2FtZVRvb2x0aXAoKQotIAkv KiBYWFggbXVsdGlwbGUgbG9jYXRpb25zLi4uICovCi0gCWNvbnN0IGNoYXIgKmRpZmZOYW1lc1td ID0ge18oIktpZHMiKSxfKCJFYXN5IiksXygiTWVkaXVtIiksXygiSGFyZCIpIH0gOwotIAlzdHJp bmcgdGV4dCwgc3RyOwotLQl1aW50IGRpZmYsIHBudW07Ci0rCXVuc2lnbmVkIGludCBkaWZmLCBw bnVtOwotIAlGaWxlUGFyc2VyIGZwKHNhdmVGaWxlTmFtZSk7Ci0gCWZwLmdldCgibGV2ZWxzZXQi LHRleHQpOwotIAlmcC5nZXQoImRpZmZpY3VsdHkiLGRpZmYpOwotQEAgLTE1NzMsMTAgKzE1NzMs MTAgQEAgdm9pZCBWaWV3Ojp1cGRhdGVSZXN1bWVHYW1lVG9vbHRpcCgpCi0gCXRleHQgKz0gdG9f c3RyaW5nKHBudW0pOwotIAl0ZXh0ICs9IF8oIiBwbGF5ZXIocylcbiIpOwotIAotLQlmb3IgKHVp bnQgaSA9IDA7IGkgPCBwbnVtOyBpKyspIHsKLSsJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg PCBwbnVtOyBpKyspIHsKLSAJCXN0cmluZyBwcmVmaXggPSBzdHJpbmcoInBsYXllciIpICsgdG9f c3RyaW5nKGkpICsgIi4iOwotIAkJc3RyaW5nIG5hbWU7Ci0tCQl1aW50IGxldmVsID0gMCwgbGl2 ZXMgPSAzOwotKwkJdW5zaWduZWQgaW50IGxldmVsID0gMCwgbGl2ZXMgPSAzOwotIAkJaW50IHNj b3JlID0gMDsKLSAJCWZwLmdldChwcmVmaXggKyAibmFtZSIsbmFtZSk7Ci0gCQlmcC5nZXQocHJl Zml4ICsgInNjb3JlIixzY29yZSk7Ci1AQCAtMTU5MSw3ICsxNTkxLDcgQEAgdm9pZCBWaWV3Ojp1 cGRhdGVSZXN1bWVHYW1lVG9vbHRpcCgpCi0gCXJlc3VtZU1lbnVJdGVtLT5zZXRUb29sdGlwKHRl eHQpOwotIH0KLSAKLS12b2lkIFZpZXc6OnJlbmRlckV4dHJhSGVscChHcmlkSW1hZ2UgJmltZywg dWludCBneCwgdWludCBneSwgY29uc3Qgc3RyaW5nICZzdHIsIGludCB4LCBpbnQgeSkKLSt2b2lk IFZpZXc6OnJlbmRlckV4dHJhSGVscChHcmlkSW1hZ2UgJmltZywgdW5zaWduZWQgaW50IGd4LCB1 bnNpZ25lZCBpbnQgZ3ksIGNvbnN0IHN0cmluZyAmc3RyLCBpbnQgeCwgaW50IHkpCi0gewotIAlp bWcuY29weShneCxneSx4LHkpOwotIAl0aGVtZS5mU21hbGwuc2V0QWxpZ24oQUxJR05fWF9MRUZU IHwgQUxJR05fWV9DRU5URVIpOwotQEAgLTE2MjEsNyArMTYyMSw3IEBAIHZvaWQgVmlldzo6c2hv d0hlbHAoKQotIAkJOwotIAotIAlpbnQgeCA9IGJyaWNrU2NyZWVuV2lkdGgsIHkgPSBicmlja1Nj cmVlbkhlaWdodDsKLS0JdWludCBtYXh3ID0gYnJpY2tTY3JlZW5XaWR0aCAqIDEwOwotKwl1bnNp Z25lZCBpbnQgbWF4dyA9IGJyaWNrU2NyZWVuV2lkdGggKiAxMDsKLSAKLSAJZGFya2VuU2NyZWVu KCk7Ci0gCi0tLS0gYS9zcmMvdmlldy5oCTIwMTktMDMtMDcgMTU6NDQ6MzYuMDAwMDAwMDAwICsw MTAwCi0rKysgYi9zcmMvdmlldy5oCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjI5NTUxODM4ICswMjAw Ci1AQCAtMTA1LDcgKzEwNSw3IEBAIGNsYXNzIFZpZXcgewotIAl2b2lkIHNob3dIZWxwKCk7Ci0g CXZvaWQgY3JlYXRlUGFydGljbGVzKEJyaWNrSGl0ICpoaXQpOwotIAl2b2lkIGNyZWF0ZVNwcml0 ZXMoKTsKLS0Jdm9pZCBnZXRCYWxsVmlld0luZm8oQmFsbCAqYmFsbCwgaW50ICp4LCBpbnQgKnks IHVpbnQgKnR5cGUpOwotKwl2b2lkIGdldEJhbGxWaWV3SW5mbyhCYWxsICpiYWxsLCBpbnQgKngs IGludCAqeSwgdW5zaWduZWQgaW50ICp0eXBlKTsKLSAJdm9pZCBwbGF5U291bmRzKCk7Ci0gCXZv aWQgY3JlYXRlTWVudXMoKTsKLSAJdm9pZCBncmFiSW5wdXQoaW50IGdyYWIpOwotQEAgLTExNiwx NCArMTE2LDE0IEBAIGNsYXNzIFZpZXcgewotIAl2b2lkIGRhcmtlblNjcmVlbihpbnQgYWxwaGEg PSAzMik7Ci0gCXZvaWQgaW5pdFRpdGxlTGFiZWwoKTsKLSAJdm9pZCB1cGRhdGVSZXN1bWVHYW1l VG9vbHRpcCgpOwotLQl2b2lkIHJlbmRlckV4dHJhSGVscChHcmlkSW1hZ2UgJmltZywgdWludCBn eCwgdWludCBneSwgY29uc3Qgc3RyaW5nICZzdHIsIGludCB4LCBpbnQgeSk7Ci0rCXZvaWQgcmVu ZGVyRXh0cmFIZWxwKEdyaWRJbWFnZSAmaW1nLCB1bnNpZ25lZCBpbnQgZ3gsIHVuc2lnbmVkIGlu dCBneSwgY29uc3Qgc3RyaW5nICZzdHIsIGludCB4LCBpbnQgeSk7Ci0gCXZvaWQgcnVuQnJpY2tE ZXN0cm95RGxnKCk7Ci0gCXZvaWQgd2FpdEZvcklucHV0UmVsZWFzZSgpOwotIAl2b2lkIGdldE5l d1NoaW5lUG9zaXRpb24oKTsKLSBwdWJsaWM6Ci0gCVZpZXcoQ29uZmlnICZjZmcsIENsaWVudEdh bWUgJl9jZyk7Ci0gCX5WaWV3KCk7Ci0tCXZvaWQgaW5pdChzdHJpbmcgdCwgdWludCByKTsKLSsJ dm9pZCBpbml0KHN0cmluZyB0LCB1bnNpZ25lZCBpbnQgcik7Ci0gCXZvaWQgcnVuKCk7Ci0gCXZv aWQgcmVuZGVyKCk7Ci0gCXZvaWQgcnVuTWVudSgpOwotLS0tIGEvc3JjL2NsaWVudGdhbWUuY3Bw CTIwMTktMDYtMTAgMTE6MDg6NTUuNTE1NzU2NDg1ICswMjAwCi0rKysgYi9zcmMvY2xpZW50Z2Ft ZS5jcHAJMjAxOS0wNi0xMCAxMTowOToxNy45NjQwMjEzNTUgKzAyMDAKLUBAIC05NSw3ICs5NSw3 IEBAIENsaWVudFBsYXllciAqQ2xpZW50R2FtZTo6Z2V0TmV4dFBsYXllcigKLSAJCWlmIChjdXJQ bGF5ZXIgPT0gcGxheWVycy5zaXplKCkpCi0gCQkJY3VyUGxheWVyID0gMDsKLSAJCXAgPSBwbGF5 ZXJzW2N1clBsYXllcl0uZ2V0KCk7Ci0tCQlpZiAocC0+Z2V0TGl2ZXMoKSA+IDAgJiYgcC0+Z2V0 TGV2ZWwoKSA8ICh1aW50KWxldmVsc2V0LT5jb3VudCkKLSsJCWlmIChwLT5nZXRMaXZlcygpID4g MCAmJiBwLT5nZXRMZXZlbCgpIDwgKHVuc2lnbmVkIGludClsZXZlbHNldC0+Y291bnQpCi0gCQkJ cmV0dXJuIHA7Ci0gCX0gd2hpbGUgKGN1clBsYXllciAhPSBzdGFydElkKTsKLSAJcmV0dXJuIE5V TEw7Ci1AQCAtMTkyLDcgKzE5Miw3IEBAIGludCBDbGllbnRHYW1lOjp1cGRhdGUodW5zaWduZWQg aW50IG1zLAotIAkJQ2xpZW50UGxheWVyICpwID0gcGxheWVyc1tjdXJQbGF5ZXJdLmdldCgpOwot IAkJLyogYm9udXMgbGV2ZWxzIGFyZSBqdXN0IHNraXBwZWQgb24gZmFpbHVyZSAqLwotIAkJaWYg KGdhbWUtPndpbm5lciA9PSBQQURETEVfQk9UVE9NIHx8IGdhbWUtPmxldmVsX3R5cGUgIT0gTFRf Tk9STUFMKSB7Ci0tCQkJaWYgKHAtPm5leHRMZXZlbCgpIDwgKHVpbnQpbGV2ZWxzZXQtPmNvdW50 KQotKwkJCWlmIChwLT5uZXh0TGV2ZWwoKSA8ICh1bnNpZ25lZCBpbnQpbGV2ZWxzZXQtPmNvdW50 KQotIAkJCQlwLT5zZXRMZXZlbFNuYXBzaG90KGxldmVsc2V0LT5sZXZlbHNbcC0+Z2V0TGV2ZWwo KV0pOwotIAkJCWVsc2UgewotIAkJCQlzdHJwcmludGYobXNnLF8oIkNvbmdyYXR1bGF0aW9ucywg JXMsIHlvdSBjbGVhcmVkIGFsbCBsZXZlbHMhIikscC0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotLS0t IGEvc3JjL2NsaWVudGdhbWUuaAkyMDE5LTA2LTEwIDExOjEwOjMwLjUwMDg3NzIzMSArMDIwMAot KysrIGIvc3JjL2NsaWVudGdhbWUuaAkyMDE5LTA2LTEwIDExOjEwOjQxLjk3MjAxMjU4MSArMDIw MAotQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6Ci0gCXZvaWQgZ2V0Q3VycmVudExldmVsTmFt ZUFuZEF1dGhvcihzdHJpbmcgJm5hbWUsIHN0cmluZyAmYXV0aG9yKSB7Ci0gCQlDbGllbnRQbGF5 ZXIgKnAgPSBwbGF5ZXJzW2N1clBsYXllcl0uZ2V0KCk7Ci0gCQl1bnNpZ25lZCBpbnQgbGlkID0g cC0+Z2V0TGV2ZWwoKTsKLS0JCWlmIChsaWQgPj0gKHVpbnQpbGV2ZWxzZXQtPmNvdW50KSB7Ci0r CQlpZiAobGlkID49ICh1bnNpZ25lZCBpbnQpbGV2ZWxzZXQtPmNvdW50KSB7Ci0gCQkJbmFtZSA9 ICJub25lIjsKLSAJCQlhdXRob3IgPSAibm9uZSI7IC8qIGlzIGRvbmUsIHNob3VsZCBub3QgaGFw cGVuICovCi0gCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sYnJlYWtvdXRoZC9wYXRj aGVzL3VpbnQucGF0Y2ggYi9zcmNwa2dzL2xicmVha291dGhkL3BhdGNoZXMvdWludC5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mYTViNzE2MGM1NWJmCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sYnJlYWtvdXRoZC9wYXRjaGVzL3VpbnQucGF0Y2gK QEAgLTAsMCArMSwxOCBAQAorZGlmZiAtLWdpdCBhL3NyYy90b29scy5oIGIvc3JjL3Rvb2xzLmgK K2luZGV4IGE3N2JkNTIuLjJhNjhhOTIgMTAwNjQ0CistLS0gYS9zcmMvdG9vbHMuaAorKysrIGIv c3JjL3Rvb2xzLmgKK0BAIC0yMSwxMCArMjEsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKKyAj aW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPG1hdGguaD4KKyAjaW5jbHVkZSA8ZGlyZW50 Lmg+CistI2lmZGVmIFdJTjMyCistICAjaW5jbHVkZSA8c3RkaW50Lmg+CisrLy8jaWZkZWYgV0lO MzIKKysgICNpbmNsdWRlIDxjc3RkaW50PgorICAgdHlwZWRlZiB1aW50MzJfdCB1aW50OworLSNl bmRpZgorKy8vI2VuZGlmCisgI2luY2x1ZGUgPGxpc3Q+CisgI2luY2x1ZGUgPHN0cmluZz4KKyAj aW5jbHVkZSA8dmVjdG9yPgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sYnJlYWtvdXRoZC90ZW1wbGF0 ZSBiL3NyY3BrZ3MvbGJyZWFrb3V0aGQvdGVtcGxhdGUKaW5kZXggY2I5MDYyZTRmNjMxNi4uZTk2 ZWY0NmQzYjIwOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9sYnJlYWtvdXRoZC90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2xicmVha291dGhkL3RlbXBsYXRlCkBAIC0xLDE0ICsxLDE1IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdsYnJlYWtvdXRoZCcKIHBrZ25hbWU9bGJyZWFrb3V0aGQKLXZlcnNpb249 MS4wLjYKK3ZlcnNpb249MS4xLjYKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1 cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWxvY2Fsc3RhdGVkaXI9L3Zhci8ke3BrZ25hbWV9IgogbWFr ZWRlcGVuZHM9IlNETDItZGV2ZWwgU0RMMl9taXhlci1kZXZlbCBTREwyX2ltYWdlLWRldmVsIFNE TDJfdHRmLWRldmVsIgorZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNvbi10 aGVtZSIKIHNob3J0X2Rlc2M9IlNjYWxhYmxlIDE2OjkgcmVtYWtlIG9mIExCcmVha291dDIiCi1t YWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgorbWFpbnRhaW5lcj0i TWloYWlsIEl2YW5jaGV2IDxjb250YWN0QGl2YW5jaGV2Lm5ldD4iCiBsaWNlbnNlPSJHUEwtMi4w LW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly9sZ2FtZXMuc291cmNlZm9yZ2UubmV0L0xCcmVh a291dEhELyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRFfS9sZ2FtZXMvJHBrZ25hbWUt JHZlcnNpb24udGFyLmd6IgotY2hlY2tzdW09ZGY1ZjhhZDg4YmNmMjBiZDM0ZTFkZmQ3NzY5N2I0 OWExNjhkODNhZDQzZDhmZGY1YTNmZWUxZmUyNzJlMTViZAorY2hlY2tzdW09MWE4YWY2MmU3MzNj YmUyZWFjOTA5NmYzN2QxZTc0ZGI3Mjc1ZGM2YzZmYTljYTQ4YWVlNmJkNGJlOWQzZmQyZAogbm9j aGVja3Blcm1zPXllcyAjIHVzZXMgYSB3b3JsZC13cml0YWJsZSAuaHNjciBmaWxlIGZvciBnbG9i YWwgbGVhZGVyYm9hcmQK --===============4163280713767611094==--