From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Andr=C3=A9=20Goddard=20Rosa?= Subject: [PATCH v4 03/12] vsprintf: give it some care to please checkpatch.pl Date: Sat, 7 Nov 2009 13:16:11 -0200 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-px0-f187.google.com (mail-px0-f187.google.com [209.85.216.187]) by alsa0.perex.cz (Postfix) with ESMTP id CF269244CA for ; Sun, 8 Nov 2009 16:19:45 +0100 (CET) Received: by pxi17 with SMTP id 17so551069pxi.16 for ; Sun, 08 Nov 2009 07:19:44 -0800 (PST) In-Reply-To: In-Reply-To: References: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: Martin Schwidefsky , Heiko Carstens , linux390@de.ibm.com, Michael Holzheu , Andrew Morton Cc: =?UTF-8?q?Andr=C3=A9=20Goddard=20Rosa?= List-Id: alsa-devel@alsa-project.org TW9zdCByZWxldmFudCBjb21wbGFpbnRzIHdlcmUgYWRkcmVzc2VkLgoKU2lnbmVkLW9mZi1ieTog QW5kcsOpIEdvZGRhcmQgUm9zYSA8YW5kcmUuZ29kZGFyZEBnbWFpbC5jb20+CkFja2VkLWJ5OiBG cmVkZXJpYyBXZWlzYmVja2VyIDxmd2Vpc2JlY0BnbWFpbC5jb20+Ci0tLQogbGliL3ZzcHJpbnRm LmMgfCAgMTg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAxIGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDg3IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2xpYi92c3ByaW50Zi5jIGIvbGliL3ZzcHJpbnRmLmMKaW5kZXgg NDAzZTgzNS4uMDAxNTNjNSAxMDA2NDQKLS0tIGEvbGliL3ZzcHJpbnRmLmMKKysrIGIvbGliL3Zz cHJpbnRmLmMKQEAgLTksNyArOSw3IEBACiAgKiBXaXJ6ZW5pdXMgd3JvdGUgdGhpcyBwb3J0YWJs eSwgVG9ydmFsZHMgZnVja2VkIGl0IHVwIDotKQogICovCiAKLS8qIAorLyoKICAqIEZyaSBKdWwg MTMgMjAwMSBDcnV0Y2hlciBEdW5uYXZhbnQgPGNydXRjaGVyK2tlcm5lbEBkYXRhc3RhY2tzLmNv bT4KICAqIC0gY2hhbmdlZCB0byBwcm92aWRlIHNucHJpbnRmIGFuZCB2c25wcmludGYgZnVuY3Rp b25zCiAgKiBTbyBGZWIgIDEgMTY6NTE6MzIgQ0VUIDIwMDQgSnVlcmdlbiBRdWFkZSA8cXVhZGVA aHNuci5kZT4KQEAgLTczLDkgKzczLDkgQEAgdW5zaWduZWQgbG9uZyBzaW1wbGVfc3RydG91bChj b25zdCBjaGFyICpjcCwgY2hhciAqKmVuZHAsIHVuc2lnbmVkIGludCBiYXNlKQogCQlyZXN1bHQg PSByZXN1bHQgKiBiYXNlICsgdmFsdWU7CiAJCWNwKys7CiAJfQotCiAJaWYgKGVuZHApCiAJCSpl bmRwID0gKGNoYXIgKiljcDsKKwogCXJldHVybiByZXN1bHQ7CiB9CiBFWFBPUlRfU1lNQk9MKHNp bXBsZV9zdHJ0b3VsKTsKQEAgLTg4LDggKzg4LDkgQEAgRVhQT1JUX1NZTUJPTChzaW1wbGVfc3Ry dG91bCk7CiAgKi8KIGxvbmcgc2ltcGxlX3N0cnRvbChjb25zdCBjaGFyICpjcCwgY2hhciAqKmVu ZHAsIHVuc2lnbmVkIGludCBiYXNlKQogewotCWlmKCpjcCA9PSAnLScpCisJaWYgKCpjcCA9PSAn LScpCiAJCXJldHVybiAtc2ltcGxlX3N0cnRvdWwoY3AgKyAxLCBlbmRwLCBiYXNlKTsKKwogCXJl dHVybiBzaW1wbGVfc3RydG91bChjcCwgZW5kcCwgYmFzZSk7CiB9CiBFWFBPUlRfU1lNQk9MKHNp bXBsZV9zdHJ0b2wpOwpAQCAtMTE5LDkgKzEyMCw5IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBzaW1w bGVfc3RydG91bGwoY29uc3QgY2hhciAqY3AsIGNoYXIgKiplbmRwLCB1bnNpZ25lZCBpbnQgYmFz CiAJCXJlc3VsdCA9IHJlc3VsdCAqIGJhc2UgKyB2YWx1ZTsKIAkJY3ArKzsKIAl9Ci0KIAlpZiAo ZW5kcCkKIAkJKmVuZHAgPSAoY2hhciAqKWNwOworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIEVYUE9S VF9TWU1CT0woc2ltcGxlX3N0cnRvdWxsKTsKQEAgLTEzNCw4ICsxMzUsOSBAQCBFWFBPUlRfU1lN Qk9MKHNpbXBsZV9zdHJ0b3VsbCk7CiAgKi8KIGxvbmcgbG9uZyBzaW1wbGVfc3RydG9sbChjb25z dCBjaGFyICpjcCwgY2hhciAqKmVuZHAsIHVuc2lnbmVkIGludCBiYXNlKQogewotCWlmKCpjcD09 Jy0nKQorCWlmICgqY3AgPT0gJy0nKQogCQlyZXR1cm4gLXNpbXBsZV9zdHJ0b3VsbChjcCArIDEs IGVuZHAsIGJhc2UpOworCiAJcmV0dXJuIHNpbXBsZV9zdHJ0b3VsbChjcCwgZW5kcCwgYmFzZSk7 CiB9CiAKQEAgLTE3NSw2ICsxNzcsNyBAQCBpbnQgc3RyaWN0X3N0cnRvdWwoY29uc3QgY2hhciAq Y3AsIHVuc2lnbmVkIGludCBiYXNlLCB1bnNpZ25lZCBsb25nICpyZXMpCiAJdmFsID0gc2ltcGxl X3N0cnRvdWwoY3AsICZ0YWlsLCBiYXNlKTsKIAlpZiAodGFpbCA9PSBjcCkKIAkJcmV0dXJuIC1F SU5WQUw7CisKIAlpZiAoKCp0YWlsID09ICdcMCcpIHx8CiAJCSgobGVuID09IChzaXplX3QpKHRh aWwgLSBjcCkgKyAxKSAmJiAoKnRhaWwgPT0gJ1xuJykpKSB7CiAJCSpyZXMgPSB2YWw7CkBAIC0y ODcsMTAgKzI5MCwxMSBAQCBFWFBPUlRfU1lNQk9MKHN0cmljdF9zdHJ0b2xsKTsKIAogc3RhdGlj IGludCBza2lwX2F0b2koY29uc3QgY2hhciAqKnMpCiB7Ci0JaW50IGk9MDsKKwlpbnQgaSA9IDA7 CiAKIAl3aGlsZSAoaXNkaWdpdCgqKnMpKQogCQlpID0gaSoxMCArICooKCpzKSsrKSAtICcwJzsK KwogCXJldHVybiBpOwogfQogCkBAIC0zMDQsNyArMzA4LDcgQEAgc3RhdGljIGludCBza2lwX2F0 b2koY29uc3QgY2hhciAqKnMpCiAvKiBGb3JtYXRzIGNvcnJlY3RseSBhbnkgaW50ZWdlciBpbiBb MCw5OTk5OV0uCiAgKiBPdXRwdXRzIGZyb20gb25lIHRvIGZpdmUgZGlnaXRzIGRlcGVuZGluZyBv biBpbnB1dC4KICAqIE9uIGkzODYgZ2NjIDQuMS4yIC1PMjogfjI1MCBieXRlcyBvZiBjb2RlLiAq Lwotc3RhdGljIGNoYXIqIHB1dF9kZWNfdHJ1bmMoY2hhciAqYnVmLCB1bnNpZ25lZCBxKQorc3Rh dGljIGNoYXIgKnB1dF9kZWNfdHJ1bmMoY2hhciAqYnVmLCB1bnNpZ25lZCBxKQogewogCXVuc2ln bmVkIGQzLCBkMiwgZDEsIGQwOwogCWQxID0gKHE+PjQpICYgMHhmOwpAQCAtMzMzLDE0ICszMzcs MTUgQEAgc3RhdGljIGNoYXIqIHB1dF9kZWNfdHJ1bmMoY2hhciAqYnVmLCB1bnNpZ25lZCBxKQog CQkJCWQzID0gZDMgLSAxMCpxOwogCQkJCSpidWYrKyA9IGQzICsgJzAnOyAgLyogbmV4dCBkaWdp dCAqLwogCQkJCWlmIChxICE9IDApCi0JCQkJCSpidWYrKyA9IHEgKyAnMCc7ICAvKiBtb3N0IHNp Z24uIGRpZ2l0ICovCisJCQkJCSpidWYrKyA9IHEgKyAnMCc7IC8qIG1vc3Qgc2lnbi4gZGlnaXQg Ki8KIAkJCX0KIAkJfQogCX0KKwogCXJldHVybiBidWY7CiB9CiAvKiBTYW1lIHdpdGggaWYncyBy ZW1vdmVkLiBBbHdheXMgZW1pdHMgZml2ZSBkaWdpdHMgKi8KLXN0YXRpYyBjaGFyKiBwdXRfZGVj X2Z1bGwoY2hhciAqYnVmLCB1bnNpZ25lZCBxKQorc3RhdGljIGNoYXIgKnB1dF9kZWNfZnVsbChj aGFyICpidWYsIHVuc2lnbmVkIHEpCiB7CiAJLyogQlRXLCBpZiBxIGlzIGluIFswLDk5OTldLCA4 LWJpdCBpbnRzIHdpbGwgYmUgZW5vdWdoLCAqLwogCS8qIGJ1dCBhbnl3YXksIGdjYyBwcm9kdWNl cyBiZXR0ZXIgY29kZSB3aXRoIGZ1bGwtc2l6ZWQgaW50cyAqLwpAQCAtMzQ5LDE0ICszNTQsMTUg QEAgc3RhdGljIGNoYXIqIHB1dF9kZWNfZnVsbChjaGFyICpidWYsIHVuc2lnbmVkIHEpCiAJZDIg PSAocT4+OCkgJiAweGY7CiAJZDMgPSAocT4+MTIpOwogCi0JLyogUG9zc2libGUgd2F5cyB0byBh cHByb3guIGRpdmlkZSBieSAxMCAqLwotCS8qIGdjYyAtTzIgcmVwbGFjZXMgbXVsdGlwbHkgd2l0 aCBzaGlmdHMgYW5kIGFkZHMgKi8KLQkvLyAoeCAqIDB4Y2QpID4+IDExOiAxMTAwMTEwMSAtIHNo b3J0ZXIgY29kZSB0aGFuICogMHg2NyAob24gaTM4NikKLQkvLyAoeCAqIDB4NjcpID4+IDEwOiAg MTEwMDExMQotCS8vICh4ICogMHgzNCkgPj4gOTogICAgMTEwMTAwIC0gc2FtZQotCS8vICh4ICog MHgxYSkgPj4gODogICAgIDExMDEwIC0gc2FtZQotCS8vICh4ICogMHgwZCkgPj4gNzogICAgICAx MTAxIC0gc2FtZSwgc2hvcnRlc3QgY29kZSAob24gaTM4NikKLQorCS8qCisJICogUG9zc2libGUg d2F5cyB0byBhcHByb3guIGRpdmlkZSBieSAxMAorCSAqIGdjYyAtTzIgcmVwbGFjZXMgbXVsdGlw bHkgd2l0aCBzaGlmdHMgYW5kIGFkZHMKKwkgKiAoeCAqIDB4Y2QpID4+IDExOiAxMTAwMTEwMSAt IHNob3J0ZXIgY29kZSB0aGFuICogMHg2NyAob24gaTM4NikKKwkgKiAoeCAqIDB4NjcpID4+IDEw OiAgMTEwMDExMQorCSAqICh4ICogMHgzNCkgPj4gOTogICAgMTEwMTAwIC0gc2FtZQorCSAqICh4 ICogMHgxYSkgPj4gODogICAgIDExMDEwIC0gc2FtZQorCSAqICh4ICogMHgwZCkgPj4gNzogICAg ICAxMTAxIC0gc2FtZSwgc2hvcnRlc3QgY29kZSAob24gaTM4NikKKwkgKi8KIAlkMCA9IDYqKGQz ICsgZDIgKyBkMSkgKyAocSAmIDB4Zik7CiAJcSA9IChkMCAqIDB4Y2QpID4+IDExOwogCWQwID0g ZDAgLSAxMCpxOwpAQCAtMzc3LDEwICszODMsMTEgQEAgc3RhdGljIGNoYXIqIHB1dF9kZWNfZnVs bChjaGFyICpidWYsIHVuc2lnbmVkIHEpCiAJCQkJZDMgPSBkMyAtIDEwKnE7CiAJCQkJKmJ1Zisr ID0gZDMgKyAnMCc7CiAJCQkJCSpidWYrKyA9IHEgKyAnMCc7CisKIAlyZXR1cm4gYnVmOwogfQog LyogTm8gaW5saW5pbmcgaGVscHMgZ2NjIHRvIHVzZSByZWdpc3RlcnMgYmV0dGVyICovCi1zdGF0 aWMgbm9pbmxpbmUgY2hhciogcHV0X2RlYyhjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgbG9uZyBu dW0pCitzdGF0aWMgbm9pbmxpbmUgY2hhciAqcHV0X2RlYyhjaGFyICpidWYsIHVuc2lnbmVkIGxv bmcgbG9uZyBudW0pCiB7CiAJd2hpbGUgKDEpIHsKIAkJdW5zaWduZWQgcmVtOwpAQCAtNDUwLDkg KzQ1Nyw5IEBAIHN0YXRpYyBjaGFyICpudW1iZXIoY2hhciAqYnVmLCBjaGFyICplbmQsIHVuc2ln bmVkIGxvbmcgbG9uZyBudW0sCiAJCXNwZWMuZmxhZ3MgJj0gflpFUk9QQUQ7CiAJc2lnbiA9IDA7 CiAJaWYgKHNwZWMuZmxhZ3MgJiBTSUdOKSB7Ci0JCWlmICgoc2lnbmVkIGxvbmcgbG9uZykgbnVt IDwgMCkgeworCQlpZiAoKHNpZ25lZCBsb25nIGxvbmcpbnVtIDwgMCkgewogCQkJc2lnbiA9ICct JzsKLQkJCW51bSA9IC0gKHNpZ25lZCBsb25nIGxvbmcpIG51bTsKKwkJCW51bSA9IC0oc2lnbmVk IGxvbmcgbG9uZyludW07CiAJCQlzcGVjLmZpZWxkX3dpZHRoLS07CiAJCX0gZWxzZSBpZiAoc3Bl Yy5mbGFncyAmIFBMVVMpIHsKIAkJCXNpZ24gPSAnKyc7CkBAIC00ODAsNyArNDg3LDkgQEAgc3Rh dGljIGNoYXIgKm51bWJlcihjaGFyICpidWYsIGNoYXIgKmVuZCwgdW5zaWduZWQgbG9uZyBsb25n IG51bSwKIAllbHNlIGlmIChzcGVjLmJhc2UgIT0gMTApIHsgLyogOCBvciAxNiAqLwogCQlpbnQg bWFzayA9IHNwZWMuYmFzZSAtIDE7CiAJCWludCBzaGlmdCA9IDM7Ci0JCWlmIChzcGVjLmJhc2Ug PT0gMTYpIHNoaWZ0ID0gNDsKKworCQlpZiAoc3BlYy5iYXNlID09IDE2KQorCQkJc2hpZnQgPSA0 OwogCQlkbyB7CiAJCQl0bXBbaSsrXSA9IChkaWdpdHNbKCh1bnNpZ25lZCBjaGFyKW51bSkgJiBt YXNrXSB8IGxvY2FzZSk7CiAJCQludW0gPj49IHNoaWZ0OwpAQCAtNDk1LDcgKzUwNCw3IEBAIHN0 YXRpYyBjaGFyICpudW1iZXIoY2hhciAqYnVmLCBjaGFyICplbmQsIHVuc2lnbmVkIGxvbmcgbG9u ZyBudW0sCiAJLyogbGVhZGluZyBzcGFjZSBwYWRkaW5nICovCiAJc3BlYy5maWVsZF93aWR0aCAt PSBzcGVjLnByZWNpc2lvbjsKIAlpZiAoIShzcGVjLmZsYWdzICYgKFpFUk9QQUQrTEVGVCkpKSB7 Ci0JCXdoaWxlKC0tc3BlYy5maWVsZF93aWR0aCA+PSAwKSB7CisJCXdoaWxlICgtLXNwZWMuZmll bGRfd2lkdGggPj0gMCkgewogCQkJaWYgKGJ1ZiA8IGVuZCkKIAkJCQkqYnVmID0gJyAnOwogCQkJ KytidWY7CkBAIC01NDUsNiArNTU0LDcgQEAgc3RhdGljIGNoYXIgKm51bWJlcihjaGFyICpidWYs IGNoYXIgKmVuZCwgdW5zaWduZWQgbG9uZyBsb25nIG51bSwKIAkJCSpidWYgPSAnICc7CiAJCSsr YnVmOwogCX0KKwogCXJldHVybiBidWY7CiB9CiAKQEAgLTU3NCw2ICs1ODQsNyBAQCBzdGF0aWMg Y2hhciAqc3RyaW5nKGNoYXIgKmJ1ZiwgY2hhciAqZW5kLCBjb25zdCBjaGFyICpzLCBzdHJ1Y3Qg cHJpbnRmX3NwZWMgc3BlYwogCQkJKmJ1ZiA9ICcgJzsKIAkJKytidWY7CiAJfQorCiAJcmV0dXJu IGJ1ZjsKIH0KIApAQCAtNTg3LDExICs1OTgsMTMgQEAgc3RhdGljIGNoYXIgKnN5bWJvbF9zdHJp bmcoY2hhciAqYnVmLCBjaGFyICplbmQsIHZvaWQgKnB0ciwKIAkJc3ByaW50X3N5bWJvbChzeW0s IHZhbHVlKTsKIAllbHNlCiAJCWthbGxzeW1zX2xvb2t1cCh2YWx1ZSwgTlVMTCwgTlVMTCwgTlVM TCwgc3ltKTsKKwogCXJldHVybiBzdHJpbmcoYnVmLCBlbmQsIHN5bSwgc3BlYyk7CiAjZWxzZQot CXNwZWMuZmllbGRfd2lkdGggPSAyKnNpemVvZih2b2lkICopOworCXNwZWMuZmllbGRfd2lkdGgg PSAyICogc2l6ZW9mKHZvaWQgKik7CiAJc3BlYy5mbGFncyB8PSBTUEVDSUFMIHwgU01BTEwgfCBa RVJPUEFEOwogCXNwZWMuYmFzZSA9IDE2OworCiAJcmV0dXJuIG51bWJlcihidWYsIGVuZCwgdmFs dWUsIHNwZWMpOwogI2VuZGlmCiB9CkBAIC02MTEsNyArNjI0LDcgQEAgc3RhdGljIGNoYXIgKnJl c291cmNlX3N0cmluZyhjaGFyICpidWYsIGNoYXIgKmVuZCwgc3RydWN0IHJlc291cmNlICpyZXMs CiAJCS5wcmVjaXNpb24gPSAtMSwKIAkJLmZsYWdzID0gU1BFQ0lBTCB8IFNNQUxMIHwgWkVST1BB RCwKIAl9OwotCS8qIHJvb20gZm9yIHRoZSBhY3R1YWwgbnVtYmVycywgdGhlIHR3byAiMHgiLCAt LCBbLCBdIGFuZCB0aGUgZmluYWwgemVybyAqLworCS8qIHJvb20gZm9yIGFjdHVhbCBudW1iZXJz OiB0aGUgdHdvICIweCIsIC0sIFssIF0gYW5kIHRoZSBmaW5hbCB6ZXJvICovCiAJY2hhciBzeW1b NCpzaXplb2YocmVzb3VyY2Vfc2l6ZV90KSArIDhdOwogCWNoYXIgKnAgPSBzeW0sICpwZW5kID0g c3ltICsgc2l6ZW9mKHN5bSk7CiAJaW50IHNpemUgPSAtMTsKQEAgLTY2OCwyMiArNjgxLDE5IEBA IHN0YXRpYyBjaGFyICppcDRfc3RyaW5nKGNoYXIgKnAsIGNvbnN0IHU4ICphZGRyLCBib29sIGxl YWRpbmdfemVyb3MpCiAJCWlmIChpIDwgMykKIAkJCSpwKysgPSAnLic7CiAJfQotCiAJKnAgPSAn XDAnOworCiAJcmV0dXJuIHA7CiB9CiAKIHN0YXRpYyBjaGFyICppcDZfY29tcHJlc3NlZF9zdHJp bmcoY2hhciAqcCwgY29uc3QgY2hhciAqYWRkcikKIHsKLQlpbnQgaTsKLQlpbnQgajsKLQlpbnQg cmFuZ2U7CisJaW50IGksIGosIHJhbmdlOwogCXVuc2lnbmVkIGNoYXIgemVyb2xlbmd0aFs4XTsK IAlpbnQgbG9uZ2VzdCA9IDE7CiAJaW50IGNvbG9ucG9zID0gLTE7CiAJdTE2IHdvcmQ7Ci0JdTgg aGk7Ci0JdTggbG87CisJdTggaGksIGxvOwogCWJvb2wgbmVlZGNvbG9uID0gZmFsc2U7CiAJYm9v bCB1c2VJUHY0OwogCXN0cnVjdCBpbjZfYWRkciBpbjY7CkBAIC03NTAsMjIgKzc2MCwyMyBAQCBz dGF0aWMgY2hhciAqaXA2X2NvbXByZXNzZWRfc3RyaW5nKGNoYXIgKnAsIGNvbnN0IGNoYXIgKmFk ZHIpCiAJCQkqcCsrID0gJzonOwogCQlwID0gaXA0X3N0cmluZyhwLCAmaW42LnM2X2FkZHJbMTJd LCBmYWxzZSk7CiAJfQotCiAJKnAgPSAnXDAnOworCiAJcmV0dXJuIHA7CiB9CiAKIHN0YXRpYyBj aGFyICppcDZfc3RyaW5nKGNoYXIgKnAsIGNvbnN0IGNoYXIgKmFkZHIsIGNvbnN0IGNoYXIgKmZt dCkKIHsKIAlpbnQgaTsKKwogCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKIAkJcCA9IHBhY2tf aGV4X2J5dGUocCwgKmFkZHIrKyk7CiAJCXAgPSBwYWNrX2hleF9ieXRlKHAsICphZGRyKyspOwog CQlpZiAoZm10WzBdID09ICdJJyAmJiBpICE9IDcpCiAJCQkqcCsrID0gJzonOwogCX0KLQogCSpw ID0gJ1wwJzsKKwogCXJldHVybiBwOwogfQogCkBAIC0xMjcxLDcgKzEyODIsOCBAQCBpbnQgdnNj bnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3Qg YXJncykKIHsKIAlpbnQgaTsKIAotCWk9dnNucHJpbnRmKGJ1ZixzaXplLGZtdCxhcmdzKTsKKwlp ID0gdnNucHJpbnRmKGJ1Ziwgc2l6ZSwgZm10LCBhcmdzKTsKKwogCXJldHVybiAoaSA+PSBzaXpl KSA/IChzaXplIC0gMSkgOiBpOwogfQogRVhQT1JUX1NZTUJPTCh2c2NucHJpbnRmKTsKQEAgLTEy OTAsMTQgKzEzMDIsMTUgQEAgRVhQT1JUX1NZTUJPTCh2c2NucHJpbnRmKTsKICAqCiAgKiBTZWUg dGhlIHZzbnByaW50ZigpIGRvY3VtZW50YXRpb24gZm9yIGZvcm1hdCBzdHJpbmcgZXh0ZW5zaW9u cyBvdmVyIEM5OS4KICAqLwotaW50IHNucHJpbnRmKGNoYXIgKiBidWYsIHNpemVfdCBzaXplLCBj b25zdCBjaGFyICpmbXQsIC4uLikKK2ludCBzbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXpl LCBjb25zdCBjaGFyICpmbXQsIC4uLikKIHsKIAl2YV9saXN0IGFyZ3M7CiAJaW50IGk7CiAKIAl2 YV9zdGFydChhcmdzLCBmbXQpOwotCWk9dnNucHJpbnRmKGJ1ZixzaXplLGZtdCxhcmdzKTsKKwlp ID0gdnNucHJpbnRmKGJ1Ziwgc2l6ZSwgZm10LCBhcmdzKTsKIAl2YV9lbmQoYXJncyk7CisKIAly ZXR1cm4gaTsKIH0KIEVYUE9SVF9TWU1CT0woc25wcmludGYpOwpAQCAtMTMxMyw3ICsxMzI2LDcg QEAgRVhQT1JUX1NZTUJPTChzbnByaW50Zik7CiAgKiB0aGUgdHJhaWxpbmcgJ1wwJy4gSWYgQHNp emUgaXMgPD0gMCB0aGUgZnVuY3Rpb24gcmV0dXJucyAwLgogICovCiAKLWludCBzY25wcmludGYo Y2hhciAqIGJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoraW50IHNjbnBy aW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIC4uLikKIHsKIAl2 YV9saXN0IGFyZ3M7CiAJaW50IGk7CkBAIC0xMzIxLDYgKzEzMzQsNyBAQCBpbnQgc2NucHJpbnRm KGNoYXIgKiBidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIC4uLikKIAl2YV9zdGFy dChhcmdzLCBmbXQpOwogCWkgPSB2c25wcmludGYoYnVmLCBzaXplLCBmbXQsIGFyZ3MpOwogCXZh X2VuZChhcmdzKTsKKwogCXJldHVybiAoaSA+PSBzaXplKSA/IChzaXplIC0gMSkgOiBpOwogfQog RVhQT1JUX1NZTUJPTChzY25wcmludGYpOwpAQCAtMTM1OCwxNCArMTM3MiwxNSBAQCBFWFBPUlRf U1lNQk9MKHZzcHJpbnRmKTsKICAqCiAgKiBTZWUgdGhlIHZzbnByaW50ZigpIGRvY3VtZW50YXRp b24gZm9yIGZvcm1hdCBzdHJpbmcgZXh0ZW5zaW9ucyBvdmVyIEM5OS4KICAqLwotaW50IHNwcmlu dGYoY2hhciAqIGJ1ZiwgY29uc3QgY2hhciAqZm10LCAuLi4pCitpbnQgc3ByaW50ZihjaGFyICpi dWYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewogCXZhX2xpc3QgYXJnczsKIAlpbnQgaTsKIAog CXZhX3N0YXJ0KGFyZ3MsIGZtdCk7Ci0JaT12c25wcmludGYoYnVmLCBJTlRfTUFYLCBmbXQsIGFy Z3MpOworCWkgPSB2c25wcmludGYoYnVmLCBJTlRfTUFYLCBmbXQsIGFyZ3MpOwogCXZhX2VuZChh cmdzKTsKKwogCXJldHVybiBpOwogfQogRVhQT1JUX1NZTUJPTChzcHJpbnRmKTsKQEAgLTE0MjMs NyArMTQzOCw2IEBAIGRvIHsJCQkJCQkJCQlcCiAJc3RyICs9IHNpemVvZih0eXBlKTsJCQkJCQlc CiB9IHdoaWxlICgwKQogCi0KIAl3aGlsZSAoKmZtdCkgewogCQlyZWFkID0gZm9ybWF0X2RlY29k ZShmbXQsICZzcGVjKTsKIApAQCAtMTUxMiw4ICsxNTI2LDggQEAgZG8gewkJCQkJCQkJCVwKIAkJ CX0KIAkJfQogCX0KLQlyZXR1cm4gKHUzMiAqKShQVFJfQUxJR04oc3RyLCBzaXplb2YodTMyKSkp IC0gYmluX2J1ZjsKIAorCXJldHVybiAodTMyICopKFBUUl9BTElHTihzdHIsIHNpemVvZih1MzIp KSkgLSBiaW5fYnVmOwogI3VuZGVmIHNhdmVfYXJnCiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh2Ymlu X3ByaW50Zik7CkBAIC0xNTQ1LDcgKzE1NTksNiBAQCBpbnQgYnN0cl9wcmludGYoY2hhciAqYnVm LCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCBjb25zdCB1MzIgKmJpbl9idWYpCiAJdW5z aWduZWQgbG9uZyBsb25nIG51bTsKIAljaGFyICpzdHIsICplbmQsIGM7CiAJY29uc3QgY2hhciAq YXJncyA9IChjb25zdCBjaGFyICopYmluX2J1ZjsKLQogCXN0cnVjdCBwcmludGZfc3BlYyBzcGVj ID0gezB9OwogCiAJaWYgKFdBUk5fT05fT05DRSgoaW50KSBzaXplIDwgMCkpCkBAIC0xNzI1LDYg KzE3MzgsNyBAQCBpbnQgYnByaW50Zih1MzIgKmJpbl9idWYsIHNpemVfdCBzaXplLCBjb25zdCBj aGFyICpmbXQsIC4uLikKIAl2YV9zdGFydChhcmdzLCBmbXQpOwogCXJldCA9IHZiaW5fcHJpbnRm KGJpbl9idWYsIHNpemUsIGZtdCwgYXJncyk7CiAJdmFfZW5kKGFyZ3MpOworCiAJcmV0dXJuIHJl dDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGJwcmludGYpOwpAQCAtMTczNywxOCArMTc1MSwxNiBA QCBFWFBPUlRfU1lNQk9MX0dQTChicHJpbnRmKTsKICAqIEBmbXQ6CWZvcm1hdCBvZiBidWZmZXIK ICAqIEBhcmdzOglhcmd1bWVudHMKICAqLwotaW50IHZzc2NhbmYoY29uc3QgY2hhciAqIGJ1Ziwg Y29uc3QgY2hhciAqIGZtdCwgdmFfbGlzdCBhcmdzKQoraW50IHZzc2NhbmYoY29uc3QgY2hhciAq YnVmLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykKIHsKIAljb25zdCBjaGFyICpzdHIg PSBidWY7CiAJY2hhciAqbmV4dDsKIAljaGFyIGRpZ2l0OwogCWludCBudW0gPSAwOwotCWludCBx dWFsaWZpZXI7Ci0JaW50IGJhc2U7Ci0JaW50IGZpZWxkX3dpZHRoOworCWludCBxdWFsaWZpZXIs IGJhc2UsIGZpZWxkX3dpZHRoOwogCWludCBpc19zaWduID0gMDsKIAotCXdoaWxlKCpmbXQgJiYg KnN0cikgeworCXdoaWxlICgqZm10ICYmICpzdHIpIHsKIAkJLyogc2tpcCBhbnkgd2hpdGUgc3Bh Y2UgaW4gZm9ybWF0ICovCiAJCS8qIHdoaXRlIHNwYWNlIGluIGZvcm1hdCBtYXRjaHMgYW55IGFt b3VudCBvZgogCQkgKiB3aGl0ZSBzcGFjZSwgaW5jbHVkaW5nIG5vbmUsIGluIHRoZSBpbnB1dC4K QEAgLTE3NzAsNyArMTc4Miw3IEBAIGludCB2c3NjYW5mKGNvbnN0IGNoYXIgKiBidWYsIGNvbnN0 IGNoYXIgKiBmbXQsIHZhX2xpc3QgYXJncykKIAkJaWYgKCEqZm10KQogCQkJYnJlYWs7CiAJCSsr Zm10OwotCQkKKwogCQkvKiBza2lwIHRoaXMgY29udmVyc2lvbi4KIAkJICogYWR2YW5jZSBib3Ro IHN0cmluZ3MgdG8gbmV4dCB3aGl0ZSBzcGFjZQogCQkgKi8KQEAgLTE4MDgsMTAgKzE4MjAsMTAg QEAgaW50IHZzc2NhbmYoY29uc3QgY2hhciAqIGJ1ZiwgY29uc3QgY2hhciAqIGZtdCwgdmFfbGlz dCBhcmdzKQogCQlpZiAoISpmbXQgfHwgISpzdHIpCiAJCQlicmVhazsKIAotCQlzd2l0Y2goKmZt dCsrKSB7CisJCXN3aXRjaCAoKmZtdCsrKSB7CiAJCWNhc2UgJ2MnOgogCQl7Ci0JCQljaGFyICpz ID0gKGNoYXIgKikgdmFfYXJnKGFyZ3MsY2hhciopOworCQkJY2hhciAqcyA9IChjaGFyICopdmFf YXJnKGFyZ3MsIGNoYXIqKTsKIAkJCWlmIChmaWVsZF93aWR0aCA9PSAtMSkKIAkJCQlmaWVsZF93 aWR0aCA9IDE7CiAJCQlkbyB7CkBAIC0xODIyLDE3ICsxODM0LDE2IEBAIGludCB2c3NjYW5mKGNv bnN0IGNoYXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIHZhX2xpc3QgYXJncykKIAkJY29udGlu dWU7CiAJCWNhc2UgJ3MnOgogCQl7Ci0JCQljaGFyICpzID0gKGNoYXIgKikgdmFfYXJnKGFyZ3Ms IGNoYXIgKik7Ci0JCQlpZihmaWVsZF93aWR0aCA9PSAtMSkKKwkJCWNoYXIgKnMgPSAoY2hhciAq KXZhX2FyZyhhcmdzLCBjaGFyICopOworCQkJaWYgKGZpZWxkX3dpZHRoID09IC0xKQogCQkJCWZp ZWxkX3dpZHRoID0gSU5UX01BWDsKIAkJCS8qIGZpcnN0LCBza2lwIGxlYWRpbmcgd2hpdGUgc3Bh Y2UgaW4gYnVmZmVyICovCiAJCQl3aGlsZSAoaXNzcGFjZSgqc3RyKSkKIAkJCQlzdHIrKzsKIAog CQkJLyogbm93IGNvcHkgdW50aWwgbmV4dCB3aGl0ZSBzcGFjZSAqLwotCQkJd2hpbGUgKCpzdHIg JiYgIWlzc3BhY2UoKnN0cikgJiYgZmllbGRfd2lkdGgtLSkgeworCQkJd2hpbGUgKCpzdHIgJiYg IWlzc3BhY2UoKnN0cikgJiYgZmllbGRfd2lkdGgtLSkKIAkJCQkqcysrID0gKnN0cisrOwotCQkJ fQogCQkJKnMgPSAnXDAnOwogCQkJbnVtKys7CiAJCX0KQEAgLTE4NDAsNyArMTg1MSw3IEBAIGlu dCB2c3NjYW5mKGNvbnN0IGNoYXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIHZhX2xpc3QgYXJn cykKIAkJY2FzZSAnbic6CiAJCQkvKiByZXR1cm4gbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCBz byBmYXIgKi8KIAkJewotCQkJaW50ICppID0gKGludCAqKXZhX2FyZyhhcmdzLGludCopOworCQkJ aW50ICppID0gKGludCAqKXZhX2FyZyhhcmdzLCBpbnQqKTsKIAkJCSppID0gc3RyIC0gYnVmOwog CQl9CiAJCWNvbnRpbnVlOwpAQCAtMTg1MiwxNCArMTg2MywxNCBAQCBpbnQgdnNzY2FuZihjb25z dCBjaGFyICogYnVmLCBjb25zdCBjaGFyICogZm10LCB2YV9saXN0IGFyZ3MpCiAJCQliYXNlID0g MTY7CiAJCQlicmVhazsKIAkJY2FzZSAnaSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYXNl ID0gMDsKKwkJCWJhc2UgPSAwOwogCQljYXNlICdkJzoKIAkJCWlzX3NpZ24gPSAxOwogCQljYXNl ICd1JzoKIAkJCWJyZWFrOwogCQljYXNlICclJzoKIAkJCS8qIGxvb2tpbmcgZm9yICclJyBpbiBz dHIgKi8KLQkJCWlmICgqc3RyKysgIT0gJyUnKSAKKwkJCWlmICgqc3RyKysgIT0gJyUnKQogCQkJ CXJldHVybiBudW07CiAJCQljb250aW51ZTsKIAkJZGVmYXVsdDoKQEAgLTE4NzgsNjMgKzE4ODks NjMgQEAgaW50IHZzc2NhbmYoY29uc3QgY2hhciAqIGJ1ZiwgY29uc3QgY2hhciAqIGZtdCwgdmFf bGlzdCBhcmdzKQogCQkJZGlnaXQgPSAqKHN0ciArIDEpOwogCiAJCWlmICghZGlnaXQKLSAgICAg ICAgICAgICAgICAgICAgfHwgKGJhc2UgPT0gMTYgJiYgIWlzeGRpZ2l0KGRpZ2l0KSkKLSAgICAg ICAgICAgICAgICAgICAgfHwgKGJhc2UgPT0gMTAgJiYgIWlzZGlnaXQoZGlnaXQpKQotICAgICAg ICAgICAgICAgICAgICB8fCAoYmFzZSA9PSA4ICYmICghaXNkaWdpdChkaWdpdCkgfHwgZGlnaXQg PiAnNycpKQotICAgICAgICAgICAgICAgICAgICB8fCAoYmFzZSA9PSAwICYmICFpc2RpZ2l0KGRp Z2l0KSkpCi0JCQkJYnJlYWs7CisJCSAgICB8fCAoYmFzZSA9PSAxNiAmJiAhaXN4ZGlnaXQoZGln aXQpKQorCQkgICAgfHwgKGJhc2UgPT0gMTAgJiYgIWlzZGlnaXQoZGlnaXQpKQorCQkgICAgfHwg KGJhc2UgPT0gOCAmJiAoIWlzZGlnaXQoZGlnaXQpIHx8IGRpZ2l0ID4gJzcnKSkKKwkJICAgIHx8 IChiYXNlID09IDAgJiYgIWlzZGlnaXQoZGlnaXQpKSkKKwkJCWJyZWFrOwogCi0JCXN3aXRjaChx dWFsaWZpZXIpIHsKKwkJc3dpdGNoIChxdWFsaWZpZXIpIHsKIAkJY2FzZSAnSCc6CS8qIHRoYXQn cyAnaGgnIGluIGZvcm1hdCAqLwogCQkJaWYgKGlzX3NpZ24pIHsKLQkJCQlzaWduZWQgY2hhciAq cyA9IChzaWduZWQgY2hhciAqKSB2YV9hcmcoYXJncyxzaWduZWQgY2hhciAqKTsKLQkJCQkqcyA9 IChzaWduZWQgY2hhcikgc2ltcGxlX3N0cnRvbChzdHIsJm5leHQsYmFzZSk7CisJCQkJc2lnbmVk IGNoYXIgKnMgPSAoc2lnbmVkIGNoYXIgKil2YV9hcmcoYXJncywgc2lnbmVkIGNoYXIgKik7CisJ CQkJKnMgPSAoc2lnbmVkIGNoYXIpc2ltcGxlX3N0cnRvbChzdHIsICZuZXh0LCBiYXNlKTsKIAkJ CX0gZWxzZSB7Ci0JCQkJdW5zaWduZWQgY2hhciAqcyA9ICh1bnNpZ25lZCBjaGFyICopIHZhX2Fy ZyhhcmdzLCB1bnNpZ25lZCBjaGFyICopOwotCQkJCSpzID0gKHVuc2lnbmVkIGNoYXIpIHNpbXBs ZV9zdHJ0b3VsKHN0ciwgJm5leHQsIGJhc2UpOworCQkJCXVuc2lnbmVkIGNoYXIgKnMgPSAodW5z aWduZWQgY2hhciAqKXZhX2FyZyhhcmdzLCB1bnNpZ25lZCBjaGFyICopOworCQkJCSpzID0gKHVu c2lnbmVkIGNoYXIpc2ltcGxlX3N0cnRvdWwoc3RyLCAmbmV4dCwgYmFzZSk7CiAJCQl9CiAJCQli cmVhazsKIAkJY2FzZSAnaCc6CiAJCQlpZiAoaXNfc2lnbikgewotCQkJCXNob3J0ICpzID0gKHNo b3J0ICopIHZhX2FyZyhhcmdzLHNob3J0ICopOwotCQkJCSpzID0gKHNob3J0KSBzaW1wbGVfc3Ry dG9sKHN0ciwmbmV4dCxiYXNlKTsKKwkJCQlzaG9ydCAqcyA9IChzaG9ydCAqKXZhX2FyZyhhcmdz LCBzaG9ydCAqKTsKKwkJCQkqcyA9IChzaG9ydClzaW1wbGVfc3RydG9sKHN0ciwgJm5leHQsIGJh c2UpOwogCQkJfSBlbHNlIHsKLQkJCQl1bnNpZ25lZCBzaG9ydCAqcyA9ICh1bnNpZ25lZCBzaG9y dCAqKSB2YV9hcmcoYXJncywgdW5zaWduZWQgc2hvcnQgKik7Ci0JCQkJKnMgPSAodW5zaWduZWQg c2hvcnQpIHNpbXBsZV9zdHJ0b3VsKHN0ciwgJm5leHQsIGJhc2UpOworCQkJCXVuc2lnbmVkIHNo b3J0ICpzID0gKHVuc2lnbmVkIHNob3J0ICopdmFfYXJnKGFyZ3MsIHVuc2lnbmVkIHNob3J0ICop OworCQkJCSpzID0gKHVuc2lnbmVkIHNob3J0KXNpbXBsZV9zdHJ0b3VsKHN0ciwgJm5leHQsIGJh c2UpOwogCQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgJ2wnOgogCQkJaWYgKGlzX3NpZ24pIHsKLQkJ CQlsb25nICpsID0gKGxvbmcgKikgdmFfYXJnKGFyZ3MsbG9uZyAqKTsKLQkJCQkqbCA9IHNpbXBs ZV9zdHJ0b2woc3RyLCZuZXh0LGJhc2UpOworCQkJCWxvbmcgKmwgPSAobG9uZyAqKXZhX2FyZyhh cmdzLCBsb25nICopOworCQkJCSpsID0gc2ltcGxlX3N0cnRvbChzdHIsICZuZXh0LCBiYXNlKTsK IAkJCX0gZWxzZSB7Ci0JCQkJdW5zaWduZWQgbG9uZyAqbCA9ICh1bnNpZ25lZCBsb25nKikgdmFf YXJnKGFyZ3MsdW5zaWduZWQgbG9uZyopOwotCQkJCSpsID0gc2ltcGxlX3N0cnRvdWwoc3RyLCZu ZXh0LGJhc2UpOworCQkJCXVuc2lnbmVkIGxvbmcgKmwgPSAodW5zaWduZWQgbG9uZyAqKXZhX2Fy ZyhhcmdzLCB1bnNpZ25lZCBsb25nICopOworCQkJCSpsID0gc2ltcGxlX3N0cnRvdWwoc3RyLCAm bmV4dCwgYmFzZSk7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSAnTCc6CiAJCQlpZiAoaXNfc2ln bikgewotCQkJCWxvbmcgbG9uZyAqbCA9IChsb25nIGxvbmcqKSB2YV9hcmcoYXJncyxsb25nIGxv bmcgKik7Ci0JCQkJKmwgPSBzaW1wbGVfc3RydG9sbChzdHIsJm5leHQsYmFzZSk7CisJCQkJbG9u ZyBsb25nICpsID0gKGxvbmcgbG9uZyAqKXZhX2FyZyhhcmdzLCBsb25nIGxvbmcgKik7CisJCQkJ KmwgPSBzaW1wbGVfc3RydG9sbChzdHIsICZuZXh0LCBiYXNlKTsKIAkJCX0gZWxzZSB7Ci0JCQkJ dW5zaWduZWQgbG9uZyBsb25nICpsID0gKHVuc2lnbmVkIGxvbmcgbG9uZyopIHZhX2FyZyhhcmdz LHVuc2lnbmVkIGxvbmcgbG9uZyopOwotCQkJCSpsID0gc2ltcGxlX3N0cnRvdWxsKHN0ciwmbmV4 dCxiYXNlKTsKKwkJCQl1bnNpZ25lZCBsb25nIGxvbmcgKmwgPSAodW5zaWduZWQgbG9uZyBsb25n ICopdmFfYXJnKGFyZ3MsIHVuc2lnbmVkIGxvbmcgbG9uZyAqKTsKKwkJCQkqbCA9IHNpbXBsZV9z dHJ0b3VsbChzdHIsICZuZXh0LCBiYXNlKTsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlICdaJzoK IAkJY2FzZSAneic6CiAJCXsKLQkJCXNpemVfdCAqcyA9IChzaXplX3QqKSB2YV9hcmcoYXJncyxz aXplX3QqKTsKLQkJCSpzID0gKHNpemVfdCkgc2ltcGxlX3N0cnRvdWwoc3RyLCZuZXh0LGJhc2Up OworCQkJc2l6ZV90ICpzID0gKHNpemVfdCAqKXZhX2FyZyhhcmdzLCBzaXplX3QgKik7CisJCQkq cyA9IChzaXplX3Qpc2ltcGxlX3N0cnRvdWwoc3RyLCAmbmV4dCwgYmFzZSk7CiAJCX0KIAkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQlpZiAoaXNfc2lnbikgewotCQkJCWludCAqaSA9IChpbnQgKikg dmFfYXJnKGFyZ3MsIGludCopOwotCQkJCSppID0gKGludCkgc2ltcGxlX3N0cnRvbChzdHIsJm5l eHQsYmFzZSk7CisJCQkJaW50ICppID0gKGludCAqKXZhX2FyZyhhcmdzLCBpbnQgKik7CisJCQkJ KmkgPSAoaW50KXNpbXBsZV9zdHJ0b2woc3RyLCAmbmV4dCwgYmFzZSk7CiAJCQl9IGVsc2Ugewot CQkJCXVuc2lnbmVkIGludCAqaSA9ICh1bnNpZ25lZCBpbnQqKSB2YV9hcmcoYXJncywgdW5zaWdu ZWQgaW50Kik7Ci0JCQkJKmkgPSAodW5zaWduZWQgaW50KSBzaW1wbGVfc3RydG91bChzdHIsJm5l eHQsYmFzZSk7CisJCQkJdW5zaWduZWQgaW50ICppID0gKHVuc2lnbmVkIGludCAqKXZhX2FyZyhh cmdzLCB1bnNpZ25lZCBpbnQqKTsKKwkJCQkqaSA9ICh1bnNpZ25lZCBpbnQpc2ltcGxlX3N0cnRv dWwoc3RyLCAmbmV4dCwgYmFzZSk7CiAJCQl9CiAJCQlicmVhazsKIAkJfQpAQCAtMTk2NSwxNCAr MTk3NiwxNSBAQCBFWFBPUlRfU1lNQk9MKHZzc2NhbmYpOwogICogQGZtdDoJZm9ybWF0dGluZyBv ZiBidWZmZXIKICAqIEAuLi46CXJlc3VsdGluZyBhcmd1bWVudHMKICAqLwotaW50IHNzY2FuZihj b25zdCBjaGFyICogYnVmLCBjb25zdCBjaGFyICogZm10LCAuLi4pCitpbnQgc3NjYW5mKGNvbnN0 IGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAJdmFfbGlzdCBhcmdzOwogCWlu dCBpOwogCi0JdmFfc3RhcnQoYXJncyxmbXQpOwotCWkgPSB2c3NjYW5mKGJ1ZixmbXQsYXJncyk7 CisJdmFfc3RhcnQoYXJncywgZm10KTsKKwlpID0gdnNzY2FuZihidWYsIGZtdCwgYXJncyk7CiAJ dmFfZW5kKGFyZ3MpOworCiAJcmV0dXJuIGk7CiB9CiBFWFBPUlRfU1lNQk9MKHNzY2FuZik7Ci0t IAoxLjYuNS4yLjE1My5nNmUzMWYuZGlydHkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkFsc2EtZGV2ZWwgbWFpbGluZyBsaXN0CkFsc2EtZGV2ZWxAYWxz YS1wcm9qZWN0Lm9yZwpodHRwOi8vbWFpbG1hbi5hbHNhLXByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8vYWxzYS1kZXZlbAo=