Return-Path: X-Original-To: apmail-httpd-dev-archive@www.apache.org Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E78A918FF7 for ; Tue, 29 Dec 2015 15:56:41 +0000 (UTC) Received: (qmail 85763 invoked by uid 500); 29 Dec 2015 15:56:41 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 85692 invoked by uid 500); 29 Dec 2015 15:56:41 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 85682 invoked by uid 99); 29 Dec 2015 15:56:41 -0000 Received: from Unknown (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 29 Dec 2015 15:56:41 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id C3F2DC0CFB for ; Tue, 29 Dec 2015 15:56:40 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.68 X-Spam-Level: X-Spam-Status: No, score=0.68 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, KAM_ASCII_DIVIDERS=0.8, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd4-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id tZoQaT7JgIWl for ; Tue, 29 Dec 2015 15:56:26 +0000 (UTC) Received: from mail-qk0-f177.google.com (mail-qk0-f177.google.com [209.85.220.177]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id 1B2EB201C0 for ; Tue, 29 Dec 2015 15:56:26 +0000 (UTC) Received: by mail-qk0-f177.google.com with SMTP id p187so205021380qkd.1 for ; Tue, 29 Dec 2015 07:56:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=7He5flo7cCfZ0LrPmmAAE1m8YkS9q127sS781GSkreQ=; b=bUoXiyTDxZSr2DwhvAf8EC+PgJcv0A5KCe3HAl1lQPKXiRTcq5SuNwsWVK9NcKG16Y 5gehz0gdVfAVwmRQdiEb/BplcWlIMc66LmL51GbnhhqEf/AfCXJ4B/WPcK3OeAyWTJOh 6w4dnc4zFM3LjdrcR76ypGRP0Z/rAH0+fAFVSaxhgzkA7XSIC7UWo/IuU5jFOY7L7+NN I2ZotN6eMsop3QHsLQga76moPUjcLd9QEy2H/6EqUDAzWkPmxlZmOVW66FhUwCNBYW9i HfwMzR2MBTYw8jgLFlS97U9VSB+CEHbLdSTTt0q0V9MOD2DyVOp3qUW+cWzPxSpJu48T Cfmg== MIME-Version: 1.0 X-Received: by 10.55.80.194 with SMTP id e185mr77420001qkb.68.1451404578898; Tue, 29 Dec 2015 07:56:18 -0800 (PST) Received: by 10.55.65.85 with HTTP; Tue, 29 Dec 2015 07:56:18 -0800 (PST) In-Reply-To: References: <5654AEFB.1020704@aldan.algebra.com> Date: Tue, 29 Dec 2015 16:56:18 +0100 Message-ID: Subject: Re: Better ap_casecmpstr[n]? From: Yann Ylavic To: httpd-dev Content-Type: multipart/mixed; boundary=001a114a696c59efc805280b76df --001a114a696c59efc805280b76df Content-Type: text/plain; charset=UTF-8 On Tue, Dec 29, 2015 at 3:24 PM, Jim Jagielski wrote: > ping. > > Just a reminder that right now, trunk uses ap_casecmpstr[n](), > which can make some backport requests "problematic" due to > possible merge conflicts. I've just committed (in r1722150) more reverts of abusive ap_casecmpstr[n]() usage I introduced in r1715880. This now leave us the attached 2.4.x backport patch should we decide to apply these changes to 2.4.x. > > Can we *please* decide what we are doing? I'd vote for the backport... --001a114a696c59efc805280b76df Content-Type: text/diff; charset=US-ASCII; name="httpd-2.4.x-ap_casecmpstr.patch" Content-Disposition: attachment; filename="httpd-2.4.x-ap_casecmpstr.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iirkrio40 SW5kZXg6IGluY2x1ZGUvYXBfbW1uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaW5jbHVkZS9hcF9tbW4uaAko cmV2aXNpb24gMTcyMjE0MykKKysrIGluY2x1ZGUvYXBfbW1uLmgJKHdvcmtpbmcgY29weSkKQEAg LTQ1Nyw2ICs0NTcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgIGFwX2dldF9wcm90 b2NvbCgpLiBBZGQgSFRUUF9NSVNESVJFQ1RFRF9SRVFVRVNULgogICogICAgICAgICAgICAgICAg ICAgICAgICAgIEFkZGVkIGFwX3BhcnNlX3Rva2VuX2xpc3Rfc3RyaWN0KCkgdG8gaHR0cGQuaAog ICogMjAxMjAyMTEuNTIgKDIuNC4xNy1kZXYpIEFkZCBtYXN0ZXIgY29ubl9yZWMqIG1lbWJlciBp biBjb25uX3JlYy4KKyAqIDIwMTIwMjExLjUzICgyLjQuMTktZGV2KSBBZGQgYXBfY2FzZWNtcHN0 cltuXSgpOwogICovCiAKICNkZWZpbmUgTU9EVUxFX01BR0lDX0NPT0tJRSAweDQxNTAzMjM0VUwg LyogIkFQMjQiICovCkBAIC00NjQsNyArNDY1LDcgQEAKICNpZm5kZWYgTU9EVUxFX01BR0lDX05V TUJFUl9NQUpPUgogI2RlZmluZSBNT0RVTEVfTUFHSUNfTlVNQkVSX01BSk9SIDIwMTIwMjExCiAj ZW5kaWYKLSNkZWZpbmUgTU9EVUxFX01BR0lDX05VTUJFUl9NSU5PUiA1MiAgICAgICAgICAgICAg ICAgICAvKiAwLi4ubiAqLworI2RlZmluZSBNT0RVTEVfTUFHSUNfTlVNQkVSX01JTk9SIDUzICAg ICAgICAgICAgICAgICAgIC8qIDAuLi5uICovCiAKIC8qKgogICogRGV0ZXJtaW5lIGlmIHRoZSBz ZXJ2ZXIncyBjdXJyZW50IE1PRFVMRV9NQUdJQ19OVU1CRVIgaXMgYXQgbGVhc3QgYQpJbmRleDog aW5jbHVkZS9odHRwZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGluY2x1ZGUvaHR0cGQuaAkocmV2aXNpb24g MTcyMjE0MykKKysrIGluY2x1ZGUvaHR0cGQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMxMiw2ICsy MzEyLDI3IEBAIEFQX0RFQ0xBUkUoaW50KSBhcF9hcnJheV9zdHJfaW5kZXgoY29uc3QgYXByX2Fy cmF5CiBBUF9ERUNMQVJFKGludCkgYXBfYXJyYXlfc3RyX2NvbnRhaW5zKGNvbnN0IGFwcl9hcnJh eV9oZWFkZXJfdCAqYXJyYXksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpzKTsKIAorLyoqCisgKiBLbm93bi1mYXN0IHZlcnNpb24gb2Ygc3RyY2Fz ZWNtcCgpOiBBU0NJSSBjYXNlLWZvbGRpbmcsIFBPU0lYIGNvbXBsaWFudAorICogQHBhcmFtIHMx IFRoZSAxc3Qgc3RyaW5nIHRvIGNvbXBhcmUKKyAqIEBwYXJhbSBzMiBUaGUgMm5kIHN0cmluZyB0 byBjb21wYXJlCisgKiBAcmV0dXJuIGludGVnZXIgZ3JlYXRlciB0aGFuLCBlcXVhbCB0bywgb3Ig bGVzcyB0aGFuIDAsIGRlcGVuZGluZyBvbgorICogICAgICAgICBpZiBzMSBpcyBsZXhpY29ncmFw aGljYWxseSBncmVhdGVyIHRoYW4sIGVxdWFsIHRvLCBvciBsZXNzCisgKiAgICAgICAgIHRoYW4g czIgaWdub3JpbmcgY2FzZS4KKyAqLworQVBfREVDTEFSRShpbnQpIGFwX2Nhc2VjbXBzdHIoY29u c3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyKTsKKworLyoqCisgKiBLbm93bi1mYXN0IHZlcnNp b24gb2Ygc3RybmNhc2VjbXAoKTogQVNDSUkgY2FzZS1mb2xkaW5nLCBQT1NJWCBjb21wbGlhbnQK KyAqIEBwYXJhbSBzMSBUaGUgMXN0IHN0cmluZyB0byBjb21wYXJlCisgKiBAcGFyYW0gczIgVGhl IDJuZCBzdHJpbmcgdG8gY29tcGFyZQorICogQHBhcmFtIG4gIE1heGltdW0gbnVtYmVyIG9mIGNo YXJhY3RlcnMgaW4gdGhlIHN0cmluZ3MgdG8gY29tcGFyZQorICogQHJldHVybiBpbnRlZ2VyIGdy ZWF0ZXIgdGhhbiwgZXF1YWwgdG8sIG9yIGxlc3MgdGhhbiAwLCBkZXBlbmRpbmcgb24KKyAqICAg ICAgICAgaWYgczEgaXMgbGV4aWNvZ3JhcGhpY2FsbHkgZ3JlYXRlciB0aGFuLCBlcXVhbCB0bywg b3IgbGVzcworICogICAgICAgICB0aGFuIHMyIGlnbm9yaW5nIGNhc2UuCisgKi8KK0FQX0RFQ0xB UkUoaW50KSBhcF9jYXNlY21wc3Rybihjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIsIGFw cl9zaXplX3Qgbik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBtb2R1 bGVzL2FhYS9tb2RfYXV0aF9iYXNpYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1vZHVsZXMvYWFhL21vZF9h dXRoX2Jhc2ljLmMJKHJldmlzaW9uIDE3MjIxNDMpCisrKyBtb2R1bGVzL2FhYS9tb2RfYXV0aF9i YXNpYy5jCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgbm90 ZV9iYXNpY19hdXRoX2ZhaWx1cmUocmVxdWVzdF9yZWMgKnIKIAogc3RhdGljIGludCBob29rX25v dGVfYmFzaWNfYXV0aF9mYWlsdXJlKHJlcXVlc3RfcmVjICpyLCBjb25zdCBjaGFyICphdXRoX3R5 cGUpCiB7Ci0gICAgaWYgKHN0cmNhc2VjbXAoYXV0aF90eXBlLCAiQmFzaWMiKSkKKyAgICBpZiAo YXBfY2FzZWNtcHN0cihhdXRoX3R5cGUsICJCYXNpYyIpKQogICAgICAgICByZXR1cm4gREVDTElO RUQ7CiAKICAgICBub3RlX2Jhc2ljX2F1dGhfZmFpbHVyZShyKTsKQEAgLTI2NSw3ICsyNjUsNyBA QCBzdGF0aWMgaW50IGdldF9iYXNpY19hdXRoKHJlcXVlc3RfcmVjICpyLCBjb25zdCBjaAogICAg ICAgICByZXR1cm4gSFRUUF9VTkFVVEhPUklaRUQ7CiAgICAgfQogCi0gICAgaWYgKHN0cmNhc2Vj bXAoYXBfZ2V0d29yZChyLT5wb29sLCAmYXV0aF9saW5lLCAnICcpLCAiQmFzaWMiKSkgeworICAg IGlmIChhcF9jYXNlY21wc3RyKGFwX2dldHdvcmQoci0+cG9vbCwgJmF1dGhfbGluZSwgJyAnKSwg IkJhc2ljIikpIHsKICAgICAgICAgLyogQ2xpZW50IHRyaWVkIHRvIGF1dGhlbnRpY2F0ZSB1c2lu ZyB3cm9uZyBhdXRoIHNjaGVtZSAqLwogICAgICAgICBhcF9sb2dfcmVycm9yKEFQTE9HX01BUkss IEFQTE9HX0VSUiwgMCwgciwgQVBMT0dOTygwMTYxNCkKICAgICAgICAgICAgICAgICAgICAgICAi Y2xpZW50IHVzZWQgd3JvbmcgYXV0aGVudGljYXRpb24gc2NoZW1lOiAlcyIsIHItPnVyaSk7CkBA IC0zMDUsNyArMzA1LDcgQEAgc3RhdGljIGludCBhdXRoZW50aWNhdGVfYmFzaWNfdXNlcihyZXF1 ZXN0X3JlYyAqcikKIAogICAgIC8qIEFyZSB3ZSBjb25maWd1cmVkIHRvIGJlIEJhc2ljIGF1dGg/ ICovCiAgICAgY3VycmVudF9hdXRoID0gYXBfYXV0aF90eXBlKHIpOwotICAgIGlmICghY3VycmVu dF9hdXRoIHx8IHN0cmNhc2VjbXAoY3VycmVudF9hdXRoLCAiQmFzaWMiKSkgeworICAgIGlmICgh Y3VycmVudF9hdXRoIHx8IGFwX2Nhc2VjbXBzdHIoY3VycmVudF9hdXRoLCAiQmFzaWMiKSkgewog ICAgICAgICByZXR1cm4gREVDTElORUQ7CiAgICAgfQogCkluZGV4OiBtb2R1bGVzL2FhYS9tb2Rf YXV0aF9kaWdlc3QuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtb2R1bGVzL2FhYS9tb2RfYXV0aF9kaWdlc3Qu YwkocmV2aXNpb24gMTcyMjE0MykKKysrIG1vZHVsZXMvYWFhL21vZF9hdXRoX2RpZ2VzdC5jCSh3 b3JraW5nIGNvcHkpCkBAIC01NDEsNyArNTQxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnNldF9x b3AoY21kX3Bhcm1zICpjbWQsIHZvaWQgKmMKICAgICBpZiAoIXN0cmNhc2VjbXAob3AsICJhdXRo LWludCIpKSB7CiAgICAgICAgIHJldHVybiAiQXV0aERpZ2VzdFFvcCBhdXRoLWludCBpcyBub3Qg aW1wbGVtZW50ZWQiOwogICAgIH0KLSAgICBlbHNlIGlmIChzdHJjYXNlY21wKG9wLCAiYXV0aCIp KSB7CisgICAgZWxzZSBpZiAoYXBfY2FzZWNtcHN0cihvcCwgImF1dGgiKSkgewogICAgICAgICBy ZXR1cm4gYXByX3BzdHJjYXQoY21kLT5wb29sLCAiVW5yZWNvZ25pemVkIHFvcDogIiwgb3AsIE5V TEwpOwogICAgIH0KIApAQCAtNTk0LDcgKzU5NCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpzZXRf YWxnb3JpdGhtKGNtZF9wYXJtcyAqY21kLCB2CiAgICAgICAgIHJldHVybiAiQXV0aERpZ2VzdEFs Z29yaXRobTogRVJST1I6IGFsZ29yaXRobSBgTUQ1LXNlc3MnICIKICAgICAgICAgICAgICAgICAi aXMgbm90IGZ1bGx5IGltcGxlbWVudGVkIjsKICAgICB9Ci0gICAgZWxzZSBpZiAoc3RyY2FzZWNt cChhbGcsICJNRDUiKSkgeworICAgIGVsc2UgaWYgKGFwX2Nhc2VjbXBzdHIoYWxnLCAiTUQ1Iikp IHsKICAgICAgICAgcmV0dXJuIGFwcl9wc3RyY2F0KGNtZC0+cG9vbCwgIkludmFsaWQgYWxnb3Jp dGhtIGluIEF1dGhEaWdlc3RBbGdvcml0aG06ICIsIGFsZywgTlVMTCk7CiAgICAgfQogCkBAIC04 OTMsNyArODkzLDcgQEAgc3RhdGljIGludCBnZXRfZGlnZXN0X3JlYyhyZXF1ZXN0X3JlYyAqciwg ZGlnZXN0X2gKICAgICB9CiAKICAgICByZXNwLT5zY2hlbWUgPSBhcF9nZXR3b3JkX3doaXRlKHIt PnBvb2wsICZhdXRoX2xpbmUpOwotICAgIGlmIChzdHJjYXNlY21wKHJlc3AtPnNjaGVtZSwgIkRp Z2VzdCIpKSB7CisgICAgaWYgKGFwX2Nhc2VjbXBzdHIocmVzcC0+c2NoZW1lLCAiRGlnZXN0Iikp IHsKICAgICAgICAgcmVzcC0+YXV0aF9oZHJfc3RzID0gTk9UX0RJR0VTVDsKICAgICAgICAgcmV0 dXJuICFPSzsKICAgICB9CkBAIC05NTcsMjUgKzk1NywyNSBAQCBzdGF0aWMgaW50IGdldF9kaWdl c3RfcmVjKHJlcXVlc3RfcmVjICpyLCBkaWdlc3RfaAogICAgICAgICAgICAgYXV0aF9saW5lKys7 CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXN0cmNhc2VjbXAoa2V5LCAidXNlcm5hbWUiKSkK KyAgICAgICAgaWYgKCFhcF9jYXNlY21wc3RyKGtleSwgInVzZXJuYW1lIikpCiAgICAgICAgICAg ICByZXNwLT51c2VybmFtZSA9IGFwcl9wc3RyZHVwKHItPnBvb2wsIHZhbHVlKTsKLSAgICAgICAg ZWxzZSBpZiAoIXN0cmNhc2VjbXAoa2V5LCAicmVhbG0iKSkKKyAgICAgICAgZWxzZSBpZiAoIWFw X2Nhc2VjbXBzdHIoa2V5LCAicmVhbG0iKSkKICAgICAgICAgICAgIHJlc3AtPnJlYWxtID0gYXBy X3BzdHJkdXAoci0+cG9vbCwgdmFsdWUpOwotICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcChr ZXksICJub25jZSIpKQorICAgICAgICBlbHNlIGlmICghYXBfY2FzZWNtcHN0cihrZXksICJub25j ZSIpKQogICAgICAgICAgICAgcmVzcC0+bm9uY2UgPSBhcHJfcHN0cmR1cChyLT5wb29sLCB2YWx1 ZSk7Ci0gICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wKGtleSwgInVyaSIpKQorICAgICAgICBl bHNlIGlmICghYXBfY2FzZWNtcHN0cihrZXksICJ1cmkiKSkKICAgICAgICAgICAgIHJlc3AtPnVy aSA9IGFwcl9wc3RyZHVwKHItPnBvb2wsIHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoIXN0cmNh c2VjbXAoa2V5LCAicmVzcG9uc2UiKSkKKyAgICAgICAgZWxzZSBpZiAoIWFwX2Nhc2VjbXBzdHIo a2V5LCAicmVzcG9uc2UiKSkKICAgICAgICAgICAgIHJlc3AtPmRpZ2VzdCA9IGFwcl9wc3RyZHVw KHItPnBvb2wsIHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAoa2V5LCAiYWxn b3JpdGhtIikpCisgICAgICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3RyKGtleSwgImFsZ29yaXRo bSIpKQogICAgICAgICAgICAgcmVzcC0+YWxnb3JpdGhtID0gYXByX3BzdHJkdXAoci0+cG9vbCwg dmFsdWUpOwotICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcChrZXksICJjbm9uY2UiKSkKKyAg ICAgICAgZWxzZSBpZiAoIWFwX2Nhc2VjbXBzdHIoa2V5LCAiY25vbmNlIikpCiAgICAgICAgICAg ICByZXNwLT5jbm9uY2UgPSBhcHJfcHN0cmR1cChyLT5wb29sLCB2YWx1ZSk7Ci0gICAgICAgIGVs c2UgaWYgKCFzdHJjYXNlY21wKGtleSwgIm9wYXF1ZSIpKQorICAgICAgICBlbHNlIGlmICghYXBf Y2FzZWNtcHN0cihrZXksICJvcGFxdWUiKSkKICAgICAgICAgICAgIHJlc3AtPm9wYXF1ZSA9IGFw cl9wc3RyZHVwKHItPnBvb2wsIHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAo a2V5LCAicW9wIikpCisgICAgICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3RyKGtleSwgInFvcCIp KQogICAgICAgICAgICAgcmVzcC0+bWVzc2FnZV9xb3AgPSBhcHJfcHN0cmR1cChyLT5wb29sLCB2 YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wKGtleSwgIm5jIikpCisgICAgICAg IGVsc2UgaWYgKCFhcF9jYXNlY21wc3RyKGtleSwgIm5jIikpCiAgICAgICAgICAgICByZXNwLT5u b25jZV9jb3VudCA9IGFwcl9wc3RyZHVwKHItPnBvb2wsIHZhbHVlKTsKICAgICB9CiAKQEAgLTEy MzQsNyArMTIzNCw3IEBAIHN0YXRpYyB2b2lkIG5vdGVfZGlnZXN0X2F1dGhfZmFpbHVyZShyZXF1 ZXN0X3JlYyAqCiAgICAgaWYgKGFwcl9pc19lbXB0eV9hcnJheShjb25mLT5xb3BfbGlzdCkpIHsK ICAgICAgICAgcW9wID0gIiwgcW9wPVwiYXV0aFwiIjsKICAgICB9Ci0gICAgZWxzZSBpZiAoIXN0 cmNhc2VjbXAoKihjb25zdCBjaGFyICoqKShjb25mLT5xb3BfbGlzdC0+ZWx0cyksICJub25lIikp IHsKKyAgICBlbHNlIGlmICghYXBfY2FzZWNtcHN0cigqKGNvbnN0IGNoYXIgKiopKGNvbmYtPnFv cF9saXN0LT5lbHRzKSwgIm5vbmUiKSkgewogICAgICAgICBxb3AgPSAiIjsKICAgICB9CiAgICAg ZWxzZSB7CkBAIC0xMzMzLDcgKzEzMzMsNyBAQCBzdGF0aWMgaW50IGhvb2tfbm90ZV9kaWdlc3Rf YXV0aF9mYWlsdXJlKHJlcXVlc3RfcgogICAgIGRpZ2VzdF9oZWFkZXJfcmVjICpyZXNwOwogICAg IGRpZ2VzdF9jb25maWdfcmVjICpjb25mOwogCi0gICAgaWYgKHN0cmNhc2VjbXAoYXV0aF90eXBl LCAiRGlnZXN0IikpCisgICAgaWYgKGFwX2Nhc2VjbXBzdHIoYXV0aF90eXBlLCAiRGlnZXN0Iikp CiAgICAgICAgIHJldHVybiBERUNMSU5FRDsKIAogICAgIC8qIGdldCB0aGUgY2xpZW50IHJlc3Bv bnNlIGFuZCBtYXJrICovCkBAIC0xNDQzLDcgKzE0NDMsNyBAQCBzdGF0aWMgaW50IGNoZWNrX25j KGNvbnN0IHJlcXVlc3RfcmVjICpyLCBjb25zdCBkaQogICAgIH0KIAogICAgIGlmICghYXByX2lz X2VtcHR5X2FycmF5KGNvbmYtPnFvcF9saXN0KSAmJgotICAgICAgICAhc3RyY2FzZWNtcCgqKGNv bnN0IGNoYXIgKiopKGNvbmYtPnFvcF9saXN0LT5lbHRzKSwgIm5vbmUiKSkgeworICAgICAgICAh YXBfY2FzZWNtcHN0cigqKGNvbnN0IGNoYXIgKiopKGNvbmYtPnFvcF9saXN0LT5lbHRzKSwgIm5v bmUiKSkgewogICAgICAgICAvKiBxb3AgaXMgbm9uZSwgY2xpZW50IG11c3Qgbm90IHNlbmQgYSBu b25jZSBjb3VudCAqLwogICAgICAgICBpZiAoc25jICE9IE5VTEwpIHsKICAgICAgICAgICAgIGFw X2xvZ19yZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfRVJSLCAwLCByLCBBUExPR05PKDAxNzcyKQpA QCAtMTY2MCw3ICsxNjYwLDcgQEAgc3RhdGljIGludCBhdXRoZW50aWNhdGVfZGlnZXN0X3VzZXIo cmVxdWVzdF9yZWMgKnIKIAogICAgIC8qIGRvIHdlIHJlcXVpcmUgRGlnZXN0IGF1dGggZm9yIHRo aXMgVVJJPyAqLwogCi0gICAgaWYgKCEodCA9IGFwX2F1dGhfdHlwZShyKSkgfHwgc3RyY2FzZWNt cCh0LCAiRGlnZXN0IikpIHsKKyAgICBpZiAoISh0ID0gYXBfYXV0aF90eXBlKHIpKSB8fCBhcF9j YXNlY21wc3RyKHQsICJEaWdlc3QiKSkgewogICAgICAgICByZXR1cm4gREVDTElORUQ7CiAgICAg fQogCkBAIC0xODI4LDggKzE4MjgsOCBAQCBzdGF0aWMgaW50IGF1dGhlbnRpY2F0ZV9kaWdlc3Rf dXNlcihyZXF1ZXN0X3JlYyAqcgogICAgIH0KIAogICAgIGlmIChyZXNwLT5hbGdvcml0aG0gIT0g TlVMTAotICAgICAgICAmJiBzdHJjYXNlY21wKHJlc3AtPmFsZ29yaXRobSwgIk1ENSIpCi0gICAg ICAgICYmIHN0cmNhc2VjbXAocmVzcC0+YWxnb3JpdGhtLCAiTUQ1LXNlc3MiKSkgeworICAgICAg ICAmJiBhcF9jYXNlY21wc3RyKHJlc3AtPmFsZ29yaXRobSwgIk1ENSIpCisgICAgICAgICYmIGFw X2Nhc2VjbXBzdHIocmVzcC0+YWxnb3JpdGhtLCAiTUQ1LXNlc3MiKSkgewogICAgICAgICBhcF9s b2dfcmVycm9yKEFQTE9HX01BUkssIEFQTE9HX0VSUiwgMCwgciwgQVBMT0dOTygwMTc4OSkKICAg ICAgICAgICAgICAgICAgICAgICAidW5rbm93biBhbGdvcml0aG0gYCVzJyByZWNlaXZlZDogJXMi LAogICAgICAgICAgICAgICAgICAgICAgIHJlc3AtPmFsZ29yaXRobSwgci0+dXJpKTsKQEAgLTE4 ODAsNyArMTg4MCw3IEBAIHN0YXRpYyBpbnQgYXV0aGVudGljYXRlX2RpZ2VzdF91c2VyKHJlcXVl c3RfcmVjICpyCiAgICAgICAgIGludCBtYXRjaCA9IDAsIGlkeDsKICAgICAgICAgY29uc3QgY2hh ciAqKnRtcCA9IChjb25zdCBjaGFyICoqKShjb25mLT5xb3BfbGlzdC0+ZWx0cyk7CiAgICAgICAg IGZvciAoaWR4ID0gMDsgaWR4IDwgY29uZi0+cW9wX2xpc3QtPm5lbHRzOyBpZHgrKykgewotICAg ICAgICAgICAgaWYgKCFzdHJjYXNlY21wKCp0bXAsIHJlc3AtPm1lc3NhZ2VfcW9wKSkgeworICAg ICAgICAgICAgaWYgKCFhcF9jYXNlY21wc3RyKCp0bXAsIHJlc3AtPm1lc3NhZ2VfcW9wKSkgewog ICAgICAgICAgICAgICAgIG1hdGNoID0gMTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgICAgIH0KQEAgLTE4ODksNyArMTg4OSw3IEBAIHN0YXRpYyBpbnQgYXV0aGVudGljYXRlX2Rp Z2VzdF91c2VyKHJlcXVlc3RfcmVjICpyCiAKICAgICAgICAgaWYgKCFtYXRjaAogICAgICAgICAg ICAgJiYgIShhcHJfaXNfZW1wdHlfYXJyYXkoY29uZi0+cW9wX2xpc3QpCi0gICAgICAgICAgICAg ICAgICYmICFzdHJjYXNlY21wKHJlc3AtPm1lc3NhZ2VfcW9wLCAiYXV0aCIpKSkgeworICAgICAg ICAgICAgICAgICAmJiAhYXBfY2FzZWNtcHN0cihyZXNwLT5tZXNzYWdlX3FvcCwgImF1dGgiKSkp IHsKICAgICAgICAgICAgIGFwX2xvZ19yZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfRVJSLCAwLCBy LCBBUExPR05PKDAxNzkzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBxb3Ag YCVzJyByZWNlaXZlZDogJXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwLT5tZXNz YWdlX3FvcCwgci0+dXJpKTsKQEAgLTE5NzEsNyArMTk3MSw3IEBAIHN0YXRpYyBpbnQgYWRkX2F1 dGhfaW5mbyhyZXF1ZXN0X3JlYyAqcikKICAgICAvKiBkbyByZmMtMjA2OSBkaWdlc3QKICAgICAg Ki8KICAgICBpZiAoIWFwcl9pc19lbXB0eV9hcnJheShjb25mLT5xb3BfbGlzdCkgJiYKLSAgICAg ICAgIXN0cmNhc2VjbXAoKihjb25zdCBjaGFyICoqKShjb25mLT5xb3BfbGlzdC0+ZWx0cyksICJu b25lIikKKyAgICAgICAgIWFwX2Nhc2VjbXBzdHIoKihjb25zdCBjaGFyICoqKShjb25mLT5xb3Bf bGlzdC0+ZWx0cyksICJub25lIikKICAgICAgICAgJiYgcmVzcC0+bWVzc2FnZV9xb3AgPT0gTlVM TCkgewogICAgICAgICAvKiB1c2Ugb25seSBSRkMtMjA2OSBmb3JtYXQgKi8KICAgICAgICAgYWkg PSBuZXh0bm9uY2U7CkluZGV4OiBtb2R1bGVzL2FhYS9tb2RfYXV0aF9mb3JtLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gbW9kdWxlcy9hYWEvbW9kX2F1dGhfZm9ybS5jCShyZXZpc2lvbiAxNzIyMTQzKQorKysg bW9kdWxlcy9hYWEvbW9kX2F1dGhfZm9ybS5jCSh3b3JraW5nIGNvcHkpCkBAIC00MjAsNyArNDIw LDcgQEAgc3RhdGljIHZvaWQgbm90ZV9jb29raWVfYXV0aF9mYWlsdXJlKHJlcXVlc3RfcmVjICoK IHN0YXRpYyBpbnQgaG9va19ub3RlX2Nvb2tpZV9hdXRoX2ZhaWx1cmUocmVxdWVzdF9yZWMgKiBy LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICph dXRoX3R5cGUpCiB7Ci0gICAgaWYgKHN0cmNhc2VjbXAoYXV0aF90eXBlLCAiZm9ybSIpKQorICAg IGlmIChhcF9jYXNlY21wc3RyKGF1dGhfdHlwZSwgImZvcm0iKSkKICAgICAgICAgcmV0dXJuIERF Q0xJTkVEOwogCiAgICAgbm90ZV9jb29raWVfYXV0aF9mYWlsdXJlKHIpOwpAQCAtODkyLDcgKzg5 Miw3IEBAIHN0YXRpYyBpbnQgYXV0aGVudGljYXRlX2Zvcm1fYXV0aG4ocmVxdWVzdF9yZWMgKiBy CiAKICAgICAvKiBBcmUgd2UgY29uZmlndXJlZCB0byBiZSBGb3JtIGF1dGg/ICovCiAgICAgY3Vy cmVudF9hdXRoID0gYXBfYXV0aF90eXBlKHIpOwotICAgIGlmICghY3VycmVudF9hdXRoIHx8IHN0 cmNhc2VjbXAoY3VycmVudF9hdXRoLCAiZm9ybSIpKSB7CisgICAgaWYgKCFjdXJyZW50X2F1dGgg fHwgYXBfY2FzZWNtcHN0cihjdXJyZW50X2F1dGgsICJmb3JtIikpIHsKICAgICAgICAgcmV0dXJu IERFQ0xJTkVEOwogICAgIH0KIApJbmRleDogbW9kdWxlcy9hYWEvbW9kX2F1dGhuel9mY2dpLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gbW9kdWxlcy9hYWEvbW9kX2F1dGhuel9mY2dpLmMJKHJldmlzaW9uIDE3 MjIxNDMpCisrKyBtb2R1bGVzL2FhYS9tb2RfYXV0aG56X2ZjZ2kuYwkod29ya2luZyBjb3B5KQpA QCAtNjgxLDcgKzY4MSw3IEBAIHN0YXRpYyBpbnQgbW9kX2ZjZ2lkX21vZGlmeV9hdXRoX2hlYWRl cih2b2lkICp2YXJzCiAgICAgLyogV2hlbiB0aGUgYXBwbGljYXRpb24gZ2l2ZXMgYSAyMDAgcmVz cG9uc2UsIHRoZSBzZXJ2ZXIgaWdub3JlcyByZXNwb25zZQogICAgICAgIGhlYWRlcnMgd2hvc2Ug bmFtZXMgYXJlbid0IHByZWZpeGVkIHdpdGggVmFyaWFibGUtIHByZWZpeCwgYW5kIGlnbm9yZXMK ICAgICAgICBhbnkgcmVzcG9uc2UgY29udGVudCAqLwotICAgIGlmIChzdHJuY2FzZWNtcChrZXks ICJWYXJpYWJsZS0iLCA5KSA9PSAwKQorICAgIGlmIChhcF9jYXNlY21wc3RybihrZXksICJWYXJp YWJsZS0iLCA5KSA9PSAwKQogICAgICAgICBhcHJfdGFibGVfc2V0bih2YXJzLCBrZXksIHZhbCk7 CiAgICAgcmV0dXJuIDE7CiB9CkBAIC04MDksNyArODA5LDcgQEAgc3RhdGljIGludCBmY2dpX2No ZWNrX2F1dGhuKHJlcXVlc3RfcmVjICpyKQogCiAgICAgcHJvdiA9IGRjb25mICYmIGRjb25mLT5u YW1lID8gZGNvbmYtPm5hbWUgOiBOVUxMOwogCi0gICAgaWYgKCFwcm92IHx8ICFzdHJjYXNlY21w KHByb3YsICJOb25lIikpIHsKKyAgICBpZiAoIXByb3YgfHwgIWFwX2Nhc2VjbXBzdHIocHJvdiwg Ik5vbmUiKSkgewogICAgICAgICByZXR1cm4gREVDTElORUQ7CiAgICAgfQogCkBAIC04MjQsNyAr ODI0LDcgQEAgc3RhdGljIGludCBmY2dpX2NoZWNrX2F1dGhuKHJlcXVlc3RfcmVjICpyKQogICAg ICAgICAgICAgICAgICAgZGNvbmYtPnVzZXJfZXhwciA/ICJ5ZXMiIDogIm5vIiwKICAgICAgICAg ICAgICAgICAgIGF1dGhfdHlwZSk7CiAKLSAgICBpZiAoYXV0aF90eXBlICYmICFzdHJjYXNlY21w KGF1dGhfdHlwZSwgIkJhc2ljIikpIHsKKyAgICBpZiAoYXV0aF90eXBlICYmICFhcF9jYXNlY21w c3RyKGF1dGhfdHlwZSwgIkJhc2ljIikpIHsKICAgICAgICAgaWYgKChyZXMgPSBhcF9nZXRfYmFz aWNfYXV0aF9wdyhyLCAmcGFzc3dvcmQpKSkgewogICAgICAgICAgICAgYXBfbG9nX3JlcnJvcihB UExPR19NQVJLLCBBUExPR19ERUJVRywgMCwgciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg QVBMT0dOTygwMjUxNykgIiVzOiBjb3VsZG4ndCByZXRyaWV2ZSBiYXNpYyBhdXRoICIKSW5kZXg6 IG1vZHVsZXMvY2FjaGUvY2FjaGVfc3RvcmFnZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1vZHVsZXMvY2Fj aGUvY2FjaGVfc3RvcmFnZS5jCShyZXZpc2lvbiAxNzIyMTQzKQorKysgbW9kdWxlcy9jYWNoZS9j YWNoZV9zdG9yYWdlLmMJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCBpbnQgY2Fj aGVfY3JlYXRlX2VudGl0eShjYWNoZV9yZXF1ZXN0X3JlYyAqY2FjaGUsCiAKIHN0YXRpYyBpbnQg ZmlsdGVyX2hlYWRlcl9kbyh2b2lkICp2LCBjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZh bCkKIHsKLSAgICBpZiAoKCprZXkgPT0gJ1cnIHx8ICprZXkgPT0gJ3cnKSAmJiAhc3RyY2FzZWNt cChrZXksICJXYXJuaW5nIikKKyAgICBpZiAoKCprZXkgPT0gJ1cnIHx8ICprZXkgPT0gJ3cnKSAm JiAhYXBfY2FzZWNtcHN0cihrZXksICJXYXJuaW5nIikKICAgICAgICAgICAgICYmICp2YWwgPT0g JzEnKSB7CiAgICAgICAgIC8qIGFueSBzdG9yZWQgV2FybmluZyBoZWFkZXJzIHdpdGggd2Fybi1j b2RlIDF4eCAoc2VlIHNlY3Rpb24KICAgICAgICAgICogMTQuNDYpIE1VU1QgYmUgZGVsZXRlZCBm cm9tIHRoZSBjYWNoZSBlbnRyeSBhbmQgdGhlIGZvcndhcmRlZApAQCAtMTI5LDcgKzEyOSw3IEBA IHN0YXRpYyBpbnQgZmlsdGVyX2hlYWRlcl9kbyh2b2lkICp2LCBjb25zdCBjaGFyICprCiB9CiBz dGF0aWMgaW50IHJlbW92ZV9oZWFkZXJfZG8odm9pZCAqdiwgY29uc3QgY2hhciAqa2V5LCBjb25z dCBjaGFyICp2YWwpCiB7Ci0gICAgaWYgKCgqa2V5ID09ICdXJyB8fCAqa2V5ID09ICd3JykgJiYg IXN0cmNhc2VjbXAoa2V5LCAiV2FybmluZyIpKSB7CisgICAgaWYgKCgqa2V5ID09ICdXJyB8fCAq a2V5ID09ICd3JykgJiYgIWFwX2Nhc2VjbXBzdHIoa2V5LCAiV2FybmluZyIpKSB7CiAgICAgICAg IC8qIGFueSBzdG9yZWQgV2FybmluZyBoZWFkZXJzIHdpdGggd2Fybi1jb2RlIDJ4eCBNVVNUIGJl IHJldGFpbmVkCiAgICAgICAgICAqIGluIHRoZSBjYWNoZSBlbnRyeSBhbmQgdGhlIGZvcndhcmRl ZCByZXNwb25zZS4KICAgICAgICAgICovCkluZGV4OiBtb2R1bGVzL2NhY2hlL2NhY2hlX3V0aWwu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBtb2R1bGVzL2NhY2hlL2NhY2hlX3V0aWwuYwkocmV2aXNpb24gMTcy MjE0MykKKysrIG1vZHVsZXMvY2FjaGUvY2FjaGVfdXRpbC5jCSh3b3JraW5nIGNvcHkpCkBAIC01 NSw3ICs1NSw3IEBAIHN0YXRpYyBpbnQgdXJpX21lZXRzX2NvbmRpdGlvbnMoY29uc3QgYXByX3Vy aV90ICpmCiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBUaGUgVVJJIHNjaGVtZSBtdXN0 IGJlIHByZXNlbnQgYW5kIGlkZW50aWNhbCBleGNlcHQgZm9yIGNhc2UuICovCi0gICAgICAgIGlm ICghdXJsLT5zY2hlbWUgfHwgc3RyY2FzZWNtcChmaWx0ZXItPnNjaGVtZSwgdXJsLT5zY2hlbWUp KSB7CisgICAgICAgIGlmICghdXJsLT5zY2hlbWUgfHwgYXBfY2FzZWNtcHN0cihmaWx0ZXItPnNj aGVtZSwgdXJsLT5zY2hlbWUpKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQog CkBAIC05NzYsMTQgKzk3Niw5IEBAIGludCBhcF9jYWNoZV9jb250cm9sKHJlcXVlc3RfcmVjICpy LCBjYWNoZV9jb250cm9sCiAgICAgICAgIGNoYXIgKmhlYWRlciA9IGFwcl9wc3RyZHVwKHItPnBv b2wsIHByYWdtYV9oZWFkZXIpOwogICAgICAgICBjb25zdCBjaGFyICp0b2tlbiA9IGNhY2hlX3N0 cnF0b2soaGVhZGVyLCBDQUNIRV9TRVBBUkFUT1IsICZsYXN0KTsKICAgICAgICAgd2hpbGUgKHRv a2VuKSB7Ci0gICAgICAgICAgICAvKiBoYW5kbGUgbW9zdCBjb21tb24gcXVpY2tlc3QgY2FzZS4u LiAqLwotICAgICAgICAgICAgaWYgKCFzdHJjbXAodG9rZW4sICJuby1jYWNoZSIpKSB7CisgICAg ICAgICAgICBpZiAoIWFwX2Nhc2VjbXBzdHIodG9rZW4sICJuby1jYWNoZSIpKSB7CiAgICAgICAg ICAgICAgICAgY2MtPm5vX2NhY2hlID0gMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8q IC4uLnRoZW4gdHJ5IHNsb3dlc3QgY2FzZSAqLwotICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNh c2VjbXAodG9rZW4sICJuby1jYWNoZSIpKSB7Ci0gICAgICAgICAgICAgICAgY2MtPm5vX2NhY2hl ID0gMTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRva2VuID0gY2FjaGVfc3RycXRvayhO VUxMLCBDQUNIRV9TRVBBUkFUT1IsICZsYXN0KTsKICAgICAgICAgfQogICAgICAgICBjYy0+cHJh Z21hID0gMTsKQEAgLTk5NiwxNSArOTkxLDcgQEAgaW50IGFwX2NhY2hlX2NvbnRyb2wocmVxdWVz dF9yZWMgKnIsIGNhY2hlX2NvbnRyb2wKICAgICAgICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHsK ICAgICAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgY2FzZSAnTic6IHsKLSAgICAgICAg ICAgICAgICAvKiBoYW5kbGUgbW9zdCBjb21tb24gcXVpY2tlc3QgY2FzZXMuLi4gKi8KLSAgICAg ICAgICAgICAgICBpZiAoIXN0cmNtcCh0b2tlbiwgIm5vLWNhY2hlIikpIHsKLSAgICAgICAgICAg ICAgICAgICAgY2MtPm5vX2NhY2hlID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgICAgZWxzZSBpZiAoIXN0cmNtcCh0b2tlbiwgIm5vLXN0b3JlIikpIHsKLSAgICAgICAgICAg ICAgICAgICAgY2MtPm5vX3N0b3JlID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgICAgLyogLi4udGhlbiB0cnkgc2xvd2VzdCBjYXNlcyAqLwotICAgICAgICAgICAgICAgIGVs c2UgaWYgKCFzdHJuY2FzZWNtcCh0b2tlbiwgIm5vLWNhY2hlIiwgOCkpIHsKKyAgICAgICAgICAg ICAgICBpZiAoIWFwX2Nhc2VjbXBzdHJuKHRva2VuLCAibm8tY2FjaGUiLCA4KSkgewogICAgICAg ICAgICAgICAgICAgICBpZiAodG9rZW5bOF0gPT0gJz0nKSB7CiAgICAgICAgICAgICAgICAgICAg ICAgICBjYy0+bm9fY2FjaGVfaGVhZGVyID0gMTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAt MTAxMSwxMiArOTk4LDExIEBAIGludCBhcF9jYWNoZV9jb250cm9sKHJlcXVlc3RfcmVjICpyLCBj YWNoZV9jb250cm9sCiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0b2tlbls4XSkgewog ICAgICAgICAgICAgICAgICAgICAgICAgY2MtPm5vX2NhY2hlID0gMTsKICAgICAgICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAodG9rZW4sICJuby1zdG9yZSIpKSB7 CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWFwX2Nhc2VjbXBzdHIodG9rZW4sICJuby1zdG9y ZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNjLT5ub19zdG9yZSA9IDE7CiAgICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wKHRva2VuLCAibm8t dHJhbnNmb3JtIikpIHsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICghYXBfY2FzZWNtcHN0cih0 b2tlbiwgIm5vLXRyYW5zZm9ybSIpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNjLT5ub190cmFu c2Zvcm0gPSAxOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAg LTEwMjMsMjMgKzEwMDksMTYgQEAgaW50IGFwX2NhY2hlX2NvbnRyb2wocmVxdWVzdF9yZWMgKnIs IGNhY2hlX2NvbnRyb2wKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgJ20nOgogICAg ICAgICAgICAgY2FzZSAnTSc6IHsKLSAgICAgICAgICAgICAgICAvKiBoYW5kbGUgbW9zdCBjb21t b24gcXVpY2tlc3QgY2FzZXMuLi4gKi8KLSAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcCh0b2tl biwgIm1heC1hZ2U9MCIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNjLT5tYXhfYWdlID0gMTsK LSAgICAgICAgICAgICAgICAgICAgY2MtPm1heF9hZ2VfdmFsdWUgPSAwOwotICAgICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKHRva2VuLCAibXVzdC1yZXZh bGlkYXRlIikpIHsKLSAgICAgICAgICAgICAgICAgICAgY2MtPm11c3RfcmV2YWxpZGF0ZSA9IDE7 Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIC4uLnRoZW4gdHJ5IHNsb3dl c3QgY2FzZXMgKi8KLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RybmNhc2VjbXAodG9rZW4s ICJtYXgtYWdlIiwgNykpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWFwX2Nhc2VjbXBzdHJuKHRv a2VuLCAibWF4LWFnZSIsIDcpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbls3XSA9 PSAnPScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNjLT5tYXhfYWdlID0gMTsKICAgICAg ICAgICAgICAgICAgICAgICAgIGNjLT5tYXhfYWdlX3ZhbHVlID0gYXByX2F0b2k2NCh0b2tlbiAr IDgpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RybmNhc2VjbXAo dG9rZW4sICJtYXgtc3RhbGUiLCA5KSkgeworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFhcF9j YXNlY21wc3RyKHRva2VuLCAibXVzdC1yZXZhbGlkYXRlIikpIHsKKyAgICAgICAgICAgICAgICAg ICAgY2MtPm11c3RfcmV2YWxpZGF0ZSA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3Rybih0b2tlbiwgIm1heC1zdGFsZSIsIDkpKSB7 CiAgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbls5XSA9PSAnPScpIHsKICAgICAgICAgICAg ICAgICAgICAgICAgIGNjLT5tYXhfc3RhbGUgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAg Y2MtPm1heF9zdGFsZV92YWx1ZSA9IGFwcl9hdG9pNjQodG9rZW4gKyAxMCk7CkBAIC0xMDQ4LDIz ICsxMDI3LDE4IEBAIGludCBhcF9jYWNoZV9jb250cm9sKHJlcXVlc3RfcmVjICpyLCBjYWNoZV9j b250cm9sCiAgICAgICAgICAgICAgICAgICAgICAgICBjYy0+bWF4X3N0YWxlID0gMTsKICAgICAg ICAgICAgICAgICAgICAgICAgIGNjLT5tYXhfc3RhbGVfdmFsdWUgPSAtMTsKICAgICAgICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cm5jYXNlY21wKHRva2VuLCAibWluLWZyZXNo IiwgOSkpIHsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICghYXBfY2FzZWNtcHN0cm4odG9rZW4s ICJtaW4tZnJlc2giLCA5KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW5bOV0gPT0g Jz0nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYy0+bWluX2ZyZXNoID0gMTsKICAgICAg ICAgICAgICAgICAgICAgICAgIGNjLT5taW5fZnJlc2hfdmFsdWUgPSBhcHJfYXRvaTY0KHRva2Vu ICsgMTApOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNt cCh0b2tlbiwgIm11c3QtcmV2YWxpZGF0ZSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNjLT5t dXN0X3JldmFsaWRhdGUgPSAxOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgJ28nOgogICAgICAgICAgICAg Y2FzZSAnTyc6IHsKLSAgICAgICAgICAgICAgICBpZiAoIXN0cmNhc2VjbXAodG9rZW4sICJvbmx5 LWlmLWNhY2hlZCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFhcF9jYXNlY21wc3RyKHRva2Vu LCAib25seS1pZi1jYWNoZWQiKSkgewogICAgICAgICAgICAgICAgICAgICBjYy0+b25seV9pZl9j YWNoZWQgPSAxOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAg LTEwNzEsMTUgKzEwNDUsMTAgQEAgaW50IGFwX2NhY2hlX2NvbnRyb2wocmVxdWVzdF9yZWMgKnIs IGNhY2hlX2NvbnRyb2wKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgJ3AnOgogICAg ICAgICAgICAgY2FzZSAnUCc6IHsKLSAgICAgICAgICAgICAgICAvKiBoYW5kbGUgbW9zdCBjb21t b24gcXVpY2tlc3QgY2FzZXMuLi4gKi8KLSAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcCh0b2tl biwgInByaXZhdGUiKSkgewotICAgICAgICAgICAgICAgICAgICBjYy0+cHJpdmF0ZSA9IDE7Ci0g ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIC4uLnRoZW4gdHJ5IHNsb3dlc3Qg Y2FzZXMgKi8KLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCh0b2tlbiwgInB1 YmxpYyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFhcF9jYXNlY21wc3RyKHRva2VuLCAicHVi bGljIikpIHsKICAgICAgICAgICAgICAgICAgICAgY2MtPnB1YmxpYyA9IDE7CiAgICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJuY2FzZWNtcCh0b2tlbiwgInBy aXZhdGUiLCA3KSkgeworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3Rybih0 b2tlbiwgInByaXZhdGUiLCA3KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW5bN10g PT0gJz0nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYy0+cHJpdmF0ZV9oZWFkZXIgPSAx OwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMDg2LDkgKzEwNTUsOCBAQCBpbnQgYXBfY2Fj aGVfY29udHJvbChyZXF1ZXN0X3JlYyAqciwgY2FjaGVfY29udHJvbAogICAgICAgICAgICAgICAg ICAgICBlbHNlIGlmICghdG9rZW5bN10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNjLT5w cml2YXRlID0gMTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNh c2VjbXAodG9rZW4sICJwcm94eS1yZXZhbGlkYXRlIikpIHsKKyAgICAgICAgICAgICAgICBlbHNl IGlmICghYXBfY2FzZWNtcHN0cih0b2tlbiwgInByb3h5LXJldmFsaWRhdGUiKSkgewogICAgICAg ICAgICAgICAgICAgICBjYy0+cHJveHlfcmV2YWxpZGF0ZSA9IDE7CiAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA5NSwxMiArMTA2MywxMSBAQCBpbnQgYXBf Y2FjaGVfY29udHJvbChyZXF1ZXN0X3JlYyAqciwgY2FjaGVfY29udHJvbAogICAgICAgICAgICAg fQogICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICBjYXNlICdTJzogewotICAgICAg ICAgICAgICAgIGlmICghc3RybmNhc2VjbXAodG9rZW4sICJzLW1heGFnZSIsIDgpKSB7CisgICAg ICAgICAgICAgICAgaWYgKCFhcF9jYXNlY21wc3Rybih0b2tlbiwgInMtbWF4YWdlIiwgOCkpIHsK ICAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuWzhdID09ICc9JykgewogICAgICAgICAgICAg ICAgICAgICAgICAgY2MtPnNfbWF4YWdlID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNj LT5zX21heGFnZV92YWx1ZSA9IGFwcl9hdG9pNjQodG9rZW4gKyA5KTsKICAgICAgICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xMTMwLDggKzEwOTcsNyBA QCBzdGF0aWMgaW50IGNhY2hlX2NvbnRyb2xfcmVtb3ZlKHJlcXVlc3RfcmVjICpyLCBjbwogICAg ICAgICAgICAgc3dpdGNoICh0b2tlblswXSkgewogICAgICAgICAgICAgY2FzZSAnbic6CiAgICAg ICAgICAgICBjYXNlICdOJzogewotICAgICAgICAgICAgICAgIGlmICghc3RybmNtcCh0b2tlbiwg Im5vLWNhY2hlIiwgOCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFzdHJuY2FzZWNtcCh0 b2tlbiwgIm5vLWNhY2hlIiwgOCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWFwX2Nhc2VjbXBz dHJuKHRva2VuLCAibm8tY2FjaGUiLCA4KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAodG9r ZW5bOF0gPT0gJz0nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpoZWFk ZXIgPSBjYWNoZV9zdHJxdG9rKHRva2VuICsgOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ0FDSEVfU0VQQVJBVE9SICJcIiIsICZzbGFzdCk7CkBAIC0xMTQ4LDggKzExMTQsNyBA QCBzdGF0aWMgaW50IGNhY2hlX2NvbnRyb2xfcmVtb3ZlKHJlcXVlc3RfcmVjICpyLCBjbwogICAg ICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSAncCc6CiAgICAgICAgICAgICBjYXNlICdQJzog ewotICAgICAgICAgICAgICAgIGlmICghc3RybmNtcCh0b2tlbiwgInByaXZhdGUiLCA3KQotICAg ICAgICAgICAgICAgICAgICAgICAgfHwgIXN0cm5jYXNlY21wKHRva2VuLCAicHJpdmF0ZSIsIDcp KSB7CisgICAgICAgICAgICAgICAgaWYgKCFhcF9jYXNlY21wc3Rybih0b2tlbiwgInByaXZhdGUi LCA3KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW5bN10gPT0gJz0nKSB7CiAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpoZWFkZXIgPSBjYWNoZV9zdHJxdG9rKHRv a2VuICsgOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FDSEVfU0VQQVJBVE9S ICJcIiIsICZzbGFzdCk7CkluZGV4OiBtb2R1bGVzL2Rhdi9tYWluL21vZF9kYXYuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBtb2R1bGVzL2Rhdi9tYWluL21vZF9kYXYuYwkocmV2aXNpb24gMTcyMjE0MykKKysr IG1vZHVsZXMvZGF2L21haW4vbW9kX2Rhdi5jCSh3b3JraW5nIGNvcHkpCkBAIC02NTEsNyArNjUx LDcgQEAgREFWX0RFQ0xBUkUoaW50KSBkYXZfZ2V0X2RlcHRoKHJlcXVlc3RfcmVjICpyLCBpbnQK ICAgICAgICAgcmV0dXJuIGRlZl9kZXB0aDsKICAgICB9CiAKLSAgICBpZiAoc3RyY2FzZWNtcChk ZXB0aCwgImluZmluaXR5IikgPT0gMCkgeworICAgIGlmIChhcF9jYXNlY21wc3RyKGRlcHRoLCAi aW5maW5pdHkiKSA9PSAwKSB7CiAgICAgICAgIHJldHVybiBEQVZfSU5GSU5JVFk7CiAgICAgfQog ICAgIGVsc2UgaWYgKHN0cmNtcChkZXB0aCwgIjAiKSA9PSAwKSB7CkBAIC03ODEsNyArNzgxLDcg QEAgc3RhdGljIGludCBkYXZfcGFyc2VfcmFuZ2UocmVxdWVzdF9yZWMgKnIsCiAgICAgICAgIHJl dHVybiAwOwogCiAgICAgcmFuZ2UgPSBhcHJfcHN0cmR1cChyLT5wb29sLCByYW5nZV9jKTsKLSAg ICBpZiAoc3RybmNhc2VjbXAocmFuZ2UsICJieXRlcyAiLCA2KSAhPSAwCisgICAgaWYgKGFwX2Nh c2VjbXBzdHJuKHJhbmdlLCAiYnl0ZXMgIiwgNikgIT0gMAogICAgICAgICB8fCAoZGFzaCA9IGFw X3N0cmNocihyYW5nZSwgJy0nKSkgPT0gTlVMTAogICAgICAgICB8fCAoc2xhc2ggPSBhcF9zdHJj aHIocmFuZ2UsICcvJykpID09IE5VTEwpIHsKICAgICAgICAgLyogbWFsZm9ybWVkIGhlYWRlciAq LwpAQCAtMjQ1MSw3ICsyNDUxLDcgQEAgc3RhdGljIGludCBwcm9jZXNzX21rY29sX2JvZHkocmVx dWVzdF9yZWMgKnIpCiAgICAgci0+cmVtYWluaW5nID0gMDsKIAogICAgIGlmICh0ZW5jKSB7Ci0g ICAgICAgIGlmIChzdHJjYXNlY21wKHRlbmMsICJjaHVua2VkIikpIHsKKyAgICAgICAgaWYgKGFw X2Nhc2VjbXBzdHIodGVuYywgImNodW5rZWQiKSkgewogICAgICAgICAgICAgLyogVXNlIHRoaXMg aW5zdGVhZCBvZiBBcGFjaGUncyBkZWZhdWx0IGVycm9yIHN0cmluZyAqLwogICAgICAgICAgICAg YXBfbG9nX3JlcnJvcihBUExPR19NQVJLLCBBUExPR19FUlIsIDAsIHIsIEFQTE9HTk8oMDA1ODkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIFRyYW5zZmVyLUVuY29kaW5nICVz IiwgdGVuYyk7CkluZGV4OiBtb2R1bGVzL2Rhdi9tYWluL3V0aWwuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBt b2R1bGVzL2Rhdi9tYWluL3V0aWwuYwkocmV2aXNpb24gMTcyMjE0MykKKysrIG1vZHVsZXMvZGF2 L21haW4vdXRpbC5jCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNyArMjQwLDcgQEAgREFWX0RFQ0xB UkUoZGF2X2xvb2t1cF9yZXN1bHQpIGRhdl9sb29rdXBfdXJpKGNvbnMKICAgICAgICAgICAgcmVx dWVzdC4gdGhlIHBvcnQgbXVzdCBtYXRjaCBvdXIgcG9ydC4KICAgICAgICAgKi8KICAgICAgICAg cG9ydCA9IHItPmNvbm5lY3Rpb24tPmxvY2FsX2FkZHItPnBvcnQ7Ci0gICAgICAgIGlmIChzdHJj YXNlY21wKGNvbXAuc2NoZW1lLCBzY2hlbWUpICE9IDAKKyAgICAgICAgaWYgKGFwX2Nhc2VjbXBz dHIoY29tcC5zY2hlbWUsIHNjaGVtZSkgIT0gMAogI2lmZGVmIEFQQUNIRV9QT1JUX0hBTkRMSU5H X0lTX0JVU1RFRAogICAgICAgICAgICAgfHwgY29tcC5wb3J0ICE9IHBvcnQKICNlbmRpZgpJbmRl eDogbW9kdWxlcy9maWx0ZXJzL21vZF9jaGFyc2V0X2xpdGUuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtb2R1 bGVzL2ZpbHRlcnMvbW9kX2NoYXJzZXRfbGl0ZS5jCShyZXZpc2lvbiAxNzIyMTQzKQorKysgbW9k dWxlcy9maWx0ZXJzL21vZF9jaGFyc2V0X2xpdGUuYwkod29ya2luZyBjb3B5KQpAQCAtNzkwLDcg Kzc5MCw3IEBAIHN0YXRpYyBhcHJfc3RhdHVzX3QgeGxhdGVfb3V0X2ZpbHRlcihhcF9maWx0ZXJf dCAqCiAgICAgaWYgKCFjdHgtPm5vb3AgJiYgY3R4LT54bGF0ZSA9PSBOVUxMKSB7CiAgICAgICAg IGNvbnN0IGNoYXIgKm1pbWVfdHlwZSA9IGYtPnItPmNvbnRlbnRfdHlwZTsKIAotICAgICAgICBp ZiAobWltZV90eXBlICYmIChzdHJuY2FzZWNtcChtaW1lX3R5cGUsICJ0ZXh0LyIsIDUpID09IDAg fHwKKyAgICAgICAgaWYgKG1pbWVfdHlwZSAmJiAoYXBfY2FzZWNtcHN0cm4obWltZV90eXBlLCAi dGV4dC8iLCA1KSA9PSAwIHx8CiAjaWYgQVBSX0NIQVJTRVRfRUJDRElDCiAgICAgICAgIC8qIE9u IGFuIEVCQ0RJQyBtYWNoaW5lLCBiZSB3aWxsaW5nIHRvIHRyYW5zbGF0ZSBtb2RfYXV0b2luZGV4 LQogICAgICAgICAgKiBnZW5lcmF0ZWQgb3V0cHV0LiAgT3RoZXJ3aXNlLCBpdCBkb2Vzbid0IGxv b2sgdG9vIGNvb2wuCkBAIC04MDYsNyArODA2LDcgQEAgc3RhdGljIGFwcl9zdGF0dXNfdCB4bGF0 ZV9vdXRfZmlsdGVyKGFwX2ZpbHRlcl90ICoKICAgICAgICAgICovCiAgICAgICAgICAgICBzdHJj bXAobWltZV90eXBlLCBESVJfTUFHSUNfVFlQRSkgPT0gMCB8fAogI2VuZGlmCi0gICAgICAgICAg ICBzdHJuY2FzZWNtcChtaW1lX3R5cGUsICJtZXNzYWdlLyIsIDgpID09IDAgfHwKKyAgICAgICAg ICAgIGFwX2Nhc2VjbXBzdHJuKG1pbWVfdHlwZSwgIm1lc3NhZ2UvIiwgOCkgPT0gMCB8fAogICAg ICAgICAgICAgZGMtPmZvcmNlX3hsYXRlID09IEZYX0ZPUkNFKSkgewogCiAgICAgICAgICAgICBy diA9IGFwcl94bGF0ZV9vcGVuKCZjdHgtPnhsYXRlLApJbmRleDogbW9kdWxlcy9maWx0ZXJzL21v ZF9kZWZsYXRlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gbW9kdWxlcy9maWx0ZXJzL21vZF9kZWZsYXRlLmMJ KHJldmlzaW9uIDE3MjIxNDMpCisrKyBtb2R1bGVzL2ZpbHRlcnMvbW9kX2RlZmxhdGUuYwkod29y a2luZyBjb3B5KQpAQCAtMTE4LDggKzExOCw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfZ3ppcChyZXF1 ZXN0X3JlYyAqciwgYXByX3RhYmxlX3QKICAgICBpZiAoZW5jb2RpbmcgJiYgKmVuY29kaW5nKSB7 CiAKICAgICAgICAgLyogY2hlY2sgdGhlIHVzdWFsL3NpbXBsZSBjYXNlIGZpcnN0ICovCi0gICAg ICAgIGlmICghc3RyY2FzZWNtcChlbmNvZGluZywgImd6aXAiKQotICAgICAgICAgICAgfHwgIXN0 cmNhc2VjbXAoZW5jb2RpbmcsICJ4LWd6aXAiKSkgeworICAgICAgICBpZiAoIWFwX2Nhc2VjbXBz dHIoZW5jb2RpbmcsICJnemlwIikKKyAgICAgICAgICAgIHx8ICFhcF9jYXNlY21wc3RyKGVuY29k aW5nLCAieC1nemlwIikpIHsKICAgICAgICAgICAgIGZvdW5kID0gMTsKICAgICAgICAgICAgIGlm IChoZHJzKSB7CiAgICAgICAgICAgICAgICAgYXByX3RhYmxlX3Vuc2V0KGhkcnMsICJDb250ZW50 LUVuY29kaW5nIik7CkBAIC0xMzcsOCArMTM3LDggQEAgc3RhdGljIGludCBjaGVja19nemlwKHJl cXVlc3RfcmVjICpyLCBhcHJfdGFibGVfdAogICAgICAgICAgICAgZm9yKDs7KSB7CiAgICAgICAg ICAgICAgICAgY2hhciAqdG9rZW4gPSBhcF9zdHJyY2hyKG5ld19lbmNvZGluZywgJywnKTsKICAg ICAgICAgICAgICAgICBpZiAoIXRva2VuKSB7ICAgICAgICAvKiBnemlwOmlkZW50aXR5IG9yIG90 aGVyOmlkZW50aXR5ICovCi0gICAgICAgICAgICAgICAgICAgIGlmICghc3RyY2FzZWNtcChuZXdf ZW5jb2RpbmcsICJnemlwIikKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFzdHJjYXNlY21w KG5ld19lbmNvZGluZywgIngtZ3ppcCIpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghYXBf Y2FzZWNtcHN0cihuZXdfZW5jb2RpbmcsICJnemlwIikKKyAgICAgICAgICAgICAgICAgICAgICAg IHx8ICFhcF9jYXNlY21wc3RyKG5ld19lbmNvZGluZywgIngtZ3ppcCIpKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICBmb3VuZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGRy cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcl90YWJsZV91bnNldChoZHJzLCAi Q29udGVudC1FbmNvZGluZyIpOwpAQCAtMTUwLDggKzE1MCw4IEBAIHN0YXRpYyBpbnQgY2hlY2tf Z3ppcChyZXF1ZXN0X3JlYyAqciwgYXByX3RhYmxlX3QKICAgICAgICAgICAgICAgICAgICAgYnJl YWs7IC8qIHNlZW4gYWxsIHRva2VucyAqLwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICBmb3IgKHB0cj10b2tlbisxOyBhcHJfaXNzcGFjZSgqcHRyKTsgKytwdHIpOwotICAgICAg ICAgICAgICAgIGlmICghc3RyY2FzZWNtcChwdHIsICJnemlwIikKLSAgICAgICAgICAgICAgICAg ICAgfHwgIXN0cmNhc2VjbXAocHRyLCAieC1nemlwIikpIHsKKyAgICAgICAgICAgICAgICBpZiAo IWFwX2Nhc2VjbXBzdHIocHRyLCAiZ3ppcCIpCisgICAgICAgICAgICAgICAgICAgIHx8ICFhcF9j YXNlY21wc3RyKHB0ciwgIngtZ3ppcCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICp0b2tlbiA9 ICdcMCc7CiAgICAgICAgICAgICAgICAgICAgIGlmIChoZHJzKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgICBhcHJfdGFibGVfc2V0bihoZHJzLCAiQ29udGVudC1FbmNvZGluZyIsIG5ld19lbmNv ZGluZyk7CkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIGludCBjaGVja19nemlwKHJlcXVlc3Rf cmVjICpyLCBhcHJfdGFibGVfdAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgICAgIGZvdW5kID0gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxz ZSBpZiAoIXB0clswXSB8fCAhc3RyY2FzZWNtcChwdHIsICJpZGVudGl0eSIpKSB7CisgICAgICAg ICAgICAgICAgZWxzZSBpZiAoIXB0clswXSB8fCAhYXBfY2FzZWNtcHN0cihwdHIsICJpZGVudGl0 eSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICp0b2tlbiA9ICdcMCc7CiAgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOyAvKiBzdHJpcCB0aGUgdG9rZW4gYW5kIGZpbmQgdGhlIG5leHQgb25l ICovCiAgICAgICAgICAgICAgICAgfQpAQCAtNzA0LDcgKzcwNCw3IEBAIHN0YXRpYyBhcHJfc3Rh dHVzX3QgZGVmbGF0ZV9vdXRfZmlsdGVyKGFwX2ZpbHRlcl90CiAgICAgICAgICAgICB9CiAKICAg ICAgICAgICAgIHRva2VuID0gYXBfZ2V0X3Rva2VuKHItPnBvb2wsICZhY2NlcHRzLCAwKTsKLSAg ICAgICAgICAgIHdoaWxlICh0b2tlbiAmJiB0b2tlblswXSAmJiBzdHJjYXNlY21wKHRva2VuLCAi Z3ppcCIpKSB7CisgICAgICAgICAgICB3aGlsZSAodG9rZW4gJiYgdG9rZW5bMF0gJiYgYXBfY2Fz ZWNtcHN0cih0b2tlbiwgImd6aXAiKSkgewogICAgICAgICAgICAgICAgIC8qIHNraXAgcGFyYW1l dGVycywgWFhYOiA7cT1mb28gZXZhbHVhdGlvbj8gKi8KICAgICAgICAgICAgICAgICB3aGlsZSAo KmFjY2VwdHMgPT0gJzsnKSB7CiAgICAgICAgICAgICAgICAgICAgICsrYWNjZXB0czsKQEAgLTc3 OCw3ICs3NzgsNyBAQCBzdGF0aWMgYXByX3N0YXR1c190IGRlZmxhdGVfb3V0X2ZpbHRlcihhcF9m aWx0ZXJfdAogICAgICAgICAgKi8KIAogICAgICAgICAvKiBJZiB0aGUgZW50aXJlIENvbnRlbnQt RW5jb2RpbmcgaXMgImlkZW50aXR5Iiwgd2UgY2FuIHJlcGxhY2UgaXQuICovCi0gICAgICAgIGlm ICghZW5jb2RpbmcgfHwgIXN0cmNhc2VjbXAoZW5jb2RpbmcsICJpZGVudGl0eSIpKSB7CisgICAg ICAgIGlmICghZW5jb2RpbmcgfHwgIWFwX2Nhc2VjbXBzdHIoZW5jb2RpbmcsICJpZGVudGl0eSIp KSB7CiAgICAgICAgICAgICBhcHJfdGFibGVfc2V0bihyLT5oZWFkZXJzX291dCwgIkNvbnRlbnQt RW5jb2RpbmciLCAiZ3ppcCIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpJbmRleDogbW9k dWxlcy9maWx0ZXJzL21vZF9pbmNsdWRlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbW9kdWxlcy9maWx0ZXJz L21vZF9pbmNsdWRlLmMJKHJldmlzaW9uIDE3MjIxNDMpCisrKyBtb2R1bGVzL2ZpbHRlcnMvbW9k X2luY2x1ZGUuYwkod29ya2luZyBjb3B5KQpAQCAtMTk1MCwyNSArMTk1MCwyNSBAQCBzdGF0aWMg YXByX3N0YXR1c190IGhhbmRsZV9lY2hvKGluY2x1ZGVfY3R4X3QgKmN0eAogICAgICAgICAgICAg ICAgIHRva2VuID0gYXByX3N0cnRvayhkLCAiLCBcdCIsICZsYXN0KTsKIAogICAgICAgICAgICAg ICAgIHdoaWxlICh0b2tlbikgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmNhc2VjbXAo dG9rZW4sICJub25lIikpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFhcF9jYXNlY21wc3Ry KHRva2VuLCAibm9uZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5n ICovCiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo IXN0cmNhc2VjbXAodG9rZW4sICJ1cmwiKSkgeworICAgICAgICAgICAgICAgICAgICBlbHNlIGlm ICghYXBfY2FzZWNtcHN0cih0b2tlbiwgInVybCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg ICBjaGFyICpidWYgPSBhcHJfcHN0cmR1cChjdHgtPnBvb2wsIGVjaG9fdGV4dCk7CiAgICAgICAg ICAgICAgICAgICAgICAgICBhcF91bmVzY2FwZV91cmwoYnVmKTsKICAgICAgICAgICAgICAgICAg ICAgICAgIGVjaG9fdGV4dCA9IGJ1ZjsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCh0b2tlbiwgInVybGVuY29kZWQiKSkgewor ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghYXBfY2FzZWNtcHN0cih0b2tlbiwgInVybGVu Y29kZWQiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmID0gYXByX3BzdHJk dXAoY3R4LT5wb29sLCBlY2hvX3RleHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgYXBfdW5l c2NhcGVfdXJsZW5jb2RlZChidWYpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWNob190ZXh0 ID0gYnVmOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2Ug aWYgKCFzdHJjYXNlY21wKHRva2VuLCAiZW50aXR5IikpIHsKKyAgICAgICAgICAgICAgICAgICAg ZWxzZSBpZiAoIWFwX2Nhc2VjbXBzdHIodG9rZW4sICJlbnRpdHkiKSkgewogICAgICAgICAgICAg ICAgICAgICAgICAgY2hhciAqYnVmID0gYXByX3BzdHJkdXAoY3R4LT5wb29sLCBlY2hvX3RleHQp OwogICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlaHRtbChidWYpOwogICAgICAgICAgICAg ICAgICAgICAgICAgZWNob190ZXh0ID0gYnVmOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wKHRva2VuLCAiYmFzZTY0IikpIHsK KyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWFwX2Nhc2VjbXBzdHIodG9rZW4sICJiYXNl NjQiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZWNob190ZXh0ID0gYXBfcGJhc2U2NGRl Y29kZShjdHgtPmRwb29sLCBlY2hvX3RleHQpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtMTk4NiwxOSArMTk4NiwxOSBAQCBzdGF0aWMgYXBy X3N0YXR1c190IGhhbmRsZV9lY2hvKGluY2x1ZGVfY3R4X3QgKmN0eAogICAgICAgICAgICAgICAg IHRva2VuID0gYXByX3N0cnRvayhlLCAiLCBcdCIsICZsYXN0KTsKIAogICAgICAgICAgICAgICAg IHdoaWxlICh0b2tlbikgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmNhc2VjbXAodG9r ZW4sICJub25lIikpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFhcF9jYXNlY21wc3RyKHRv a2VuLCAibm9uZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nICov CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0 cmNhc2VjbXAodG9rZW4sICJ1cmwiKSkgeworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgh YXBfY2FzZWNtcHN0cih0b2tlbiwgInVybCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBl Y2hvX3RleHQgPSBhcF9lc2NhcGVfdXJpKGN0eC0+ZHBvb2wsIGVjaG9fdGV4dCk7CiAgICAgICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAo dG9rZW4sICJ1cmxlbmNvZGVkIikpIHsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWFw X2Nhc2VjbXBzdHIodG9rZW4sICJ1cmxlbmNvZGVkIikpIHsKICAgICAgICAgICAgICAgICAgICAg ICAgIGVjaG9fdGV4dCA9IGFwX2VzY2FwZV91cmxlbmNvZGVkKGN0eC0+ZHBvb2wsIGVjaG9fdGV4 dCk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo IXN0cmNhc2VjbXAodG9rZW4sICJlbnRpdHkiKSkgeworICAgICAgICAgICAgICAgICAgICBlbHNl IGlmICghYXBfY2FzZWNtcHN0cih0b2tlbiwgImVudGl0eSIpKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgICBlY2hvX3RleHQgPSBhcF9lc2NhcGVfaHRtbDIoY3R4LT5kcG9vbCwgZWNob190ZXh0 LCAwKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlm ICghc3RyY2FzZWNtcCh0b2tlbiwgImJhc2U2NCIpKSB7CisgICAgICAgICAgICAgICAgICAgIGVs c2UgaWYgKCFhcF9jYXNlY21wc3RyKHRva2VuLCAiYmFzZTY0IikpIHsKICAgICAgICAgICAgICAg ICAgICAgICAgIGNoYXIgKmJ1ZjsKICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGFwX3Bi YXNlNjRlbmNvZGUoY3R4LT5kcG9vbCwgKGNoYXIgKillY2hvX3RleHQpOwogICAgICAgICAgICAg ICAgICAgICAgICAgZWNob190ZXh0ID0gYnVmOwpAQCAtMjU4OCwyNSArMjU4OCwyNSBAQCBzdGF0 aWMgYXByX3N0YXR1c190IGhhbmRsZV9zZXQoaW5jbHVkZV9jdHhfdCAqY3R4LAogICAgICAgICAg ICAgICAgIHRva2VuID0gYXByX3N0cnRvayhkLCAiLCBcdCIsICZsYXN0KTsKIAogICAgICAgICAg ICAgICAgIHdoaWxlICh0b2tlbikgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmNhc2Vj bXAodG9rZW4sICJub25lIikpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFhcF9jYXNlY21w c3RyKHRva2VuLCAibm9uZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkbyBub3Ro aW5nICovCiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBp ZiAoIXN0cmNhc2VjbXAodG9rZW4sICJ1cmwiKSkgeworICAgICAgICAgICAgICAgICAgICBlbHNl IGlmICghYXBfY2FzZWNtcHN0cih0b2tlbiwgInVybCIpKSB7CiAgICAgICAgICAgICAgICAgICAg ICAgICBjaGFyICpidWYgPSBhcHJfcHN0cmR1cChjdHgtPnBvb2wsIHBhcnNlZF9zdHJpbmcpOwog ICAgICAgICAgICAgICAgICAgICAgICAgYXBfdW5lc2NhcGVfdXJsKGJ1Zik7CiAgICAgICAgICAg ICAgICAgICAgICAgICBwYXJzZWRfc3RyaW5nID0gYnVmOwogICAgICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wKHRva2VuLCAidXJsZW5j b2RlZCIpKSB7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3RyKHRv a2VuLCAidXJsZW5jb2RlZCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYg PSBhcHJfcHN0cmR1cChjdHgtPnBvb2wsIHBhcnNlZF9zdHJpbmcpOwogICAgICAgICAgICAgICAg ICAgICAgICAgYXBfdW5lc2NhcGVfdXJsZW5jb2RlZChidWYpOwogICAgICAgICAgICAgICAgICAg ICAgICAgcGFyc2VkX3N0cmluZyA9IGJ1ZjsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCh0b2tlbiwgImVudGl0eSIpKSB7Cisg ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3RyKHRva2VuLCAiZW50aXR5 IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiA9IGFwcl9wc3RyZHVwKGN0 eC0+cG9vbCwgcGFyc2VkX3N0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVo dG1sKGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfc3RyaW5nID0gYnVmOwog ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJj YXNlY21wKHRva2VuLCAiYmFzZTY0IikpIHsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo IWFwX2Nhc2VjbXBzdHIodG9rZW4sICJiYXNlNjQiKSkgewogICAgICAgICAgICAgICAgICAgICAg ICAgcGFyc2VkX3N0cmluZyA9IGFwX3BiYXNlNjRkZWNvZGUoY3R4LT5kcG9vbCwgcGFyc2VkX3N0 cmluZyk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZWxzZSB7 CkBAIC0yNjI0LDE5ICsyNjI0LDE5IEBAIHN0YXRpYyBhcHJfc3RhdHVzX3QgaGFuZGxlX3NldChp bmNsdWRlX2N0eF90ICpjdHgsCiAgICAgICAgICAgICAgICAgdG9rZW4gPSBhcHJfc3RydG9rKGUs ICIsIFx0IiwgJmxhc3QpOwogCiAgICAgICAgICAgICAgICAgd2hpbGUgKHRva2VuKSB7Ci0gICAg ICAgICAgICAgICAgICAgIGlmICghc3RyY2FzZWNtcCh0b2tlbiwgIm5vbmUiKSkgeworICAgICAg ICAgICAgICAgICAgICBpZiAoIWFwX2Nhc2VjbXBzdHIodG9rZW4sICJub25lIikpIHsKICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi8KICAgICAgICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCh0b2tlbiwgInVybCIp KSB7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3RyKHRva2VuLCAi dXJsIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9zdHJpbmcgPSBhcF9lc2Nh cGVfdXJpKGN0eC0+ZHBvb2wsIHBhcnNlZF9zdHJpbmcpOwogICAgICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wKHRva2VuLCAidXJsZW5j b2RlZCIpKSB7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3RyKHRv a2VuLCAidXJsZW5jb2RlZCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfc3Ry aW5nID0gYXBfZXNjYXBlX3VybGVuY29kZWQoY3R4LT5kcG9vbCwgcGFyc2VkX3N0cmluZyk7CiAg ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNh c2VjbXAodG9rZW4sICJlbnRpdHkiKSkgeworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgh YXBfY2FzZWNtcHN0cih0b2tlbiwgImVudGl0eSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg ICBwYXJzZWRfc3RyaW5nID0gYXBfZXNjYXBlX2h0bWwyKGN0eC0+ZHBvb2wsIHBhcnNlZF9zdHJp bmcsIDApOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2Ug aWYgKCFzdHJjYXNlY21wKHRva2VuLCAiYmFzZTY0IikpIHsKKyAgICAgICAgICAgICAgICAgICAg ZWxzZSBpZiAoIWFwX2Nhc2VjbXBzdHIodG9rZW4sICJiYXNlNjQiKSkgewogICAgICAgICAgICAg ICAgICAgICAgICAgY2hhciAqYnVmOwogICAgICAgICAgICAgICAgICAgICAgICAgYnVmID0gYXBf cGJhc2U2NGVuY29kZShjdHgtPmRwb29sLCAoY2hhciAqKXBhcnNlZF9zdHJpbmcpOwogICAgICAg ICAgICAgICAgICAgICAgICAgcGFyc2VkX3N0cmluZyA9IGJ1ZjsKSW5kZXg6IG1vZHVsZXMvZmls dGVycy9tb2RfcHJveHlfaHRtbC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1vZHVsZXMvZmlsdGVycy9tb2Rf cHJveHlfaHRtbC5jCShyZXZpc2lvbiAxNzIyMTQzKQorKysgbW9kdWxlcy9maWx0ZXJzL21vZF9w cm94eV9odG1sLmMJKHdvcmtpbmcgY29weSkKQEAgLTY2MCw3ICs2NjAsNyBAQCBzdGF0aWMgbWV0 YSAqbWV0YWZpeChyZXF1ZXN0X3JlYyAqciwgY29uc3QgY2hhciAqYgogICAgICAgICB3aGlsZSAo IWFwcl9pc2FscGhhKCorK3ApKTsKICAgICAgICAgZm9yIChxID0gcDsgYXByX2lzYWxudW0oKnEp IHx8ICgqcSA9PSAnLScpOyArK3EpOwogICAgICAgICBoZWFkZXIgPSBhcHJfcHN0cm5kdXAoci0+ cG9vbCwgcCwgcS1wKTsKLSAgICAgICAgaWYgKHN0cm5jYXNlY21wKGhlYWRlciwgIkNvbnRlbnQt IiwgOCkpIHsKKyAgICAgICAgaWYgKGFwX2Nhc2VjbXBzdHJuKGhlYWRlciwgIkNvbnRlbnQtIiwg OCkpIHsKICAgICAgICAgICAgIC8qIGZpbmQgY29udGVudD0uLi4gc3RyaW5nICovCiAgICAgICAg ICAgICBwID0gYXByX3N0cm1hdGNoKHNlZWtfY29udGVudCwgYnVmK29mZnMrcG1hdGNoWzBdLnJt X3NvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG1hdGNoWzBdLnJtX2VvIC0gcG1h dGNoWzBdLnJtX3NvKTsKQEAgLTY4OCw3ICs2ODgsNyBAQCBzdGF0aWMgbWV0YSAqbWV0YWZpeChy ZXF1ZXN0X3JlYyAqciwgY29uc3QgY2hhciAqYgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICghc3RybmNhc2VjbXAoaGVhZGVyLCAi Q29udGVudC1UeXBlIiwgMTIpKSB7CisgICAgICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3Rybiho ZWFkZXIsICJDb250ZW50LVR5cGUiLCAxMikpIHsKICAgICAgICAgICAgIHJldCA9IGFwcl9wYWxs b2Moci0+cG9vbCwgc2l6ZW9mKG1ldGEpKTsKICAgICAgICAgICAgIHJldC0+c3RhcnQgPSBvZmZz K3BtYXRjaFswXS5ybV9zbzsKICAgICAgICAgICAgIHJldC0+ZW5kID0gb2ZmcytwbWF0Y2hbMF0u cm1fZW87CkBAIC04MTIsOCArODEyLDggQEAgc3RhdGljIHNheGN0eHQgKmNoZWNrX2ZpbHRlcl9p bml0IChhcF9maWx0ZXJfdCAqZikKICAgICAgICAgICAgIGVsc2UgaWYgKCFmLT5yLT5jb250ZW50 X3R5cGUpIHsKICAgICAgICAgICAgICAgICBlcnJtc2cgPSAiTm8gY29udGVudC10eXBlOyBiYWls aW5nIG91dCBvZiBwcm94eS1odG1sIGZpbHRlciI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICBlbHNlIGlmIChzdHJuY2FzZWNtcChmLT5yLT5jb250ZW50X3R5cGUsICJ0ZXh0L2h0bWwiLCA5 KSAmJgotICAgICAgICAgICAgICAgICAgICAgc3RybmNhc2VjbXAoZi0+ci0+Y29udGVudF90eXBl LAorICAgICAgICAgICAgZWxzZSBpZiAoYXBfY2FzZWNtcHN0cm4oZi0+ci0+Y29udGVudF90eXBl LCAidGV4dC9odG1sIiwgOSkgJiYKKyAgICAgICAgICAgICAgICAgICAgIGFwX2Nhc2VjbXBzdHJu KGYtPnItPmNvbnRlbnRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJh cHBsaWNhdGlvbi94aHRtbCt4bWwiLCAyMSkpIHsKICAgICAgICAgICAgICAgICBlcnJtc2cgPSAi Tm9uLUhUTUwgY29udGVudDsgbm90IGluc2VydGluZyBwcm94eS1odG1sIGZpbHRlciI7CiAgICAg ICAgICAgICB9CkluZGV4OiBtb2R1bGVzL2dlbmVyYXRvcnMvbW9kX2F1dG9pbmRleC5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIG1vZHVsZXMvZ2VuZXJhdG9ycy9tb2RfYXV0b2luZGV4LmMJKHJldmlzaW9uIDE3 MjIxNDMpCisrKyBtb2R1bGVzL2dlbmVyYXRvcnMvbW9kX2F1dG9pbmRleC5jCSh3b3JraW5nIGNv cHkpCkBAIC0xMDY4LDcgKzEwNjgsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X2hlYWQocmVxdWVzdF9y ZWMgKnIsIGNoYXIgKmhlYWRlcgogICAgICAgICAgICAgICAgICAgICBlbWl0X0gxID0gMTsKICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICghc3Ry bmNhc2VjbXAoInRleHQvIiwgcnItPmNvbnRlbnRfdHlwZSwgNSkpIHsKKyAgICAgICAgICAgIGVs c2UgaWYgKCFhcF9jYXNlY21wc3RybigidGV4dC8iLCByci0+Y29udGVudF90eXBlLCA1KSkgewog ICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogSWYgd2UgY2FuIG9wZW4gdGhl IGZpbGUsIHByZWZpeCBpdCB3aXRoIHRoZSBwcmVhbWJsZQogICAgICAgICAgICAgICAgICAqIHJl Z2FyZGxlc3M7IHNpbmNlIHdlJ2xsIGJlIHNlbmRpbmcgYSA8cHJlPiBibG9jayBhcm91bmQKQEAg LTExNjMsNyArMTE2Myw3IEBAIHN0YXRpYyB2b2lkIGVtaXRfdGFpbChyZXF1ZXN0X3JlYyAqciwg Y2hhciAqcmVhZG1lCiAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3Bvc3QgPSBzdXBwcmVz c19hbWJsZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBl bHNlIGlmICghc3RybmNhc2VjbXAoInRleHQvIiwgcnItPmNvbnRlbnRfdHlwZSwgNSkpIHsKKyAg ICAgICAgICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3RybigidGV4dC8iLCByci0+Y29udGVudF90 eXBlLCA1KSkgewogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogSWYgd2Ug Y2FuIG9wZW4gdGhlIGZpbGUsIHN1cHByZXNzIHRoZSBzaWduYXR1cmUuCiAgICAgICAgICAgICAg ICAgICovCkluZGV4OiBtb2R1bGVzL2dlbmVyYXRvcnMvbW9kX2luZm8uYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBtb2R1bGVzL2dlbmVyYXRvcnMvbW9kX2luZm8uYwkocmV2aXNpb24gMTcyMjE0MykKKysrIG1v ZHVsZXMvZ2VuZXJhdG9ycy9tb2RfaW5mby5jCSh3b3JraW5nIGNvcHkpCkBAIC03ODUsNyArNzg1 LDcgQEAgc3RhdGljIGludCBkaXNwbGF5X2luZm8ocmVxdWVzdF9yZWMgKiByKQogICAgICAgICAg ICAgICIgIDx0aXRsZT5TZXJ2ZXIgSW5mb3JtYXRpb248L3RpdGxlPlxuIiAiPC9oZWFkPlxuIiwg cik7CiAgICAgYXBfcnB1dHMoIjxib2R5PjxoMSBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwi PiIKICAgICAgICAgICAgICAiQXBhY2hlIFNlcnZlciBJbmZvcm1hdGlvbjwvaDE+XG4iLCByKTsK LSAgICBpZiAoIXItPmFyZ3MgfHwgc3RyY2FzZWNtcChyLT5hcmdzLCAibGlzdCIpKSB7CisgICAg aWYgKCFyLT5hcmdzIHx8IGFwX2Nhc2VjbXBzdHIoci0+YXJncywgImxpc3QiKSkgewogICAgICAg ICBpZiAoIXItPmFyZ3MpIHsKICAgICAgICAgICAgIGFwX3JwdXRzKCI8ZGw+PGR0Pjx0dD5TdWJw YWdlczo8YnIgLz4iLCByKTsKICAgICAgICAgICAgIGFwX3JwdXRzKCI8YSBocmVmPVwiP2NvbmZp Z1wiPkNvbmZpZ3VyYXRpb24gRmlsZXM8L2E+LCAiCkBAIC04MTksMTkgKzgxOSwxOSBAQCBzdGF0 aWMgaW50IGRpc3BsYXlfaW5mbyhyZXF1ZXN0X3JlYyAqIHIpCiAgICAgICAgICAgICBhcF9ycHV0 cygiPC90dD48L2R0PjwvZGw+PGhyIC8+Iiwgcik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo IXItPmFyZ3MgfHwgIXN0cmNhc2VjbXAoci0+YXJncywgInNlcnZlciIpKSB7CisgICAgICAgIGlm ICghci0+YXJncyB8fCAhYXBfY2FzZWNtcHN0cihyLT5hcmdzLCAic2VydmVyIikpIHsKICAgICAg ICAgICAgIHNob3dfc2VydmVyX3NldHRpbmdzKHIpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg KCFyLT5hcmdzIHx8ICFzdHJjYXNlY21wKHItPmFyZ3MsICJob29rcyIpKSB7CisgICAgICAgIGlm ICghci0+YXJncyB8fCAhYXBfY2FzZWNtcHN0cihyLT5hcmdzLCAiaG9va3MiKSkgewogICAgICAg ICAgICAgc2hvd19hY3RpdmVfaG9va3Mocik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXIt PmFyZ3MgfHwgIXN0cmNhc2VjbXAoci0+YXJncywgInByb3ZpZGVycyIpKSB7CisgICAgICAgIGlm ICghci0+YXJncyB8fCAhYXBfY2FzZWNtcHN0cihyLT5hcmdzLCAicHJvdmlkZXJzIikpIHsKICAg ICAgICAgICAgIHNob3dfcHJvdmlkZXJzKHIpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHIt PmFyZ3MgJiYgMCA9PSBzdHJjYXNlY21wKHItPmFyZ3MsICJjb25maWciKSkgeworICAgICAgICBp ZiAoci0+YXJncyAmJiAwID09IGFwX2Nhc2VjbXBzdHIoci0+YXJncywgImNvbmZpZyIpKSB7CiAg ICAgICAgICAgICBhcF9ycHV0cygiPGRsPjxkdD48c3Ryb25nPkNvbmZpZ3VyYXRpb246PC9zdHJv bmc+XG4iLCByKTsKICAgICAgICAgICAgIG1vZF9pbmZvX21vZHVsZV9jbWRzKHIsIE5VTEwsIGFw X2NvbmZ0cmVlLCAwLCAwKTsKICAgICAgICAgICAgIGFwX3JwdXRzKCI8L2RsPjxociAvPiIsIHIp OwpAQCAtODQyLDcgKzg0Miw3IEBAIHN0YXRpYyBpbnQgZGlzcGxheV9pbmZvKHJlcXVlc3RfcmVj ICogcikKICAgICAgICAgICAgICAgICAgbW9kdWxlcyA9IGdldF9zb3J0ZWRfbW9kdWxlcyhyLT5w b29sKTsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtb2R1bGVzLT5uZWx0czsgaSsrKSB7 CiAgICAgICAgICAgICAgICAgbW9kcCA9IEFQUl9BUlJBWV9JRFgobW9kdWxlcywgaSwgbW9kdWxl ICopOwotICAgICAgICAgICAgICAgIGlmICghci0+YXJncyB8fCAhc3RyY2FzZWNtcChtb2RwLT5u YW1lLCByLT5hcmdzKSkgeworICAgICAgICAgICAgICAgIGlmICghci0+YXJncyB8fCAhYXBfY2Fz ZWNtcHN0cihtb2RwLT5uYW1lLCByLT5hcmdzKSkgewogICAgICAgICAgICAgICAgICAgICBhcF9y cHJpbnRmKHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxkbD48ZHQ+PGEgbmFt ZT1cIiVzXCI+PHN0cm9uZz5Nb2R1bGUgTmFtZTo8L3N0cm9uZz48L2E+ICIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiPGZvbnQgc2l6ZT1cIisxXCI+PHR0PjxhIGhyZWY9XCI/JXNc Ij4lczwvYT48L3R0PjwvZm9udD48L2R0PlxuIiwKQEAgLTk0MCw3ICs5NDAsNyBAQCBzdGF0aWMg aW50IGRpc3BsYXlfaW5mbyhyZXF1ZXN0X3JlYyAqIHIpCiAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIW1vZHAg JiYgci0+YXJncyAmJiBzdHJjYXNlY21wKHItPmFyZ3MsICJzZXJ2ZXIiKSkgeworICAgICAgICAg ICAgaWYgKCFtb2RwICYmIHItPmFyZ3MgJiYgYXBfY2FzZWNtcHN0cihyLT5hcmdzLCAic2VydmVy IikpIHsKICAgICAgICAgICAgICAgICBhcF9ycHV0cygiPHA+PGI+Tm8gc3VjaCBtb2R1bGU8L2I+ PC9wPlxuIiwgcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IG1vZHVsZXMvaHR0 cC9ieXRlcmFuZ2VfZmlsdGVyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbW9kdWxlcy9odHRwL2J5dGVyYW5n ZV9maWx0ZXIuYwkocmV2aXNpb24gMTcyMjE0MykKKysrIG1vZHVsZXMvaHR0cC9ieXRlcmFuZ2Vf ZmlsdGVyLmMJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgaW50IGFw X3NldF9ieXRlcmFuZ2UocmVxdWVzdF9yZWMgKnIsIGFwcl9vZgogICAgICAgICByYW5nZSA9IGFw cl90YWJsZV9nZXQoci0+aGVhZGVyc19pbiwgIlJlcXVlc3QtUmFuZ2UiKTsKICAgICB9CiAKLSAg ICBpZiAoIXJhbmdlIHx8IHN0cm5jYXNlY21wKHJhbmdlLCAiYnl0ZXM9IiwgNikgfHwgci0+c3Rh dHVzICE9IEhUVFBfT0spIHsKKyAgICBpZiAoIXJhbmdlIHx8IGFwX2Nhc2VjbXBzdHJuKHJhbmdl LCAiYnl0ZXM9IiwgNikgfHwgci0+c3RhdHVzICE9IEhUVFBfT0spIHsKICAgICAgICAgcmV0dXJu IDA7CiAgICAgfQogCkBAIC0xMjYsOCArMTI2LDggQEAgc3RhdGljIGludCBhcF9zZXRfYnl0ZXJh bmdlKHJlcXVlc3RfcmVjICpyLCBhcHJfb2YKIAogICAgIC8qIGlzIGNvbnRlbnQgYWxyZWFkeSBh IG11bHRpcGxlIHJhbmdlPyAqLwogICAgIGlmICgoY3QgPSBhcHJfdGFibGVfZ2V0KHItPmhlYWRl cnNfb3V0LCAiQ29udGVudC1UeXBlIikpCi0gICAgICAgICYmICghc3RybmNhc2VjbXAoY3QsICJt dWx0aXBhcnQvYnl0ZXJhbmdlcyIsIDIwKQotICAgICAgICAgICAgfHwgIXN0cm5jYXNlY21wKGN0 LCAibXVsdGlwYXJ0L3gtYnl0ZXJhbmdlcyIsIDIyKSkpIHsKKyAgICAgICAgJiYgKCFhcF9jYXNl Y21wc3RybihjdCwgIm11bHRpcGFydC9ieXRlcmFuZ2VzIiwgMjApCisgICAgICAgICAgICB8fCAh YXBfY2FzZWNtcHN0cm4oY3QsICJtdWx0aXBhcnQveC1ieXRlcmFuZ2VzIiwgMjIpKSkgewogICAg ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIApJbmRleDogbW9kdWxlcy9odHRwL2h0dHBf ZmlsdGVycy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIG1vZHVsZXMvaHR0cC9odHRwX2ZpbHRlcnMuYwkocmV2 aXNpb24gMTcyMjE0MykKKysrIG1vZHVsZXMvaHR0cC9odHRwX2ZpbHRlcnMuYwkod29ya2luZyBj b3B5KQpAQCAtMzYzLDcgKzM2Myw3IEBAIGFwcl9zdGF0dXNfdCBhcF9odHRwX2ZpbHRlcihhcF9m aWx0ZXJfdCAqZiwgYXByX2J1CiAgICAgICAgIGxlbnAgPSBhcHJfdGFibGVfZ2V0KGYtPnItPmhl YWRlcnNfaW4sICJDb250ZW50LUxlbmd0aCIpOwogCiAgICAgICAgIGlmICh0ZW5jKSB7Ci0gICAg ICAgICAgICBpZiAoc3RyY2FzZWNtcCh0ZW5jLCAiY2h1bmtlZCIpID09IDAgLyogZmFzdCBwYXRo ICovCisgICAgICAgICAgICBpZiAoYXBfY2FzZWNtcHN0cih0ZW5jLCAiY2h1bmtlZCIpID09IDAg LyogZmFzdCBwYXRoICovCiAgICAgICAgICAgICAgICAgICAgIHx8IGFwX2ZpbmRfbGFzdF90b2tl bihmLT5yLT5wb29sLCB0ZW5jLCAiY2h1bmtlZCIpKSB7CiAgICAgICAgICAgICAgICAgY3R4LT5z dGF0ZSA9IEJPRFlfQ0hVTks7CiAgICAgICAgICAgICB9CkBAIC03NDksNyArNzQ5LDcgQEAgc3Rh dGljIGludCB1bmlxX2ZpZWxkX3ZhbHVlcyh2b2lkICpkLCBjb25zdCBjaGFyICoKICAgICAgICAg ICovCiAgICAgICAgIGZvciAoaSA9IDAsIHN0cnBwID0gKGNoYXIgKiopIHZhbHVlcy0+ZWx0czsg aSA8IHZhbHVlcy0+bmVsdHM7CiAgICAgICAgICAgICAgKytpLCArK3N0cnBwKSB7Ci0gICAgICAg ICAgICBpZiAoKnN0cnBwICYmIHN0cmNhc2VjbXAoKnN0cnBwLCBzdGFydCkgPT0gMCkgeworICAg ICAgICAgICAgaWYgKCpzdHJwcCAmJiBhcF9jYXNlY21wc3RyKCpzdHJwcCwgc3RhcnQpID09IDAp IHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt MTI4Miw3ICsxMjgyLDcgQEAgQVBfQ09SRV9ERUNMQVJFX05PTlNURChhcHJfc3RhdHVzX3QpIGFw X2h0dHBfaGVhZGUKIAogICAgICAgICB3aGlsZSAoZmllbGQgJiYgKHRva2VuID0gYXBfZ2V0X2xp c3RfaXRlbShyLT5wb29sLCAmZmllbGQpKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBmb3IgKGkg PSAwOyBpIDwgci0+Y29udGVudF9sYW5ndWFnZXMtPm5lbHRzOyArK2kpIHsKLSAgICAgICAgICAg ICAgICBpZiAoIXN0cmNhc2VjbXAodG9rZW4sIGxhbmd1YWdlc1tpXSkpCisgICAgICAgICAgICAg ICAgaWYgKCFhcF9jYXNlY21wc3RyKHRva2VuLCBsYW5ndWFnZXNbaV0pKQogICAgICAgICAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpID09IHItPmNv bnRlbnRfbGFuZ3VhZ2VzLT5uZWx0cykgewpAQCAtMTUzNCw3ICsxNTM0LDcgQEAgQVBfREVDTEFS RShpbnQpIGFwX3NldHVwX2NsaWVudF9ibG9jayhyZXF1ZXN0X3JlYwogICAgIHItPnJlbWFpbmlu ZyA9IDA7CiAKICAgICBpZiAodGVuYykgewotICAgICAgICBpZiAoc3RyY2FzZWNtcCh0ZW5jLCAi Y2h1bmtlZCIpKSB7CisgICAgICAgIGlmIChhcF9jYXNlY21wc3RyKHRlbmMsICJjaHVua2VkIikp IHsKICAgICAgICAgICAgIGFwX2xvZ19yZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfSU5GTywgMCwg ciwgQVBMT0dOTygwMTU5MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gVHJh bnNmZXItRW5jb2RpbmcgJXMiLCB0ZW5jKTsKICAgICAgICAgICAgIHJldHVybiBIVFRQX05PVF9J TVBMRU1FTlRFRDsKSW5kZXg6IG1vZHVsZXMvaHR0cDIvaDJfZnJvbV9oMS5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIG1vZHVsZXMvaHR0cDIvaDJfZnJvbV9oMS5jCShyZXZpc2lvbiAxNzIyMTQzKQorKysgbW9k dWxlcy9odHRwMi9oMl9mcm9tX2gxLmMJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw3ICsyNTgsNyBA QCBzdGF0aWMgaW50IHVuaXFfZmllbGRfdmFsdWVzKHZvaWQgKmQsIGNvbnN0IGNoYXIgKgogICAg ICAgICAgKi8KICAgICAgICAgZm9yIChpID0gMCwgc3RycHAgPSAoY2hhciAqKikgdmFsdWVzLT5l bHRzOyBpIDwgdmFsdWVzLT5uZWx0czsKICAgICAgICAgICAgICArK2ksICsrc3RycHApIHsKLSAg ICAgICAgICAgIGlmICgqc3RycHAgJiYgc3RyY2FzZWNtcCgqc3RycHAsIHN0YXJ0KSA9PSAwKSB7 CisgICAgICAgICAgICBpZiAoKnN0cnBwICYmIGFwX2Nhc2VjbXBzdHIoKnN0cnBwLCBzdGFydCkg PT0gMCkgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9 CkBAIC00MDgsNyArNDA4LDcgQEAgc3RhdGljIGgyX3Jlc3BvbnNlICpjcmVhdGVfcmVzcG9uc2Uo aDJfZnJvbV9oMSAqZnIKICAgICAgICAgCiAgICAgICAgIHdoaWxlIChmaWVsZCAmJiAodG9rZW4g PSBhcF9nZXRfbGlzdF9pdGVtKHItPnBvb2wsICZmaWVsZCkpICE9IE5VTEwpIHsKICAgICAgICAg ICAgIGZvciAoaSA9IDA7IGkgPCByLT5jb250ZW50X2xhbmd1YWdlcy0+bmVsdHM7ICsraSkgewot ICAgICAgICAgICAgICAgIGlmICghc3RyY2FzZWNtcCh0b2tlbiwgbGFuZ3VhZ2VzW2ldKSkKKyAg ICAgICAgICAgICAgICBpZiAoIWFwX2Nhc2VjbXBzdHIodG9rZW4sIGxhbmd1YWdlc1tpXSkpCiAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg KGkgPT0gci0+Y29udGVudF9sYW5ndWFnZXMtPm5lbHRzKSB7CkluZGV4OiBtb2R1bGVzL2xvZ2dl cnMvbW9kX2xvZ19jb25maWcuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtb2R1bGVzL2xvZ2dlcnMvbW9kX2xv Z19jb25maWcuYwkocmV2aXNpb24gMTcyMjE0MykKKysrIG1vZHVsZXMvbG9nZ2Vycy9tb2RfbG9n X2NvbmZpZy5jCSh3b3JraW5nIGNvcHkpCkBAIC00NjYsNyArNDY2LDcgQEAgc3RhdGljIEFQUl9J TkxJTkUgY2hhciAqZmluZF9tdWx0aXBsZV9oZWFkZXJzKGFwcl8KICAgICByZXN1bHRfbGlzdCA9 IHJwID0gTlVMTDsKIAogICAgIGRvIHsKLSAgICAgICAgaWYgKCFzdHJjYXNlY21wKHRfZWx0LT5r ZXksIGtleSkpIHsKKyAgICAgICAgaWYgKCFhcF9jYXNlY21wc3RyKHRfZWx0LT5rZXksIGtleSkp IHsKICAgICAgICAgICAgIGlmICghcmVzdWx0X2xpc3QpIHsKICAgICAgICAgICAgICAgICByZXN1 bHRfbGlzdCA9IHJwID0gYXByX3BhbGxvYyhwb29sLCBzaXplb2YoKnJwKSk7CiAgICAgICAgICAg ICB9CkBAIC01MTAsMTAgKzUxMCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqbG9nX2hlYWRlcl9v dXQocmVxdWVzdF9yZWMgKnIsCiB7CiAgICAgY29uc3QgY2hhciAqY3AgPSBOVUxMOwogCi0gICAg aWYgKCFzdHJjYXNlY21wKGEsICJDb250ZW50LXR5cGUiKSAmJiByLT5jb250ZW50X3R5cGUpIHsK KyAgICBpZiAoIWFwX2Nhc2VjbXBzdHIoYSwgIkNvbnRlbnQtdHlwZSIpICYmIHItPmNvbnRlbnRf dHlwZSkgewogICAgICAgICBjcCA9IGFwX2ZpZWxkX25vcGFyYW0oci0+cG9vbCwgci0+Y29udGVu dF90eXBlKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAoYSwgIlNldC1Db29raWUi KSkgeworICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3RyKGEsICJTZXQtQ29va2llIikpIHsKICAg ICAgICAgY3AgPSBmaW5kX211bHRpcGxlX2hlYWRlcnMoci0+cG9vbCwgci0+aGVhZGVyc19vdXQs IGEpOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTU2OSw3ICs1NjksNyBAQCBzdGF0aWMgY29uc3Qg Y2hhciAqbG9nX2Nvb2tpZShyZXF1ZXN0X3JlYyAqciwgY2hhcgogICAgICAgICAgICAgICAgICAg ICAtLWxhc3Q7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKCFzdHJj YXNlY21wKG5hbWUsIGEpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFhcF9jYXNlY21wc3RyKG5h bWUsIGEpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIGxhc3QxIHBvaW50cyB0byB0aGUgbmV4 dCBjaGFyIGZvbGxvd2luZyB0aGUgJzsnIGRlbGltLAogICAgICAgICAgICAgICAgICAgICAgICBv ciB0aGUgdHJhaWxpbmcgTlVMIGNoYXIgb2YgdGhlIHN0cmluZyAqLwogICAgICAgICAgICAgICAg ICAgICBsYXN0ID0gbGFzdDEgLSAoKmxhc3QxID8gMiA6IDEpOwpJbmRleDogbW9kdWxlcy9tYXBw ZXJzL21vZF9uZWdvdGlhdGlvbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1vZHVsZXMvbWFwcGVycy9tb2Rf bmVnb3RpYXRpb24uYwkocmV2aXNpb24gMTcyMjE0MykKKysrIG1vZHVsZXMvbWFwcGVycy9tb2Rf bmVnb3RpYXRpb24uYwkod29ya2luZyBjb3B5KQpAQCAtNzc0LDcgKzc3NCw3IEBAIHN0YXRpYyBl bnVtIGhlYWRlcl9zdGF0ZSBnZXRfaGVhZGVyX2xpbmUoY2hhciAqYnVmCiAgICAgLyogV2UgbmVl ZCB0byBzaG9ydGN1dCB0aGUgcmVzdCBvZiB0aGlzIGJsb2NrIGZvbGxvd2luZyB0aGUgQm9keToK ICAgICAgKiB0YWcgLSB3ZSB3aWxsIG5vdCBsb29rIGZvciBjb250aW51dGF0aW9uIGFmdGVyIHRo aXMgbGluZS4KICAgICAgKi8KLSAgICBpZiAoIXN0cm5jYXNlY21wKGJ1ZmZlciwgIkJvZHk6Iiwg NSkpCisgICAgaWYgKCFhcF9jYXNlY21wc3RybihidWZmZXIsICJCb2R5OiIsIDUpKQogICAgICAg ICByZXR1cm4gaGVhZGVyX3NlZW47CiAKICAgICB3aGlsZSAoYXByX2ZpbGVfZ2V0YygmYywgbWFw KSAhPSBBUFJfRU9GKSB7CkluZGV4OiBtb2R1bGVzL21hcHBlcnMvbW9kX3Jld3JpdGUuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBtb2R1bGVzL21hcHBlcnMvbW9kX3Jld3JpdGUuYwkocmV2aXNpb24gMTcyMjE0 MykKKysrIG1vZHVsZXMvbWFwcGVycy9tb2RfcmV3cml0ZS5jCSh3b3JraW5nIGNvcHkpCkBAIC01 MTcsNyArNTE3LDcgQEAgc3RhdGljIHVuc2lnbmVkIGlzX2Fic29sdXRlX3VyaShjaGFyICp1cmks IGludCAqc3UKICAgICBzd2l0Y2ggKCp1cmkrKykgewogICAgIGNhc2UgJ2EnOgogICAgIGNhc2Ug J0EnOgotICAgICAgICBpZiAoIXN0cm5jYXNlY21wKHVyaSwgImpwOi8vIiwgNSkpIHsgICAgICAg IC8qIGFqcDovLyAgICAqLworICAgICAgICBpZiAoIWFwX2Nhc2VjbXBzdHJuKHVyaSwgImpwOi8v IiwgNSkpIHsgICAgICAgIC8qIGFqcDovLyAgICAqLwogICAgICAgICAgICpzcXMgPSAxOwogICAg ICAgICAgIHJldHVybiA2OwogICAgICAgICB9CkBAIC01MjUsNyArNTI1LDcgQEAgc3RhdGljIHVu c2lnbmVkIGlzX2Fic29sdXRlX3VyaShjaGFyICp1cmksIGludCAqc3UKIAogICAgIGNhc2UgJ2In OgogICAgIGNhc2UgJ0InOgotICAgICAgICBpZiAoIXN0cm5jYXNlY21wKHVyaSwgImFsYW5jZXI6 Ly8iLCAxMCkpIHsgICAvKiBiYWxhbmNlcjovLyAqLworICAgICAgICBpZiAoIWFwX2Nhc2VjbXBz dHJuKHVyaSwgImFsYW5jZXI6Ly8iLCAxMCkpIHsgICAvKiBiYWxhbmNlcjovLyAqLwogICAgICAg ICAgICpzcXMgPSAxOwogICAgICAgICAgIHJldHVybiAxMTsKICAgICAgICAgfQpAQCAtNTMzLDEw ICs1MzMsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGlzX2Fic29sdXRlX3VyaShjaGFyICp1cmksIGlu dCAqc3UKIAogICAgIGNhc2UgJ2YnOgogICAgIGNhc2UgJ0YnOgotICAgICAgICBpZiAoIXN0cm5j YXNlY21wKHVyaSwgInRwOi8vIiwgNSkpIHsgICAgICAgIC8qIGZ0cDovLyAgICAqLworICAgICAg ICBpZiAoIWFwX2Nhc2VjbXBzdHJuKHVyaSwgInRwOi8vIiwgNSkpIHsgICAgICAgIC8qIGZ0cDov LyAgICAqLwogICAgICAgICAgICAgcmV0dXJuIDY7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFz dHJuY2FzZWNtcCh1cmksICJjZ2k6Ly8iLCA2KSkgeyAgICAgICAvKiBmY2dpOi8vICAgKi8KKyAg ICAgICAgaWYgKCFhcF9jYXNlY21wc3Rybih1cmksICJjZ2k6Ly8iLCA2KSkgeyAgICAgICAvKiBm Y2dpOi8vICAgKi8KICAgICAgICAgICAgICpzcXMgPSAxOwogICAgICAgICAgICAgcmV0dXJuIDc7 CiAgICAgICAgIH0KQEAgLTU0NCw3ICs1NDQsNyBAQCBzdGF0aWMgdW5zaWduZWQgaXNfYWJzb2x1 dGVfdXJpKGNoYXIgKnVyaSwgaW50ICpzdQogCiAgICAgY2FzZSAnZyc6CiAgICAgY2FzZSAnRyc6 Ci0gICAgICAgIGlmICghc3RybmNhc2VjbXAodXJpLCAib3BoZXI6Ly8iLCA4KSkgeyAgICAgLyog Z29waGVyOi8vICovCisgICAgICAgIGlmICghYXBfY2FzZWNtcHN0cm4odXJpLCAib3BoZXI6Ly8i LCA4KSkgeyAgICAgLyogZ29waGVyOi8vICovCiAgICAgICAgICAgICByZXR1cm4gOTsKICAgICAg ICAgfQogICAgICAgICBicmVhazsKQEAgLTU1MSwxMSArNTUxLDExIEBAIHN0YXRpYyB1bnNpZ25l ZCBpc19hYnNvbHV0ZV91cmkoY2hhciAqdXJpLCBpbnQgKnN1CiAKICAgICBjYXNlICdoJzoKICAg ICBjYXNlICdIJzoKLSAgICAgICAgaWYgKCFzdHJuY2FzZWNtcCh1cmksICJ0dHA6Ly8iLCA2KSkg eyAgICAgICAvKiBodHRwOi8vICAgKi8KKyAgICAgICAgaWYgKCFhcF9jYXNlY21wc3Rybih1cmks ICJ0dHA6Ly8iLCA2KSkgeyAgICAgICAvKiBodHRwOi8vICAgKi8KICAgICAgICAgICAgICpzcXMg PSAxOwogICAgICAgICAgICAgcmV0dXJuIDc7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAo IXN0cm5jYXNlY21wKHVyaSwgInR0cHM6Ly8iLCA3KSkgeyAvKiBodHRwczovLyAgKi8KKyAgICAg ICAgZWxzZSBpZiAoIWFwX2Nhc2VjbXBzdHJuKHVyaSwgInR0cHM6Ly8iLCA3KSkgeyAvKiBodHRw czovLyAgKi8KICAgICAgICAgICAgICpzcXMgPSAxOwogICAgICAgICAgICAgcmV0dXJuIDg7CiAg ICAgICAgIH0KQEAgLTU2Myw3ICs1NjMsNyBAQCBzdGF0aWMgdW5zaWduZWQgaXNfYWJzb2x1dGVf dXJpKGNoYXIgKnVyaSwgaW50ICpzdQogCiAgICAgY2FzZSAnbCc6CiAgICAgY2FzZSAnTCc6Ci0g ICAgICAgIGlmICghc3RybmNhc2VjbXAodXJpLCAiZGFwOi8vIiwgNikpIHsgICAgICAgLyogbGRh cDovLyAgICovCisgICAgICAgIGlmICghYXBfY2FzZWNtcHN0cm4odXJpLCAiZGFwOi8vIiwgNikp IHsgICAgICAgLyogbGRhcDovLyAgICovCiAgICAgICAgICAgICByZXR1cm4gNzsKICAgICAgICAg fQogICAgICAgICBicmVhazsKQEAgLTU3MCw3ICs1NzAsNyBAQCBzdGF0aWMgdW5zaWduZWQgaXNf YWJzb2x1dGVfdXJpKGNoYXIgKnVyaSwgaW50ICpzdQogCiAgICAgY2FzZSAnbSc6CiAgICAgY2Fz ZSAnTSc6Ci0gICAgICAgIGlmICghc3RybmNhc2VjbXAodXJpLCAiYWlsdG86IiwgNikpIHsgICAg ICAgLyogbWFpbHRvOiAgICovCisgICAgICAgIGlmICghYXBfY2FzZWNtcHN0cm4odXJpLCAiYWls dG86IiwgNikpIHsgICAgICAgLyogbWFpbHRvOiAgICovCiAgICAgICAgICAgICAqc3FzID0gMTsK ICAgICAgICAgICAgIHJldHVybiA3OwogICAgICAgICB9CkBAIC01NzgsMTAgKzU3OCwxMCBAQCBz dGF0aWMgdW5zaWduZWQgaXNfYWJzb2x1dGVfdXJpKGNoYXIgKnVyaSwgaW50ICpzdQogCiAgICAg Y2FzZSAnbic6CiAgICAgY2FzZSAnTic6Ci0gICAgICAgIGlmICghc3RybmNhc2VjbXAodXJpLCAi ZXdzOiIsIDQpKSB7ICAgICAgICAgLyogbmV3czogICAgICovCisgICAgICAgIGlmICghYXBfY2Fz ZWNtcHN0cm4odXJpLCAiZXdzOiIsIDQpKSB7ICAgICAgICAgLyogbmV3czogICAgICovCiAgICAg ICAgICAgICByZXR1cm4gNTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICghc3RybmNhc2Vj bXAodXJpLCAibnRwOi8vIiwgNikpIHsgIC8qIG5udHA6Ly8gICAqLworICAgICAgICBlbHNlIGlm ICghYXBfY2FzZWNtcHN0cm4odXJpLCAibnRwOi8vIiwgNikpIHsgIC8qIG5udHA6Ly8gICAqLwog ICAgICAgICAgICAgcmV0dXJuIDc7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC01ODgs NyArNTg4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGlzX2Fic29sdXRlX3VyaShjaGFyICp1cmksIGlu dCAqc3UKIAogICAgIGNhc2UgJ3MnOgogICAgIGNhc2UgJ1MnOgotICAgICAgICBpZiAoIXN0cm5j YXNlY21wKHVyaSwgImNnaTovLyIsIDYpKSB7ICAgICAgIC8qIHNjZ2k6Ly8gICAqLworICAgICAg ICBpZiAoIWFwX2Nhc2VjbXBzdHJuKHVyaSwgImNnaTovLyIsIDYpKSB7ICAgICAgIC8qIHNjZ2k6 Ly8gICAqLwogICAgICAgICAgICAgKnNxcyA9IDE7CiAgICAgICAgICAgICByZXR1cm4gNzsKICAg ICAgICAgfQpAQCAtNTk2LDExICs1OTYsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGlzX2Fic29sdXRl X3VyaShjaGFyICp1cmksIGludCAqc3UKIAogICAgIGNhc2UgJ3cnOgogICAgIGNhc2UgJ1cnOgot ICAgICAgICBpZiAoIXN0cm5jYXNlY21wKHVyaSwgInM6Ly8iLCA0KSkgeyAgICAgICAgLyogd3M6 Ly8gICAgICovCisgICAgICAgIGlmICghYXBfY2FzZWNtcHN0cm4odXJpLCAiczovLyIsIDQpKSB7 ICAgICAgICAvKiB3czovLyAgICAgKi8KICAgICAgICAgICAgICpzcXMgPSAxOwogICAgICAgICAg ICAgcmV0dXJuIDU7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIXN0cm5jYXNlY21wKHVy aSwgInNzOi8vIiwgNSkpIHsgIC8qIHdzczovLyAgICAqLworICAgICAgICBlbHNlIGlmICghYXBf Y2FzZWNtcHN0cm4odXJpLCAic3M6Ly8iLCA1KSkgeyAgLyogd3NzOi8vICAgICovCiAgICAgICAg ICAgICAqc3FzID0gMTsKICAgICAgICAgICAgIHJldHVybiA2OwogICAgICAgICB9CkBAIC02ODgs NyArNjg4LDcgQEAgc3RhdGljIGNoYXIgKmVzY2FwZV9hYnNvbHV0ZV91cmkoYXByX3Bvb2xfdCAq cCwgY2gKICAgICAgICAgICogICAgICAgICAgICAgICBbZG4gWyI/IiBbYXR0cmlidXRlc10gWyI/ IiBbc2NvcGVdCiAgICAgICAgICAqICAgICAgICAgICAgICAgWyI/IiBbZmlsdGVyXSBbIj8iIGV4 dGVuc2lvbnNdXV1dXV0KICAgICAgICAgICovCi0gICAgICAgIGlmICghc3RybmNhc2VjbXAodXJp LCAibGRhcCIsIDQpKSB7CisgICAgICAgIGlmICghYXBfY2FzZWNtcHN0cm4odXJpLCAibGRhcCIs IDQpKSB7CiAgICAgICAgICAgICBjaGFyICp0b2tlbls1XTsKICAgICAgICAgICAgIGludCBjID0g MDsKIApAQCAtNzgzLDcgKzc4Myw3IEBAIHN0YXRpYyB2b2lkIHJlZHVjZV91cmkocmVxdWVzdF9y ZWMgKnIpCiAgICAgY3AgPSAoY2hhciAqKWFwX2h0dHBfc2NoZW1lKHIpOwogICAgIGwgID0gc3Ry bGVuKGNwKTsKICAgICBpZiAoICAgc3RybGVuKHItPmZpbGVuYW1lKSA+IGwrMwotICAgICAgICAm JiBzdHJuY2FzZWNtcChyLT5maWxlbmFtZSwgY3AsIGwpID09IDAKKyAgICAgICAgJiYgYXBfY2Fz ZWNtcHN0cm4oci0+ZmlsZW5hbWUsIGNwLCBsKSA9PSAwCiAgICAgICAgICYmIHItPmZpbGVuYW1l W2xdICAgPT0gJzonCiAgICAgICAgICYmIHItPmZpbGVuYW1lW2wrMV0gPT0gJy8nCiAgICAgICAg ICYmIHItPmZpbGVuYW1lW2wrMl0gPT0gJy8nICkgewpAQCAtMjU0MywxNCArMjU0MywxNCBAQCBz dGF0aWMgdm9pZCBhZGRfY29va2llKHJlcXVlc3RfcmVjICpyLCBjaGFyICpzKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOiBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXhwaXJlcyA/IChleHBfdGltZSA/IGV4cF90aW1lIDogIiIpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6IE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2VjdXJlICYmICghc3RyY2FzZWNtcChzZWN1cmUsICJ0cnVlIikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzZWN1cmUgJiYgKCFhcF9jYXNlY21wc3RyKHNlY3Vy ZSwgInRydWUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fHwgIXN0cmNtcChzZWN1cmUsICIxIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHx8ICFzdHJjYXNlY21wKHNlY3VyZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFhcF9jYXNlY21wc3RyKHNlY3VyZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJz ZWN1cmUiKSkpID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOyBzZWN1cmUi IDogTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChodHRwb25seSAmJiAo IXN0cmNhc2VjbXAoaHR0cG9ubHksICJ0cnVlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChodHRwb25seSAmJiAoIWFwX2Nhc2VjbXBzdHIoaHR0cG9ubHksICJ0cnVlIikKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgIXN0cmNtcCho dHRwb25seSwgIjEiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8fCAhc3RyY2FzZWNtcChodHRwb25seSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfHwgIWFwX2Nhc2VjbXBzdHIoaHR0cG9ubHksCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJI dHRwT25seSIpKSkgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI7IEh0dHBP bmx5IiA6IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKSW5k ZXg6IG1vZHVsZXMvbWFwcGVycy9tb2Rfdmhvc3RfYWxpYXMuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtb2R1 bGVzL21hcHBlcnMvbW9kX3Zob3N0X2FsaWFzLmMJKHJldmlzaW9uIDE3MjIxNDMpCisrKyBtb2R1 bGVzL21hcHBlcnMvbW9kX3Zob3N0X2FsaWFzLmMJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsx NTIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqdmhvc3RfYWxpYXNfc2V0KGNtZF9wYXJtcyAqY21k LAogICAgIH0KIAogICAgIGlmICghYXBfb3NfaXNfcGF0aF9hYnNvbHV0ZShjbWQtPnBvb2wsIG1h cCkpIHsKLSAgICAgICAgaWYgKHN0cmNhc2VjbXAobWFwLCAibm9uZSIpKSB7CisgICAgICAgIGlm IChhcF9jYXNlY21wc3RyKG1hcCwgIm5vbmUiKSkgewogICAgICAgICAgICAgcmV0dXJuICJmb3Jt YXQgc3RyaW5nIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aCwgb3IgJ25vbmUnIjsKICAgICAgICAg fQogICAgICAgICAqcG1hcCA9IE5VTEw7CkluZGV4OiBtb2R1bGVzL21ldGFkYXRhL21vZF9jZXJu X21ldGEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBtb2R1bGVzL21ldGFkYXRhL21vZF9jZXJuX21ldGEuYwko cmV2aXNpb24gMTcyMjE0MykKKysrIG1vZHVsZXMvbWV0YWRhdGEvbW9kX2Nlcm5fbWV0YS5jCSh3 b3JraW5nIGNvcHkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGljIGludCBzY2FuX21ldGFfZmls ZShyZXF1ZXN0X3JlYyAqciwgYXByX2ZpbGUKICAgICAgICAgd2hpbGUgKGFwcl9pc3NwYWNlKCps KSkKICAgICAgICAgICAgICsrbDsKIAotICAgICAgICBpZiAoIXN0cmNhc2VjbXAodywgIkNvbnRl bnQtdHlwZSIpKSB7CisgICAgICAgIGlmICghYXBfY2FzZWNtcHN0cih3LCAiQ29udGVudC10eXBl IikpIHsKICAgICAgICAgICAgIGNoYXIgKnRtcDsKICAgICAgICAgICAgIC8qIE51a2UgdHJhaWxp bmcgd2hpdGVzcGFjZSAqLwogCkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGljIGludCBzY2FuX21l dGFfZmlsZShyZXF1ZXN0X3JlYyAqciwgYXByX2ZpbGUKICAgICAgICAgICAgIGFwX2NvbnRlbnRf dHlwZV90b2xvd2VyKHRtcCk7CiAgICAgICAgICAgICBhcF9zZXRfY29udGVudF90eXBlKHIsIHRt cCk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAodywgIlN0YXR1cyIp KSB7CisgICAgICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3RyKHcsICJTdGF0dXMiKSkgewogICAg ICAgICAgICAgc3NjYW5mKGwsICIlZCIsICZyLT5zdGF0dXMpOwogICAgICAgICAgICAgci0+c3Rh dHVzX2xpbmUgPSBhcHJfcHN0cmR1cChyLT5wb29sLCBsKTsKICAgICAgICAgfQpJbmRleDogbW9k dWxlcy9tZXRhZGF0YS9tb2RfaGVhZGVycy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1vZHVsZXMvbWV0YWRh dGEvbW9kX2hlYWRlcnMuYwkocmV2aXNpb24gMTcyMjE0MykKKysrIG1vZHVsZXMvbWV0YWRhdGEv bW9kX2hlYWRlcnMuYwkod29ya2luZyBjb3B5KQpAQCAtNzg5LDcgKzc4OSw3IEBAIHN0YXRpYyBp bnQgZG9faGVhZGVyc19maXh1cChyZXF1ZXN0X3JlYyAqciwgYXByX3RhCiAgICAgICAgICAgICB9 CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBoZHJfc2V0OgotICAgICAgICAgICAg aWYgKCFzdHJjYXNlY21wKGhkci0+aGVhZGVyLCAiQ29udGVudC1UeXBlIikpIHsKKyAgICAgICAg ICAgIGlmICghYXBfY2FzZWNtcHN0cihoZHItPmhlYWRlciwgIkNvbnRlbnQtVHlwZSIpKSB7CiAg ICAgICAgICAgICAgICAgIGFwX3NldF9jb250ZW50X3R5cGUociwgcHJvY2Vzc190YWdzKGhkciwg cikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXByX3RhYmxlX3NldG4oaGVhZGVycywg aGRyLT5oZWFkZXIsIHByb2Nlc3NfdGFncyhoZHIsIHIpKTsKQEAgLTc5Niw3ICs3OTYsNyBAQCBz dGF0aWMgaW50IGRvX2hlYWRlcnNfZml4dXAocmVxdWVzdF9yZWMgKnIsIGFwcl90YQogICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgaGRyX3NldGlmZW1wdHk6CiAgICAgICAgICAgICBp ZiAoTlVMTCA9PSBhcHJfdGFibGVfZ2V0KGhlYWRlcnMsIGhkci0+aGVhZGVyKSkgewotICAgICAg ICAgICAgICAgIGlmICghc3RyY2FzZWNtcChoZHItPmhlYWRlciwgIkNvbnRlbnQtVHlwZSIpKSB7 CisgICAgICAgICAgICAgICAgaWYgKCFhcF9jYXNlY21wc3RyKGhkci0+aGVhZGVyLCAiQ29udGVu dC1UeXBlIikpIHsKICAgICAgICAgICAgICAgICAgICAgYXBfc2V0X2NvbnRlbnRfdHlwZShyLCBw cm9jZXNzX3RhZ3MoaGRyLCByKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg IGFwcl90YWJsZV9zZXRuKGhlYWRlcnMsIGhkci0+aGVhZGVyLCBwcm9jZXNzX3RhZ3MoaGRyLCBy KSk7CkBAIC04MTMsNyArODEzLDcgQEAgc3RhdGljIGludCBkb19oZWFkZXJzX2ZpeHVwKHJlcXVl c3RfcmVjICpyLCBhcHJfdGEKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGhkcl9l ZGl0OgogICAgICAgICBjYXNlIGhkcl9lZGl0X3I6Ci0gICAgICAgICAgICBpZiAoIXN0cmNhc2Vj bXAoaGRyLT5oZWFkZXIsICJDb250ZW50LVR5cGUiKSAmJiByLT5jb250ZW50X3R5cGUpIHsKKyAg ICAgICAgICAgIGlmICghYXBfY2FzZWNtcHN0cihoZHItPmhlYWRlciwgIkNvbnRlbnQtVHlwZSIp ICYmIHItPmNvbnRlbnRfdHlwZSkgewogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlcGwg PSBwcm9jZXNzX3JlZ2V4cChoZHIsIHItPmNvbnRlbnRfdHlwZSwgcik7CiAgICAgICAgICAgICAg ICAgaWYgKHJlcGwgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkluZGV4 OiBtb2R1bGVzL3Byb3h5L2FqcF9oZWFkZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtb2R1bGVzL3Byb3h5 L2FqcF9oZWFkZXIuYwkocmV2aXNpb24gMTcyMjE0MykKKysrIG1vZHVsZXMvcHJveHkvYWpwX2hl YWRlci5jCSh3b3JraW5nIGNvcHkpCkBAIC02MzMsMTUgKzYzMywxNSBAQCBzdGF0aWMgYXByX3N0 YXR1c190IGFqcF91bm1hcnNoYWxfcmVzcG9uc2UoYWpwX21zZwogICAgICAgICB9CiAKICAgICAg ICAgLyogU2V0LUNvb2tpZSBuZWVkIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyAqLwotICAgICAgICBp ZiAoIXN0cmNhc2VjbXAoc3RyaW5nbmFtZSwgIlNldC1Db29raWUiKSkgeworICAgICAgICBpZiAo IWFwX2Nhc2VjbXBzdHIoc3RyaW5nbmFtZSwgIlNldC1Db29raWUiKSkgewogICAgICAgICAgICAg dmFsdWUgPSBhcF9wcm94eV9jb29raWVfcmV2ZXJzZV9tYXAociwgZGNvbmYsIHZhbHVlKTsKICAg ICAgICAgfQogICAgICAgICAvKiBMb2NhdGlvbiwgQ29udGVudC1Mb2NhdGlvbiwgVVJJIGFuZCBE ZXN0aW5hdGlvbiBuZWVkIGFkZGl0aW9uYWwKICAgICAgICAgICogcHJvY2Vzc2luZyAqLwotICAg ICAgICBlbHNlIGlmICghc3RyY2FzZWNtcChzdHJpbmduYW1lLCAiTG9jYXRpb24iKQotICAgICAg ICAgICAgICAgICB8fCAhc3RyY2FzZWNtcChzdHJpbmduYW1lLCAiQ29udGVudC1Mb2NhdGlvbiIp Ci0gICAgICAgICAgICAgICAgIHx8ICFzdHJjYXNlY21wKHN0cmluZ25hbWUsICJVUkkiKQotICAg ICAgICAgICAgICAgICB8fCAhc3RyY2FzZWNtcChzdHJpbmduYW1lLCAiRGVzdGluYXRpb24iKSkK KyAgICAgICAgZWxzZSBpZiAoIWFwX2Nhc2VjbXBzdHIoc3RyaW5nbmFtZSwgIkxvY2F0aW9uIikK KyAgICAgICAgICAgICAgICAgfHwgIWFwX2Nhc2VjbXBzdHIoc3RyaW5nbmFtZSwgIkNvbnRlbnQt TG9jYXRpb24iKQorICAgICAgICAgICAgICAgICB8fCAhYXBfY2FzZWNtcHN0cihzdHJpbmduYW1l LCAiVVJJIikKKyAgICAgICAgICAgICAgICAgfHwgIWFwX2Nhc2VjbXBzdHIoc3RyaW5nbmFtZSwg IkRlc3RpbmF0aW9uIikpCiAgICAgICAgIHsKICAgICAgICAgICB2YWx1ZSA9IGFwX3Byb3h5X2xv Y2F0aW9uX3JldmVyc2VfbWFwKHIsIGRjb25mLCB2YWx1ZSk7CiAgICAgICAgIH0KQEAgLTY1NCw3 ICs2NTQsNyBAQCBzdGF0aWMgYXByX3N0YXR1c190IGFqcF91bm1hcnNoYWxfcmVzcG9uc2UoYWpw X21zZwogICAgICAgICBhcHJfdGFibGVfYWRkKHItPmhlYWRlcnNfb3V0LCBzdHJpbmduYW1lLCB2 YWx1ZSk7CiAKICAgICAgICAgLyogQ29udGVudC10eXBlIG5lZWRzIGFuIGFkZGl0aW9uYWwgaGFu ZGxpbmcgKi8KLSAgICAgICAgaWYgKHN0cmNhc2VjbXAoc3RyaW5nbmFtZSwgIkNvbnRlbnQtVHlw ZSIpID09IDApIHsKKyAgICAgICAgaWYgKGFwX2Nhc2VjbXBzdHIoc3RyaW5nbmFtZSwgIkNvbnRl bnQtVHlwZSIpID09IDApIHsKICAgICAgICAgICAgICAvKiBhZGQgY29ycmVzcG9uZGluZyBmaWx0 ZXIgKi8KICAgICAgICAgICAgIGFwX3NldF9jb250ZW50X3R5cGUociwgYXByX3BzdHJkdXAoci0+ cG9vbCwgdmFsdWUpKTsKICAgICAgICAgICAgIGFwX2xvZ19yZXJyb3IoQVBMT0dfTUFSSywgQVBM T0dfVFJBQ0U1LCAwLCByLApJbmRleDogbW9kdWxlcy9wcm94eS9tb2RfcHJveHkuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBtb2R1bGVzL3Byb3h5L21vZF9wcm94eS5jCShyZXZpc2lvbiAxNzIyMTQzKQorKysg bW9kdWxlcy9wcm94eS9tb2RfcHJveHkuYwkod29ya2luZyBjb3B5KQpAQCAtNTEyLDcgKzUxMiw3 IEBAIHN0YXRpYyBpbnQgcHJveHlfZGV0ZWN0KHJlcXVlc3RfcmVjICpyKQogICAgIGlmIChjb25m LT5yZXEgJiYgci0+cGFyc2VkX3VyaS5zY2hlbWUpIHsKICAgICAgICAgLyogYnV0IGl0IG1pZ2h0 IGJlIHNvbWV0aGluZyB2aG9zdGVkICovCiAgICAgICAgIGlmICghKHItPnBhcnNlZF91cmkuaG9z dG5hbWUKLSAgICAgICAgICAgICAgJiYgIXN0cmNhc2VjbXAoci0+cGFyc2VkX3VyaS5zY2hlbWUs IGFwX2h0dHBfc2NoZW1lKHIpKQorICAgICAgICAgICAgICAmJiAhYXBfY2FzZWNtcHN0cihyLT5w YXJzZWRfdXJpLnNjaGVtZSwgYXBfaHR0cF9zY2hlbWUocikpCiAgICAgICAgICAgICAgICYmIGFw X21hdGNoZXNfcmVxdWVzdF92aG9zdChyLCByLT5wYXJzZWRfdXJpLmhvc3RuYW1lLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcl9wb3J0X3QpKHItPnBhcnNl ZF91cmkucG9ydF9zdHIgPyByLT5wYXJzZWRfdXJpLnBvcnQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFwX2RlZmF1bHRfcG9ydChyKSkp KSkgewpAQCAtODkxLDcgKzg5MSw3IEBAIHN0YXRpYyBpbnQgcHJveHlfbmVlZHNkb21haW4ocmVx dWVzdF9yZWMgKnIsIGNvbnN0CiAgICAgLyogSWYgaG9zdCBkb2VzIGNvbnRhaW4gYSBkb3QgYWxy ZWFkeSwgb3IgaXQgaXMgImxvY2FsaG9zdCIsIGRlY2xpbmUgKi8KICAgICBpZiAoc3RyY2hyKHIt PnBhcnNlZF91cmkuaG9zdG5hbWUsICcuJykgIT0gTlVMTCAvKiBoYXMgZG9tYWluLCBvciBJUHY0 IGxpdGVyYWwgKi8KICAgICAgfHwgc3RyY2hyKHItPnBhcnNlZF91cmkuaG9zdG5hbWUsICc6Jykg IT0gTlVMTCAvKiBJUHY2IGxpdGVyYWwgKi8KLSAgICAgfHwgc3RyY2FzZWNtcChyLT5wYXJzZWRf dXJpLmhvc3RuYW1lLCAibG9jYWxob3N0IikgPT0gMCkKKyAgICAgfHwgYXBfY2FzZWNtcHN0cihy LT5wYXJzZWRfdXJpLmhvc3RuYW1lLCAibG9jYWxob3N0IikgPT0gMCkKICAgICAgICAgcmV0dXJu IERFQ0xJTkVEOyAgICAvKiBob3N0IG5hbWUgaGFzIGEgZG90IGFscmVhZHkgKi8KIAogICAgIHJl ZiA9IGFwcl90YWJsZV9nZXQoci0+aGVhZGVyc19pbiwgIlJlZmVyZXIiKTsKQEAgLTEwOTcsOSAr MTA5Nyw5IEBAIHN0YXRpYyBpbnQgcHJveHlfaGFuZGxlcihyZXF1ZXN0X3JlYyAqcikKICAgICAg ICAgICAgICAgICBpZiAoc3RyY21wKGVudHNbaV0uc2NoZW1lLCAiKiIpID09IDAgfHwKICAgICAg ICAgICAgICAgICAgICAgKGVudHNbaV0udXNlX3JlZ2V4ICYmCiAgICAgICAgICAgICAgICAgICAg ICBhcF9yZWdleGVjKGVudHNbaV0ucmVnZXhwLCB1cmwsIDAsIE5VTEwsIDApID09IDApIHx8Ci0g ICAgICAgICAgICAgICAgICAgIChwMiA9PSBOVUxMICYmIHN0cmNhc2VjbXAoc2NoZW1lLCBlbnRz W2ldLnNjaGVtZSkgPT0gMCkgfHwKKyAgICAgICAgICAgICAgICAgICAgKHAyID09IE5VTEwgJiYg YXBfY2FzZWNtcHN0cihzY2hlbWUsIGVudHNbaV0uc2NoZW1lKSA9PSAwKSB8fAogICAgICAgICAg ICAgICAgICAgICAocDIgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgICAgICBzdHJuY2FzZWNt cCh1cmwsIGVudHNbaV0uc2NoZW1lLAorICAgICAgICAgICAgICAgICAgICBhcF9jYXNlY21wc3Ry bih1cmwsIGVudHNbaV0uc2NoZW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJsZW4oZW50c1tpXS5zY2hlbWUpKSA9PSAwKSkgewogCiAgICAgICAgICAgICAgICAgICAgIC8q IGhhbmRsZSB0aGUgc2NoZW1lICovCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBQUk9YWV9ERUNMQVJF KGNvbnN0IGNoYXIgKikgYXBfcHJveHlfZGVfc29ja2V0ZnkoYQogICAgICAqIFdlIGNvdWxkIGJl IHBhc3NlZCBhIFVSTCBkdXJpbmcgdGhlIGNvbmZpZyBzdGFnZSB0aGF0IGNvbnRhaW5zCiAgICAg ICogdGhlIFVEUyBwYXRoLi4uIGlnbm9yZSBpdAogICAgICAqLwotICAgIGlmICghc3RybmNhc2Vj bXAodXJsLCAidW5peDoiLCA1KSAmJgorICAgIGlmICghYXBfY2FzZWNtcHN0cm4odXJsLCAidW5p eDoiLCA1KSAmJgogICAgICAgICAoKHB0ciA9IGFwX3N0cmNocl9jKHVybCwgJ3wnKSkgIT0gTlVM TCkpIHsKICAgICAgICAgLyogbW92ZSBwYXN0IHRoZSAndW5peDouLi58JyBVRFMgcGF0aCBpbmZv ICovCiAgICAgICAgIGNvbnN0IGNoYXIgKnJldCwgKmM7CkluZGV4OiBtb2R1bGVzL3Byb3h5L21v ZF9wcm94eV9hanAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtb2R1bGVzL3Byb3h5L21vZF9wcm94eV9hanAu YwkocmV2aXNpb24gMTcyMjE0MykKKysrIG1vZHVsZXMvcHJveHkvbW9kX3Byb3h5X2FqcC5jCSh3 b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHN0YXRpYyBpbnQgcHJveHlfYWpwX2Nhbm9u KHJlcXVlc3RfcmVjICpyLCBjaGFyICp1CiAgICAgYXByX3BvcnRfdCBwb3J0LCBkZWZfcG9ydDsK IAogICAgIC8qIGFwX3BvcnRfb2Zfc2NoZW1lKCkgKi8KLSAgICBpZiAoc3RybmNhc2VjbXAodXJs LCAiYWpwOiIsIDQpID09IDApIHsKKyAgICBpZiAoYXBfY2FzZWNtcHN0cm4odXJsLCAiYWpwOiIs IDQpID09IDApIHsKICAgICAgICAgdXJsICs9IDQ7CiAgICAgfQogICAgIGVsc2UgewpAQCAtMjQ1 LDcgKzI0NSw3IEBAIHN0YXRpYyBpbnQgYXBfcHJveHlfYWpwX3JlcXVlc3QoYXByX3Bvb2xfdCAq cCwgcmVxCiAgICAgLyogcmVhZCB0aGUgZmlyc3QgYmxvYyBvZiBkYXRhICovCiAgICAgaW5wdXRf YnJpZ2FkZSA9IGFwcl9icmlnYWRlX2NyZWF0ZShwLCByLT5jb25uZWN0aW9uLT5idWNrZXRfYWxs b2MpOwogICAgIHRlbmMgPSBhcHJfdGFibGVfZ2V0KHItPmhlYWRlcnNfaW4sICJUcmFuc2Zlci1F bmNvZGluZyIpOwotICAgIGlmICh0ZW5jICYmIChzdHJjYXNlY21wKHRlbmMsICJjaHVua2VkIikg PT0gMCkpIHsKKyAgICBpZiAodGVuYyAmJiAoYXBfY2FzZWNtcHN0cih0ZW5jLCAiY2h1bmtlZCIp ID09IDApKSB7CiAgICAgICAgIC8qIFRoZSBBSlAgcHJvdG9jb2wgZG9lcyBub3Qgd2FudCBib2R5 IGRhdGEgeWV0ICovCiAgICAgICAgIGFwX2xvZ19yZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfREVC VUcsIDAsIHIsIEFQTE9HTk8oMDA4NzApICJyZXF1ZXN0IGlzIGNodW5rZWQiKTsKICAgICB9IGVs c2UgewpAQCAtNzM0LDcgKzczNCw3IEBAIHN0YXRpYyBpbnQgcHJveHlfYWpwX2hhbmRsZXIocmVx dWVzdF9yZWMgKnIsIHByb3h5CiAgICAgYXByX3Bvb2xfdCAqcCA9IHItPnBvb2w7CiAgICAgYXBy X3VyaV90ICp1cmk7CiAKLSAgICBpZiAoc3RybmNhc2VjbXAodXJsLCAiYWpwOiIsIDQpICE9IDAp IHsKKyAgICBpZiAoYXBfY2FzZWNtcHN0cm4odXJsLCAiYWpwOiIsIDQpICE9IDApIHsKICAgICAg ICAgYXBfbG9nX3JlcnJvcihBUExPR19NQVJLLCBBUExPR19ERUJVRywgMCwgciwgQVBMT0dOTygw MDg5NCkgImRlY2xpbmluZyBVUkwgJXMiLCB1cmwpOwogICAgICAgICByZXR1cm4gREVDTElORUQ7 CiAgICAgfQpJbmRleDogbW9kdWxlcy9wcm94eS9tb2RfcHJveHlfYmFsYW5jZXIuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBtb2R1bGVzL3Byb3h5L21vZF9wcm94eV9iYWxhbmNlci5jCShyZXZpc2lvbiAxNzIy MTQzKQorKysgbW9kdWxlcy9wcm94eS9tb2RfcHJveHlfYmFsYW5jZXIuYwkod29ya2luZyBjb3B5 KQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgaW50IHByb3h5X2JhbGFuY2VyX2Nhbm9uKHJlcXVl c3RfcmVjICpyLCBjaAogICAgIGFwcl9wb3J0X3QgcG9ydCA9IDA7CiAKICAgICAvKiBUT0RPOiBv ZmZzZXQgb2YgQkFMQU5DRVJfUFJFRklYID8/ICovCi0gICAgaWYgKHN0cm5jYXNlY21wKHVybCwg ImJhbGFuY2VyOiIsIDkpID09IDApIHsKKyAgICBpZiAoYXBfY2FzZWNtcHN0cm4odXJsLCAiYmFs YW5jZXI6IiwgOSkgPT0gMCkgewogICAgICAgICB1cmwgKz0gOTsKICAgICB9CiAgICAgZWxzZSB7 CkBAIC0xMzc4LDcgKzEzNzgsNyBAQCBzdGF0aWMgaW50IGJhbGFuY2VyX2hhbmRsZXIocmVxdWVz dF9yZWMgKnIpCiAgICAgICAgICAgICAgICAgYXBfcnByaW50ZihyLCAiICAgICAgICAgIDxodHRw ZDpsYnNldD4lZDwvaHR0cGQ6bGJzZXQ+XG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg d29ya2VyLT5zLT5sYnNldCk7CiAgICAgICAgICAgICAgICAgLyogRW5kIHByb3h5X3dvcmtlcl9z dGF0ICovCi0gICAgICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wKHdvcmtlci0+cy0+c2NoZW1l LCAiYWpwIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWFwX2Nhc2VjbXBzdHIod29ya2VyLT5z LT5zY2hlbWUsICJhanAiKSkgewogICAgICAgICAgICAgICAgICAgICBhcF9ycHV0cygiICAgICAg ICAgIDxodHRwZDpmbHVzaHBhY2tldHM+Iiwgcik7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRj aCAod29ya2VyLT5zLT5mbHVzaF9wYWNrZXRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBj YXNlIGZsdXNoX29mZjoKSW5kZXg6IG1vZHVsZXMvcHJveHkvbW9kX3Byb3h5X2ZjZ2kuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBtb2R1bGVzL3Byb3h5L21vZF9wcm94eV9mY2dpLmMJKHJldmlzaW9uIDE3MjIx NDMpCisrKyBtb2R1bGVzL3Byb3h5L21vZF9wcm94eV9mY2dpLmMJKHdvcmtpbmcgY29weSkKQEAg LTM5LDcgKzM5LDcgQEAgc3RhdGljIGludCBwcm94eV9mY2dpX2Nhbm9uKHJlcXVlc3RfcmVjICpy LCBjaGFyICoKICAgICBmY2dpX3JlcV9jb25maWdfdCAqcmNvbmYgPSBOVUxMOwogICAgIGNvbnN0 IGNoYXIgKnBhdGhpbmZvX3R5cGUgPSBOVUxMOwogCi0gICAgaWYgKHN0cm5jYXNlY21wKHVybCwg ImZjZ2k6IiwgNSkgPT0gMCkgeworICAgIGlmIChhcF9jYXNlY21wc3Rybih1cmwsICJmY2dpOiIs IDUpID09IDApIHsKICAgICAgICAgdXJsICs9IDU7CiAgICAgfQogICAgIGVsc2UgewpAQCAtODc4 LDcgKzg3OCw3IEBAIHN0YXRpYyBpbnQgcHJveHlfZmNnaV9oYW5kbGVyKHJlcXVlc3RfcmVjICpy LCBwcm94CiAgICAgICAgICAgICAgICAgICAidXJsOiAlcyBwcm94eW5hbWU6ICVzIHByb3h5cG9y dDogJWQiLAogICAgICAgICAgICAgICAgICB1cmwsIHByb3h5bmFtZSwgcHJveHlwb3J0KTsKIAot ICAgIGlmIChzdHJuY2FzZWNtcCh1cmwsICJmY2dpOiIsIDUpICE9IDApIHsKKyAgICBpZiAoYXBf Y2FzZWNtcHN0cm4odXJsLCAiZmNnaToiLCA1KSAhPSAwKSB7CiAgICAgICAgIGFwX2xvZ19yZXJy b3IoQVBMT0dfTUFSSywgQVBMT0dfREVCVUcsIDAsIHIsIEFQTE9HTk8oMDEwNzcpICJkZWNsaW5p bmcgVVJMICVzIiwgdXJsKTsKICAgICAgICAgcmV0dXJuIERFQ0xJTkVEOwogICAgIH0KSW5kZXg6 IG1vZHVsZXMvcHJveHkvbW9kX3Byb3h5X2ZkcGFzcy5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1vZHVsZXMv cHJveHkvbW9kX3Byb3h5X2ZkcGFzcy5jCShyZXZpc2lvbiAxNzIyMTQzKQorKysgbW9kdWxlcy9w cm94eS9tb2RfcHJveHlfZmRwYXNzLmMJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAg c3RhdGljIGludCBwcm94eV9mZHBhc3NfY2Fub24ocmVxdWVzdF9yZWMgKnIsIGNoYXIKIHsKICAg ICBjb25zdCBjaGFyICpwYXRoOwogCi0gICAgaWYgKHN0cm5jYXNlY21wKHVybCwgImZkOi8vIiwg NSkgPT0gMCkgeworICAgIGlmIChhcF9jYXNlY21wc3Rybih1cmwsICJmZDovLyIsIDUpID09IDAp IHsKICAgICAgICAgdXJsICs9IDU7CiAgICAgfQogICAgIGVsc2UgewpAQCAtMTI5LDcgKzEyOSw3 IEBAIHN0YXRpYyBpbnQgcHJveHlfZmRwYXNzX2hhbmRsZXIocmVxdWVzdF9yZWMgKnIsIHByCiAg ICAgYXByX3NvY2tldF90ICpzb2NrOwogICAgIGFwcl9zb2NrZXRfdCAqY2xpZW50c29jazsKIAot ICAgIGlmIChzdHJuY2FzZWNtcCh1cmwsICJmZDovLyIsIDUpID09IDApIHsKKyAgICBpZiAoYXBf Y2FzZWNtcHN0cm4odXJsLCAiZmQ6Ly8iLCA1KSA9PSAwKSB7CiAgICAgICAgIHVybCArPSA1Owog ICAgIH0KICAgICBlbHNlIHsKSW5kZXg6IG1vZHVsZXMvcHJveHkvbW9kX3Byb3h5X2Z0cC5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIG1vZHVsZXMvcHJveHkvbW9kX3Byb3h5X2Z0cC5jCShyZXZpc2lvbiAxNzIy MTQzKQorKysgbW9kdWxlcy9wcm94eS9tb2RfcHJveHlfZnRwLmMJKHdvcmtpbmcgY29weSkKQEAg LTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgaW50IHByb3h5X2Z0cF9jYW5vbihyZXF1ZXN0X3JlYyAq ciwgY2hhciAqdQogICAgIGFwcl9wb3J0X3QgcG9ydCwgZGVmX3BvcnQ7CiAKICAgICAvKiAqLwot ICAgIGlmIChzdHJuY2FzZWNtcCh1cmwsICJmdHA6IiwgNCkgPT0gMCkgeworICAgIGlmIChhcF9j YXNlY21wc3Rybih1cmwsICJmdHA6IiwgNCkgPT0gMCkgewogICAgICAgICB1cmwgKz0gNDsKICAg ICB9CiAgICAgZWxzZSB7CkBAIC00OTQsNyArNDk0LDcgQEAgc3RhdGljIGFwcl9zdGF0dXNfdCBw cm94eV9zZW5kX2Rpcl9maWx0ZXIoYXBfZmlsdGUKICAgICAgICAgcGF0aCA9IGFwcl91cmlfdW5w YXJzZShwLCAmZi0+ci0+cGFyc2VkX3VyaSwgQVBSX1VSSV9VTlBfT01JVFNJVEVQQVJUIHwgQVBS X1VSSV9VTlBfT01JVFFVRVJZKTsKIAogICAgICAgICAvKiBJZiBwYXRoIGJlZ2FuIHdpdGggLyUy ZiwgY2hhbmdlIHRoZSBiYXNlZGlyICovCi0gICAgICAgIGlmIChzdHJuY2FzZWNtcChwYXRoLCAi LyUyZiIsIDQpID09IDApIHsKKyAgICAgICAgaWYgKGFwX2Nhc2VjbXBzdHJuKHBhdGgsICIvJTJm IiwgNCkgPT0gMCkgewogICAgICAgICAgICAgYmFzZWRpciA9ICIvJTJmIjsKICAgICAgICAgfQog CkBAIC0xMDAzLDcgKzEwMDMsNyBAQCBzdGF0aWMgaW50IHByb3h5X2Z0cF9oYW5kbGVyKHJlcXVl c3RfcmVjICpyLCBwcm94eQogICAgICAgICAgICAgICAgICAgICAgIHByb3h5aG9zdCk7CiAgICAg ICAgIHJldHVybiBERUNMSU5FRDsgICAgICAgIC8qIHByb3h5IGNvbm5lY3Rpb25zIGFyZSB2aWEg SFRUUCAqLwogICAgIH0KLSAgICBpZiAoc3RybmNhc2VjbXAodXJsLCAiZnRwOiIsIDQpKSB7Cisg ICAgaWYgKGFwX2Nhc2VjbXBzdHJuKHVybCwgImZ0cDoiLCA0KSkgewogICAgICAgICBhcF9sb2df cmVycm9yKEFQTE9HX01BUkssIEFQTE9HX1RSQUNFMywgMCwgciwKICAgICAgICAgICAgICAgICAg ICAgICAiZGVjbGluaW5nIFVSTCAlcyAtIG5vdCBmdHA6IiwgdXJsKTsKICAgICAgICAgcmV0dXJu IERFQ0xJTkVEOyAgICAgICAgLyogb25seSBpbnRlcmVzdGVkIGluIEZUUCAqLwpAQCAtMTA3NCw3 ICsxMDc0LDcgQEAgc3RhdGljIGludCBwcm94eV9mdHBfaGFuZGxlcihyZXF1ZXN0X3JlYyAqciwg cHJveHkKICAgICAgKiBzdGlsbCBzbWFsbGVyIHRoYXQgdGhlIFVSTCBpcyBsb2dnZWQgcmVndWxh cmx5LgogICAgICAqLwogICAgIGlmICgocGFzc3dvcmQgPSBhcHJfdGFibGVfZ2V0KHItPmhlYWRl cnNfaW4sICJBdXRob3JpemF0aW9uIikpICE9IE5VTEwKLSAgICAgICAgJiYgc3RyY2FzZWNtcChh cF9nZXR3b3JkKHItPnBvb2wsICZwYXNzd29yZCwgJyAnKSwgIkJhc2ljIikgPT0gMAorICAgICAg ICAmJiBhcF9jYXNlY21wc3RyKGFwX2dldHdvcmQoci0+cG9vbCwgJnBhc3N3b3JkLCAnICcpLCAi QmFzaWMiKSA9PSAwCiAgICAgICAgICYmIChwYXNzd29yZCA9IGFwX3BiYXNlNjRkZWNvZGUoci0+ cG9vbCwgcGFzc3dvcmQpKVswXSAhPSAnOicpIHsKICAgICAgICAgLyogQ2hlY2sgdGhlIGRlY29k ZWQgc3RyaW5nIGZvciBzcGVjaWFsIGNoYXJhY3RlcnMuICovCiAgICAgICAgIGlmICghZnRwX2No ZWNrX3N0cmluZyhwYXNzd29yZCkpIHsKQEAgLTEzMDYsNyArMTMwNiw3IEBAIHN0YXRpYyBpbnQg cHJveHlfZnRwX2hhbmRsZXIocmVxdWVzdF9yZWMgKnIsIHByb3h5CiAgICAgLyogU3BlY2lhbCBo YW5kbGluZyBmb3IgbGVhZGluZyAiJTJmIjogdGhpcyBlbmZvcmNlcyBhICJjd2QgLyIKICAgICAg KiBvdXQgb2YgdGhlICRIT01FIGRpcmVjdG9yeSB3aGljaCB3YXMgdGhlIHN0YXJ0aW5nIHBvaW50 IGFmdGVyIGxvZ2luCiAgICAgICovCi0gICAgaWYgKHN0cm5jYXNlY21wKHBhdGgsICIlMmYiLCAz KSA9PSAwKSB7CisgICAgaWYgKGFwX2Nhc2VjbXBzdHJuKHBhdGgsICIlMmYiLCAzKSA9PSAwKSB7 CiAgICAgICAgIHBhdGggKz0gMzsKICAgICAgICAgd2hpbGUgKCpwYXRoID09ICcvJykgLyogc2tp cCBsZWFkaW5nICcvJyAoYWZ0ZXIgcm9vdCAlMmYpICovCiAgICAgICAgICAgICArK3BhdGg7Cklu ZGV4OiBtb2R1bGVzL3Byb3h5L21vZF9wcm94eV9odHRwLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbW9kdWxl cy9wcm94eS9tb2RfcHJveHlfaHR0cC5jCShyZXZpc2lvbiAxNzIyMTQzKQorKysgbW9kdWxlcy9w cm94eS9tb2RfcHJveHlfaHR0cC5jCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMSArNDMsMTEgQEAg c3RhdGljIGludCBwcm94eV9odHRwX2Nhbm9uKHJlcXVlc3RfcmVjICpyLCBjaGFyICoKICAgICBh cHJfcG9ydF90IHBvcnQsIGRlZl9wb3J0OwogCiAgICAgLyogYXBfcG9ydF9vZl9zY2hlbWUoKSAq LwotICAgIGlmIChzdHJuY2FzZWNtcCh1cmwsICJodHRwOiIsIDUpID09IDApIHsKKyAgICBpZiAo YXBfY2FzZWNtcHN0cm4odXJsLCAiaHR0cDoiLCA1KSA9PSAwKSB7CiAgICAgICAgIHVybCArPSA1 OwogICAgICAgICBzY2hlbWUgPSAiaHR0cCI7CiAgICAgfQotICAgIGVsc2UgaWYgKHN0cm5jYXNl Y21wKHVybCwgImh0dHBzOiIsIDYpID09IDApIHsKKyAgICBlbHNlIGlmIChhcF9jYXNlY21wc3Ry bih1cmwsICJodHRwczoiLCA2KSA9PSAwKSB7CiAgICAgICAgIHVybCArPSA2OwogICAgICAgICBz Y2hlbWUgPSAiaHR0cHMiOwogICAgIH0KQEAgLTc2NSw3ICs3NjUsNyBAQCBpbnQgYXBfcHJveHlf aHR0cF9yZXF1ZXN0KGFwcl9wb29sX3QgKnAsIHJlcXVlc3RfcgogICAgICAqIGVuY29kaW5nIGhh cyBiZWVuIGRvbmUgYnkgdGhlIGV4dGVuc2lvbnMnIGhhbmRsZXIsIGFuZAogICAgICAqIGRvIG5v dCBtb2RpZnkgYWRkX3RlX2NodW5rZWQncyBsb2dpYwogICAgICAqLwotICAgIGlmIChvbGRfdGVf dmFsICYmIHN0cmNhc2VjbXAob2xkX3RlX3ZhbCwgImNodW5rZWQiKSAhPSAwKSB7CisgICAgaWYg KG9sZF90ZV92YWwgJiYgYXBfY2FzZWNtcHN0cihvbGRfdGVfdmFsLCAiY2h1bmtlZCIpICE9IDAp IHsKICAgICAgICAgYXBfbG9nX3JlcnJvcihBUExPR19NQVJLLCBBUExPR19FUlIsIDAsIHIsIEFQ TE9HTk8oMDEwOTMpCiAgICAgICAgICAgICAgICAgICAgICAgIiVzIFRyYW5zZmVyLUVuY29kaW5n IGlzIG5vdCBzdXBwb3J0ZWQiLCBvbGRfdGVfdmFsKTsKICAgICAgICAgcmV0dXJuIEhUVFBfSU5U RVJOQUxfU0VSVkVSX0VSUk9SOwpAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgc3RhdGljIHZvaWQgcHJv Y2Vzc19wcm94eV9oZWFkZXIocmVxdWVzdF9yZWMgKnIsIHAKICAgICB9OwogICAgIGludCBpOwog ICAgIGZvciAoaSA9IDA7IGRhdGVfaGRyc1tpXTsgKytpKSB7Ci0gICAgICAgIGlmICghc3RyY2Fz ZWNtcChkYXRlX2hkcnNbaV0sIGtleSkpIHsKKyAgICAgICAgaWYgKCFhcF9jYXNlY21wc3RyKGRh dGVfaGRyc1tpXSwga2V5KSkgewogICAgICAgICAgICAgYXByX3RhYmxlX2FkZChyLT5oZWFkZXJz X291dCwga2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2Nhbm9uKHItPnBvb2ws IHZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDU0LDcgKzEwNTQsNyBAQCBzdGF0 aWMgdm9pZCBwcm9jZXNzX3Byb3h5X2hlYWRlcihyZXF1ZXN0X3JlYyAqciwgcAogICAgICAgICB9 CiAgICAgfQogICAgIGZvciAoaSA9IDA7IHRyYW5zZm9ybV9oZHJzW2ldLm5hbWU7ICsraSkgewot ICAgICAgICBpZiAoIXN0cmNhc2VjbXAodHJhbnNmb3JtX2hkcnNbaV0ubmFtZSwga2V5KSkgewor ICAgICAgICBpZiAoIWFwX2Nhc2VjbXBzdHIodHJhbnNmb3JtX2hkcnNbaV0ubmFtZSwga2V5KSkg ewogICAgICAgICAgICAgYXByX3RhYmxlX2FkZChyLT5oZWFkZXJzX291dCwga2V5LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAoKnRyYW5zZm9ybV9oZHJzW2ldLmZ1bmMpKHIsIGMsIHZhbHVl KSk7CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBtb2R1bGVzL3Byb3h5L21vZF9wcm94eV9z Y2dpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gbW9kdWxlcy9wcm94eS9tb2RfcHJveHlfc2NnaS5jCShyZXZp c2lvbiAxNzIyMTQzKQorKysgbW9kdWxlcy9wcm94eS9tb2RfcHJveHlfc2NnaS5jCSh3b3JraW5n IGNvcHkpCkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGljIGludCBzY2dpX2Nhbm9uKHJlcXVlc3Rf cmVjICpyLCBjaGFyICp1cmwpCiAgICAgY29uc3QgY2hhciAqZXJyLCAqcGF0aDsKICAgICBhcHJf cG9ydF90IHBvcnQsIGRlZl9wb3J0OwogCi0gICAgaWYgKHN0cm5jYXNlY21wKHVybCwgU0NIRU1F ICI6Ly8iLCBzaXplb2YoU0NIRU1FKSArIDIpKSB7CisgICAgaWYgKGFwX2Nhc2VjbXBzdHJuKHVy bCwgU0NIRU1FICI6Ly8iLCBzaXplb2YoU0NIRU1FKSArIDIpKSB7CiAgICAgICAgIHJldHVybiBE RUNMSU5FRDsKICAgICB9CiAgICAgdXJsICs9IHNpemVvZihTQ0hFTUUpOyAvKiBLZWVwIHNsYXNo ZXMgKi8KQEAgLTQzNCw3ICs0MzQsNyBAQCBzdGF0aWMgaW50IHBhc3NfcmVzcG9uc2UocmVxdWVz dF9yZWMgKnIsIHByb3h5X2NvbgogICAgICAgICBpZiAobG9jYXRpb24gJiYgKmxvY2F0aW9uID09 ICcvJykgewogICAgICAgICAgICAgc2NnaV9yZXF1ZXN0X2NvbmZpZyAqcmVxX2NvbmYgPSBhcHJf cGFsbG9jKHItPnBvb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKCpyZXFfY29uZikpOwotICAgICAgICAgICAgaWYgKHN0cmNh c2VjbXAobG9jYXRpb25faGVhZGVyLCAiTG9jYXRpb24iKSkgeworICAgICAgICAgICAgaWYgKGFw X2Nhc2VjbXBzdHIobG9jYXRpb25faGVhZGVyLCAiTG9jYXRpb24iKSkgewogICAgICAgICAgICAg ICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgYXByX3RhYmxlX3Vuc2V0KHItPmVy cl9oZWFkZXJzX291dCwgbG9jYXRpb25faGVhZGVyKTsKICAgICAgICAgICAgICAgICB9CkBAIC01 MzMsNyArNTMzLDcgQEAgc3RhdGljIGludCBzY2dpX2hhbmRsZXIocmVxdWVzdF9yZWMgKnIsIHBy b3h5X3dvcmsKICAgICBhcHJfdXJpX3QgKnVyaSA9IGFwcl9wYWxsb2Moci0+cG9vbCwgc2l6ZW9m KCp1cmkpKTsKICAgICBjaGFyIGR1bW15OwogCi0gICAgaWYgKHN0cm5jYXNlY21wKHVybCwgU0NI RU1FICI6Ly8iLCBzaXplb2YoU0NIRU1FKSArIDIpKSB7CisgICAgaWYgKGFwX2Nhc2VjbXBzdHJu KHVybCwgU0NIRU1FICI6Ly8iLCBzaXplb2YoU0NIRU1FKSArIDIpKSB7CiAgICAgICAgIGFwX2xv Z19yZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfREVCVUcsIDAsIHIsIEFQTE9HTk8oMDA4NjUpCiAg ICAgICAgICAgICAgICAgICAgICAgImRlY2xpbmluZyBVUkwgJXMiLCB1cmwpOwogICAgICAgICBy ZXR1cm4gREVDTElORUQ7CkluZGV4OiBtb2R1bGVzL3Byb3h5L21vZF9wcm94eV93c3R1bm5lbC5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIG1vZHVsZXMvcHJveHkvbW9kX3Byb3h5X3dzdHVubmVsLmMJKHJldmlz aW9uIDE3MjIxNDMpCisrKyBtb2R1bGVzL3Byb3h5L21vZF9wcm94eV93c3R1bm5lbC5jCSh3b3Jr aW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMTIgQEAgc3RhdGljIGludCBwcm94eV93c3R1bm5lbF9j YW5vbihyZXF1ZXN0X3JlYyAqciwgY2gKICAgICBhcHJfcG9ydF90IHBvcnQsIGRlZl9wb3J0Owog CiAgICAgLyogYXBfcG9ydF9vZl9zY2hlbWUoKSAqLwotICAgIGlmIChzdHJuY2FzZWNtcCh1cmws ICJ3czoiLCAzKSA9PSAwKSB7CisgICAgaWYgKGFwX2Nhc2VjbXBzdHJuKHVybCwgIndzOiIsIDMp ID09IDApIHsKICAgICAgICAgdXJsICs9IDM7CiAgICAgICAgIHNjaGVtZSA9ICJ3czoiOwogICAg ICAgICBkZWZfcG9ydCA9IGFwcl91cmlfcG9ydF9vZl9zY2hlbWUoImh0dHAiKTsKICAgICB9Ci0g ICAgZWxzZSBpZiAoc3RybmNhc2VjbXAodXJsLCAid3NzOiIsIDQpID09IDApIHsKKyAgICBlbHNl IGlmIChhcF9jYXNlY21wc3Rybih1cmwsICJ3c3M6IiwgNCkgPT0gMCkgewogICAgICAgICB1cmwg Kz0gNDsKICAgICAgICAgc2NoZW1lID0gIndzczoiOwogICAgICAgICBkZWZfcG9ydCA9IGFwcl91 cmlfcG9ydF9vZl9zY2hlbWUoImh0dHBzIik7CkBAIC0zMjMsMTEgKzMyMywxMSBAQCBzdGF0aWMg aW50IHByb3h5X3dzdHVubmVsX2hhbmRsZXIocmVxdWVzdF9yZWMgKnIsCiAgICAgYXByX3VyaV90 ICp1cmk7CiAgICAgaW50IGlzX3NzbCA9IDA7CiAKLSAgICBpZiAoc3RybmNhc2VjbXAodXJsLCAi d3NzOiIsIDQpID09IDApIHsKKyAgICBpZiAoYXBfY2FzZWNtcHN0cm4odXJsLCAid3NzOiIsIDQp ID09IDApIHsKICAgICAgICAgc2NoZW1lID0gIldTUyI7CiAgICAgICAgIGlzX3NzbCA9IDE7CiAg ICAgfQotICAgIGVsc2UgaWYgKHN0cm5jYXNlY21wKHVybCwgIndzOiIsIDMpID09IDApIHsKKyAg ICBlbHNlIGlmIChhcF9jYXNlY21wc3Rybih1cmwsICJ3czoiLCAzKSA9PSAwKSB7CiAgICAgICAg IHNjaGVtZSA9ICJXUyI7CiAgICAgfQogICAgIGVsc2UgewpAQCAtMzM2LDcgKzMzNiw3IEBAIHN0 YXRpYyBpbnQgcHJveHlfd3N0dW5uZWxfaGFuZGxlcihyZXF1ZXN0X3JlYyAqciwKICAgICB9CiAK ICAgICB1cGdyYWRlID0gYXByX3RhYmxlX2dldChyLT5oZWFkZXJzX2luLCAiVXBncmFkZSIpOwot ICAgIGlmICghdXBncmFkZSB8fCBzdHJjYXNlY21wKHVwZ3JhZGUsICJXZWJTb2NrZXQiKSAhPSAw KSB7CisgICAgaWYgKCF1cGdyYWRlIHx8IGFwX2Nhc2VjbXBzdHIodXBncmFkZSwgIldlYlNvY2tl dCIpICE9IDApIHsKICAgICAgICAgYXBfbG9nX3JlcnJvcihBUExPR19NQVJLLCBBUExPR19ERUJV RywgMCwgciwgQVBMT0dOTygwMjkwMCkKICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGluaW5n IFVSTCAlcyAgKG5vdCBXZWJTb2NrZXQpIiwgdXJsKTsKICAgICAgICAgcmV0dXJuIERFQ0xJTkVE OwpJbmRleDogbW9kdWxlcy9wcm94eS9wcm94eV91dGlsLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbW9kdWxl cy9wcm94eS9wcm94eV91dGlsLmMJKHJldmlzaW9uIDE3MjIxNDMpCisrKyBtb2R1bGVzL3Byb3h5 L3Byb3h5X3V0aWwuYwkod29ya2luZyBjb3B5KQpAQCAtMTA4MSw3ICsxMDgxLDcgQEAgUFJPWFlf REVDTEFSRShpbnQpIGFwX3Byb3h5X3ZhbGlkX2JhbGFuY2VyX25hbWUoY2gKIHsKICAgICBpZiAo IWkpCiAgICAgICAgIGkgPSBzaXplb2YoQkFMQU5DRVJfUFJFRklYKS0xOwotICAgIHJldHVybiAo IXN0cm5jYXNlY21wKG5hbWUsIEJBTEFOQ0VSX1BSRUZJWCwgaSkpOworICAgIHJldHVybiAoIWFw X2Nhc2VjbXBzdHJuKG5hbWUsIEJBTEFOQ0VSX1BSRUZJWCwgaSkpOwogfQogCiAKQEAgLTE2MzQs NyArMTYzNCw3IEBAIFBST1hZX0RFQ0xBUkUoY2hhciAqKSBhcF9wcm94eV9kZWZpbmVfd29ya2Vy KGFwcl9wCiAgICAgaWYgKHB0cikgewogICAgICAgICAqcHRyID0gJ1wwJzsKICAgICAgICAgcnYg PSBhcHJfdXJpX3BhcnNlKHAsIHVybCwgJnVyaXNvY2spOwotICAgICAgICBpZiAocnYgPT0gQVBS X1NVQ0NFU1MgJiYgIXN0cmNhc2VjbXAodXJpc29jay5zY2hlbWUsICJ1bml4IikpIHsKKyAgICAg ICAgaWYgKHJ2ID09IEFQUl9TVUNDRVNTICYmICFhcF9jYXNlY21wc3RyKHVyaXNvY2suc2NoZW1l LCAidW5peCIpKSB7CiAgICAgICAgICAgICBzb2NrcGF0aCA9IGFwX3J1bnRpbWVfZGlyX3JlbGF0 aXZlKHAsIHVyaXNvY2sucGF0aCk7OwogICAgICAgICAgICAgdXJsID0gcHRyKzE7ICAgIC8qIHNv IHdlIGdldCB0aGUgc2NoZW1lIGZvciB0aGUgdWRzICovCiAgICAgICAgIH0KQEAgLTMyMzMsNyAr MzIzMyw3IEBAIHN0YXRpYyBpbnQgZmluZF9jb25uX2hlYWRlcnModm9pZCAqZGF0YSwgY29uc3Qg Y2hhCiAgICAgICAgICAgICB2YWwrKzsKICAgICAgICAgfQogICAgICAgICBuYW1lID0gYXBfZ2V0 X3Rva2VuKHgtPnBvb2wsICZ2YWwsIDApOwotICAgICAgICBpZiAoIXN0cmNhc2VjbXAobmFtZSwg ImNsb3NlIikpIHsKKyAgICAgICAgaWYgKCFhcF9jYXNlY21wc3RyKG5hbWUsICJjbG9zZSIpKSB7 CiAgICAgICAgICAgICB4LT5jbG9zZWQgPSAxOwogICAgICAgICB9CiAgICAgICAgIGlmICgheC0+ Zmlyc3QpIHsKQEAgLTM0MzEsNyArMzQzMSw3IEBAIFBST1hZX0RFQ0xBUkUoaW50KSBhcF9wcm94 eV9jcmVhdGVfaGRyYnJnZChhcHJfcG9vCiAKICAgICAgICAgLyogQWRkIHRoZSBFeHBlY3QgaGVh ZGVyIGlmIG5vdCBhbHJlYWR5IHRoZXJlLiAqLwogICAgICAgICBpZiAoKCh2YWwgPSBhcHJfdGFi bGVfZ2V0KHItPmhlYWRlcnNfaW4sICJFeHBlY3QiKSkgPT0gTlVMTCkKLSAgICAgICAgICAgICAg ICB8fCAoc3RyY2FzZWNtcCh2YWwsICIxMDAtQ29udGludWUiKSAhPSAwIC8qIGZhc3QgcGF0aCAq LworICAgICAgICAgICAgICAgIHx8IChhcF9jYXNlY21wc3RyKHZhbCwgIjEwMC1Db250aW51ZSIp ICE9IDAgLyogZmFzdCBwYXRoICovCiAgICAgICAgICAgICAgICAgICAgICYmICFhcF9maW5kX3Rv a2VuKHItPnBvb2wsIHZhbCwgIjEwMC1Db250aW51ZSIpKSkgewogICAgICAgICAgICAgYXByX3Rh YmxlX21lcmdlbihyLT5oZWFkZXJzX2luLCAiRXhwZWN0IiwgIjEwMC1Db250aW51ZSIpOwogICAg ICAgICB9CkBAIC0zNDk0LDE1ICszNDk0LDE1IEBAIFBST1hZX0RFQ0xBUkUoaW50KSBhcF9wcm94 eV9jcmVhdGVfaGRyYnJnZChhcHJfcG9vCiAgICAgICAgICAgICB8fCBoZWFkZXJzX2luW2NvdW50 ZXJdLnZhbCA9PSBOVUxMCiAKICAgICAgICAgICAgIC8qIEFscmVhZHkgc2VudCAqLwotICAgICAg ICAgICAgfHwgIXN0cmNhc2VjbXAoaGVhZGVyc19pbltjb3VudGVyXS5rZXksICJIb3N0IikKKyAg ICAgICAgICAgIHx8ICFhcF9jYXNlY21wc3RyKGhlYWRlcnNfaW5bY291bnRlcl0ua2V5LCAiSG9z dCIpCiAKICAgICAgICAgICAgIC8qIENsZWFyIG91dCBob3AtYnktaG9wIHJlcXVlc3QgaGVhZGVy cyBub3QgdG8gc2VuZAogICAgICAgICAgICAgICogUkZDMjYxNiAxMy41LjEgc2F5cyB3ZSBzaG91 bGQgc3RyaXAgdGhlc2UgaGVhZGVycwogICAgICAgICAgICAgICovCi0gICAgICAgICAgICB8fCAh c3RyY2FzZWNtcChoZWFkZXJzX2luW2NvdW50ZXJdLmtleSwgIktlZXAtQWxpdmUiKQotICAgICAg ICAgICAgfHwgIXN0cmNhc2VjbXAoaGVhZGVyc19pbltjb3VudGVyXS5rZXksICJURSIpCi0gICAg ICAgICAgICB8fCAhc3RyY2FzZWNtcChoZWFkZXJzX2luW2NvdW50ZXJdLmtleSwgIlRyYWlsZXIi KQotICAgICAgICAgICAgfHwgIXN0cmNhc2VjbXAoaGVhZGVyc19pbltjb3VudGVyXS5rZXksICJV cGdyYWRlIikKKyAgICAgICAgICAgIHx8ICFhcF9jYXNlY21wc3RyKGhlYWRlcnNfaW5bY291bnRl cl0ua2V5LCAiS2VlcC1BbGl2ZSIpCisgICAgICAgICAgICB8fCAhYXBfY2FzZWNtcHN0cihoZWFk ZXJzX2luW2NvdW50ZXJdLmtleSwgIlRFIikKKyAgICAgICAgICAgIHx8ICFhcF9jYXNlY21wc3Ry KGhlYWRlcnNfaW5bY291bnRlcl0ua2V5LCAiVHJhaWxlciIpCisgICAgICAgICAgICB8fCAhYXBf Y2FzZWNtcHN0cihoZWFkZXJzX2luW2NvdW50ZXJdLmtleSwgIlVwZ3JhZGUiKQogCiAgICAgICAg ICAgICApIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzUxMiw3ICszNTEyLDcgQEAgUFJP WFlfREVDTEFSRShpbnQpIGFwX3Byb3h5X2NyZWF0ZV9oZHJicmdkKGFwcl9wb28KICAgICAgICAg ICogSWYgd2UgaGF2ZSB1c2VkIGl0IHRoZW4gTUFZQkU6IFJGQzI2MTYgc2F5cyB3ZSBNQVkgcHJv cGFnYXRlIGl0LgogICAgICAgICAgKiBTbyBsZXQncyBtYWtlIGl0IGNvbmZpZ3VyYWJsZSBieSBl bnYuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoIXN0cmNhc2VjbXAoaGVhZGVyc19pbltjb3Vu dGVyXS5rZXksIlByb3h5LUF1dGhvcml6YXRpb24iKSkgeworICAgICAgICBpZiAoIWFwX2Nhc2Vj bXBzdHIoaGVhZGVyc19pbltjb3VudGVyXS5rZXksIlByb3h5LUF1dGhvcml6YXRpb24iKSkgewog ICAgICAgICAgICAgaWYgKHItPnVzZXIgIT0gTlVMTCkgeyAvKiB3ZSd2ZSBhdXRoZW50aWNhdGVk ICovCiAgICAgICAgICAgICAgICAgaWYgKCFhcHJfdGFibGVfZ2V0KHItPnN1YnByb2Nlc3NfZW52 LCAiUHJveHktQ2hhaW4tQXV0aCIpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpA QCAtMzUyMiwxMSArMzUyMiwxMSBAQCBQUk9YWV9ERUNMQVJFKGludCkgYXBfcHJveHlfY3JlYXRl X2hkcmJyZ2QoYXByX3BvbwogCiAgICAgICAgIC8qIFNraXAgVHJhbnNmZXItRW5jb2RpbmcgYW5k IENvbnRlbnQtTGVuZ3RoIGZvciBub3cuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoIXN0cmNh c2VjbXAoaGVhZGVyc19pbltjb3VudGVyXS5rZXksICJUcmFuc2Zlci1FbmNvZGluZyIpKSB7Cisg ICAgICAgIGlmICghYXBfY2FzZWNtcHN0cihoZWFkZXJzX2luW2NvdW50ZXJdLmtleSwgIlRyYW5z ZmVyLUVuY29kaW5nIikpIHsKICAgICAgICAgICAgICpvbGRfdGVfdmFsID0gaGVhZGVyc19pbltj b3VudGVyXS52YWw7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBp ZiAoIXN0cmNhc2VjbXAoaGVhZGVyc19pbltjb3VudGVyXS5rZXksICJDb250ZW50LUxlbmd0aCIp KSB7CisgICAgICAgIGlmICghYXBfY2FzZWNtcHN0cihoZWFkZXJzX2luW2NvdW50ZXJdLmtleSwg IkNvbnRlbnQtTGVuZ3RoIikpIHsKICAgICAgICAgICAgICpvbGRfY2xfdmFsID0gaGVhZGVyc19p bltjb3VudGVyXS52YWw7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMzUz MywxMSArMzUzMywxMSBAQCBQUk9YWV9ERUNMQVJFKGludCkgYXBfcHJveHlfY3JlYXRlX2hkcmJy Z2QoYXByX3BvbwogCiAgICAgICAgIC8qIGZvciBzdWItcmVxdWVzdHMsIGlnbm9yZSBmcmVzaG5l c3MvZXhwaXJ5IGhlYWRlcnMgKi8KICAgICAgICAgaWYgKHItPm1haW4pIHsKLSAgICAgICAgICAg IGlmICggICAhc3RyY2FzZWNtcChoZWFkZXJzX2luW2NvdW50ZXJdLmtleSwgIklmLU1hdGNoIikK LSAgICAgICAgICAgICAgICB8fCAhc3RyY2FzZWNtcChoZWFkZXJzX2luW2NvdW50ZXJdLmtleSwg IklmLU1vZGlmaWVkLVNpbmNlIikKLSAgICAgICAgICAgICAgICB8fCAhc3RyY2FzZWNtcChoZWFk ZXJzX2luW2NvdW50ZXJdLmtleSwgIklmLVJhbmdlIikKLSAgICAgICAgICAgICAgICB8fCAhc3Ry Y2FzZWNtcChoZWFkZXJzX2luW2NvdW50ZXJdLmtleSwgIklmLVVubW9kaWZpZWQtU2luY2UiKQot ICAgICAgICAgICAgICAgIHx8ICFzdHJjYXNlY21wKGhlYWRlcnNfaW5bY291bnRlcl0ua2V5LCAi SWYtTm9uZS1NYXRjaCIpKSB7CisgICAgICAgICAgICBpZiAoICAgIWFwX2Nhc2VjbXBzdHIoaGVh ZGVyc19pbltjb3VudGVyXS5rZXksICJJZi1NYXRjaCIpCisgICAgICAgICAgICAgICAgfHwgIWFw X2Nhc2VjbXBzdHIoaGVhZGVyc19pbltjb3VudGVyXS5rZXksICJJZi1Nb2RpZmllZC1TaW5jZSIp CisgICAgICAgICAgICAgICAgfHwgIWFwX2Nhc2VjbXBzdHIoaGVhZGVyc19pbltjb3VudGVyXS5r ZXksICJJZi1SYW5nZSIpCisgICAgICAgICAgICAgICAgfHwgIWFwX2Nhc2VjbXBzdHIoaGVhZGVy c19pbltjb3VudGVyXS5rZXksICJJZi1Vbm1vZGlmaWVkLVNpbmNlIikKKyAgICAgICAgICAgICAg ICB8fCAhYXBfY2FzZWNtcHN0cihoZWFkZXJzX2luW2NvdW50ZXJdLmtleSwgIklmLU5vbmUtTWF0 Y2giKSkgewogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAg ICB9CkBAIC0zNjIyLDcgKzM2MjIsNyBAQCBQUk9YWV9ERUNMQVJFKGFwcl9wb3J0X3QpIGFwX3By b3h5X3BvcnRfb2Zfc2NoZW1lKAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJveHlf c2NoZW1lc190ICpwc2NoZW1lOwogICAgICAgICAgICAgZm9yIChwc2NoZW1lID0gcHNjaGVtZXM7 IHBzY2hlbWUtPm5hbWUgIT0gTlVMTDsgKytwc2NoZW1lKSB7Ci0gICAgICAgICAgICAgICAgaWYg KHN0cmNhc2VjbXAoc2NoZW1lLCBwc2NoZW1lLT5uYW1lKSA9PSAwKSB7CisgICAgICAgICAgICAg ICAgaWYgKGFwX2Nhc2VjbXBzdHIoc2NoZW1lLCBwc2NoZW1lLT5uYW1lKSA9PSAwKSB7CiAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBwc2NoZW1lLT5kZWZhdWx0X3BvcnQ7CiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgfQpJbmRleDogbW9kdWxlcy9zc2wvc3NsX2VuZ2luZV9vY3Nw LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gbW9kdWxlcy9zc2wvc3NsX2VuZ2luZV9vY3NwLmMJKHJldmlzaW9u IDE3MjIxNDMpCisrKyBtb2R1bGVzL3NzbC9zc2xfZW5naW5lX29jc3AuYwkod29ya2luZyBjb3B5 KQpAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgYXByX3VyaV90ICpkZXRlcm1pbmVfcmVzcG9uZGVy X3VyaShTU0xTcnZDbwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc3Ry Y2FzZWNtcCh1LT5zY2hlbWUsICJodHRwIikgIT0gMCkgeworICAgIGlmIChhcF9jYXNlY21wc3Ry KHUtPnNjaGVtZSwgImh0dHAiKSAhPSAwKSB7CiAgICAgICAgIGFwX2xvZ19jZXJyb3IoQVBMT0df TUFSSywgQVBMT0dfREVCVUcsIHJ2LCBjLCBBUExPR05PKDAxOTIwKQogICAgICAgICAgICAgICAg ICAgICAgICJjYW5ub3QgaGFuZGxlIE9DU1AgcmVzcG9uZGVyIFVSSSAnJXMnIiwgcyk7CiAgICAg ICAgIHJldHVybiBOVUxMOwpJbmRleDogc2VydmVyL2xvZy5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNlcnZl ci9sb2cuYwkocmV2aXNpb24gMTcyMjE0MykKKysrIHNlcnZlci9sb2cuYwkod29ya2luZyBjb3B5 KQpAQCAtNjU4LDcgKzY1OCw3IEBAIHN0YXRpYyBpbnQgbG9nX2xvZ19pZChjb25zdCBhcF9lcnJv cmxvZ19pbmZvICppbmZvCiAgICAgICogYzogbG9nIGNvbm4gbG9nIGlkIGlmIGF2YWlsYWJsZSBh bmQgbm90IGEgb25jZS1wZXItcmVxdWVzdCBsb2cgbGluZQogICAgICAqIGVsc2U6IGxvZyByZXF1 ZXN0IGxvZyBpZCBpZiBhdmFpbGFibGUKICAgICAgKi8KLSAgICBpZiAoYXJnICYmICFzdHJjYXNl Y21wKGFyZywgImMiKSkgeworICAgIGlmIChhcmcgJiYgKCphcmcgPT0gJ2MnIHx8ICphcmcgPT0g J0MnKSkgewogICAgICAgICBpZiAoaW5mby0+YyAmJiAoKmFyZyAhPSAnQycgfHwgIWluZm8tPnIp KSB7CiAgICAgICAgICAgICByZXR1cm4gY3B5c3RybihidWYsIGluZm8tPmMtPmxvZ19pZCwgYnVm bGVuKTsKICAgICAgICAgfQpJbmRleDogc2VydmVyL21wbV91bml4LmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g c2VydmVyL21wbV91bml4LmMJKHJldmlzaW9uIDE3MjIxNDMpCisrKyBzZXJ2ZXIvbXBtX3VuaXgu Ywkod29ya2luZyBjb3B5KQpAQCAtNjI3LDcgKzYyNyw3IEBAIHN0YXRpYyBhcHJfc3RhdHVzX3Qg ZHVtbXlfY29ubmVjdGlvbihhcF9wb2RfdCAqcG9kCiAgICAgICogZXhwZW5zaXZlIHRvIGRvIGNv cnJlY3RseSAocGVyZm9ybWluZyBhIGNvbXBsZXRlIFNTTCBoYW5kc2hha2UpCiAgICAgICogb3Ig Y2F1c2UgbG9nIHNwYW0gYnkgZG9pbmcgaW5jb3JyZWN0bHkgKHNpbXBseSBzZW5kaW5nIEVPRiku ICovCiAgICAgbHAgPSBhcF9saXN0ZW5lcnM7Ci0gICAgd2hpbGUgKGxwICYmIGxwLT5wcm90b2Nv bCAmJiBzdHJjYXNlY21wKGxwLT5wcm90b2NvbCwgImh0dHAiKSAhPSAwKSB7CisgICAgd2hpbGUg KGxwICYmIGxwLT5wcm90b2NvbCAmJiBhcF9jYXNlY21wc3RyKGxwLT5wcm90b2NvbCwgImh0dHAi KSAhPSAwKSB7CiAgICAgICAgIGxwID0gbHAtPm5leHQ7CiAgICAgfQogICAgIGlmICghbHApIHsK QEAgLTY3NSw3ICs2NzUsNyBAQCBzdGF0aWMgYXByX3N0YXR1c190IGR1bW15X2Nvbm5lY3Rpb24o YXBfcG9kX3QgKnBvZAogICAgICAgICByZXR1cm4gcnY7CiAgICAgfQogCi0gICAgaWYgKGxwLT5w cm90b2NvbCAmJiBzdHJjYXNlY21wKGxwLT5wcm90b2NvbCwgImh0dHBzIikgPT0gMCkgeworICAg IGlmIChscC0+cHJvdG9jb2wgJiYgYXBfY2FzZWNtcHN0cihscC0+cHJvdG9jb2wsICJodHRwcyIp ID09IDApIHsKICAgICAgICAgLyogU2VuZCBhIFRMUyAxLjAgY2xvc2Vfbm90aWZ5IGFsZXJ0LiAg VGhpcyBpcyBwZXJoYXBzIHRoZQogICAgICAgICAgKiAibGVhc3Qgd3JvbmciIHdheSB0byBvcGVu IGFuZCBjbGVhbmx5IHRlcm1pbmF0ZSBhbiBTU0wKICAgICAgICAgICogY29ubmVjdGlvbi4gIEl0 IHNob3VsZCAid29yayIgd2l0aG91dCBub2lzeSBlcnJvciBsb2dzIGlmCkluZGV4OiBzZXJ2ZXIv cHJvdG9jb2wuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzZXJ2ZXIvcHJvdG9jb2wuYwkocmV2aXNpb24gMTcy MjE0MykKKysrIHNlcnZlci9wcm90b2NvbC5jCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsNyArNTIw LDcgQEAgQVBfQ09SRV9ERUNMQVJFKHZvaWQpIGFwX3BhcnNlX3VyaShyZXF1ZXN0X3JlYyAqciwK ICAgICBpZiAoc3RhdHVzID09IEFQUl9TVUNDRVNTKSB7CiAgICAgICAgIC8qIGlmIGl0IGhhcyBh IHNjaGVtZSB3ZSBtYXkgbmVlZCB0byBkbyBhYnNvbHV0ZVVSSSB2aG9zdCBzdHVmZiAqLwogICAg ICAgICBpZiAoci0+cGFyc2VkX3VyaS5zY2hlbWUKLSAgICAgICAgICAgICYmICFzdHJjYXNlY21w KHItPnBhcnNlZF91cmkuc2NoZW1lLCBhcF9odHRwX3NjaGVtZShyKSkpIHsKKyAgICAgICAgICAg ICYmICFhcF9jYXNlY21wc3RyKHItPnBhcnNlZF91cmkuc2NoZW1lLCBhcF9odHRwX3NjaGVtZShy KSkpIHsKICAgICAgICAgICAgIHItPmhvc3RuYW1lID0gci0+cGFyc2VkX3VyaS5ob3N0bmFtZTsK ICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChyLT5tZXRob2RfbnVtYmVyID09IE1fQ09OTkVD VCkgewpAQCAtNjYwLDcgKzY2MCw3IEBAIHN0YXRpYyBpbnQgcmVhZF9yZXF1ZXN0X2xpbmUocmVx dWVzdF9yZWMgKnIsIGFwcl9iCiAgICAgICAgIHItPnByb3RvX251bSA9IEhUVFBfVkVSU0lPTihw cm9bNV0gLSAnMCcsIHByb1s3XSAtICcwJyk7CiAgICAgfQogICAgIGVsc2UgaWYgKDMgPT0gc3Nj YW5mKHItPnByb3RvY29sLCAiJTRzLyV1LiV1IiwgaHR0cCwgJm1ham9yLCAmbWlub3IpCi0gICAg ICAgICAgICAgJiYgKHN0cmNhc2VjbXAoImh0dHAiLCBodHRwKSA9PSAwKQorICAgICAgICAgICAg ICYmIChhcF9jYXNlY21wc3RyKCJodHRwIiwgaHR0cCkgPT0gMCkKICAgICAgICAgICAgICAmJiAo bWlub3IgPCBIVFRQX1ZFUlNJT04oMSwgMCkpICkgLyogZG9uJ3QgYWxsb3cgSFRUUC8wLjEwMDAg Ki8KICAgICAgICAgci0+cHJvdG9fbnVtID0gSFRUUF9WRVJTSU9OKG1ham9yLCBtaW5vcik7CiAg ICAgZWxzZQpAQCAtMTAzNiw3ICsxMDM2LDcgQEAgcmVxdWVzdF9yZWMgKmFwX3JlYWRfcmVxdWVz dChjb25uX3JlYyAqY29ubikKICAgICAgICAgICAgICAqIHRoZSBmaW5hbCBlbmNvZGluZyAuLi47 IHRoZSBzZXJ2ZXIgTVVTVCByZXNwb25kIHdpdGggdGhlIDQwMAogICAgICAgICAgICAgICogKEJh ZCBSZXF1ZXN0KSBzdGF0dXMgY29kZSBhbmQgdGhlbiBjbG9zZSB0aGUgY29ubmVjdGlvbiIuCiAg ICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICghKHN0cmNhc2VjbXAodGVuYywgImNodW5r ZWQiKSA9PSAwIC8qIGZhc3QgcGF0aCAqLworICAgICAgICAgICAgaWYgKCEoYXBfY2FzZWNtcHN0 cih0ZW5jLCAiY2h1bmtlZCIpID09IDAgLyogZmFzdCBwYXRoICovCiAgICAgICAgICAgICAgICAg ICAgIHx8IGFwX2ZpbmRfbGFzdF90b2tlbihyLT5wb29sLCB0ZW5jLCAiY2h1bmtlZCIpKSkgewog ICAgICAgICAgICAgICAgIGFwX2xvZ19yZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfSU5GTywgMCwg ciwgQVBMT0dOTygwMjUzOSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGllbnQg c2VudCB1bmtub3duIFRyYW5zZmVyLUVuY29kaW5nICIKQEAgLTExNDAsNyArMTE0MCw3IEBAIHJl cXVlc3RfcmVjICphcF9yZWFkX3JlcXVlc3QoY29ubl9yZWMgKmNvbm4pCiAgICAgICAgICAqIHVu Zm9ydHVuYXRlbHksIHRvIHNpZ25hbCBhIHBvb3IgbWFuJ3MgbWFuZGF0b3J5IGV4dGVuc2lvbiB0 aGF0CiAgICAgICAgICAqIHRoZSBzZXJ2ZXIgbXVzdCB1bmRlcnN0YW5kIG9yIHJldHVybiA0MTcg RXhwZWN0YXRpb24gRmFpbGVkLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKHN0cmNhc2VjbXAo ZXhwZWN0LCAiMTAwLWNvbnRpbnVlIikgPT0gMCkgeworICAgICAgICBpZiAoYXBfY2FzZWNtcHN0 cihleHBlY3QsICIxMDAtY29udGludWUiKSA9PSAwKSB7CiAgICAgICAgICAgICByLT5leHBlY3Rp bmdfMTAwID0gMTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTEyOTMsNyArMTI5Myw3 IEBAIEFQX0RFQ0xBUkUoaW50KSBhcF9nZXRfYmFzaWNfYXV0aF9wdyhyZXF1ZXN0X3JlYyAqCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiQXV0aG9yaXph dGlvbiIpOwogICAgIGNvbnN0IGNoYXIgKnQ7CiAKLSAgICBpZiAoISh0ID0gYXBfYXV0aF90eXBl KHIpKSB8fCBzdHJjYXNlY21wKHQsICJCYXNpYyIpKQorICAgIGlmICghKHQgPSBhcF9hdXRoX3R5 cGUocikpIHx8IGFwX2Nhc2VjbXBzdHIodCwgIkJhc2ljIikpCiAgICAgICAgIHJldHVybiBERUNM SU5FRDsKIAogICAgIGlmICghYXBfYXV0aF9uYW1lKHIpKSB7CkBAIC0xMzA3LDcgKzEzMDcsNyBA QCBBUF9ERUNMQVJFKGludCkgYXBfZ2V0X2Jhc2ljX2F1dGhfcHcocmVxdWVzdF9yZWMgKgogICAg ICAgICByZXR1cm4gSFRUUF9VTkFVVEhPUklaRUQ7CiAgICAgfQogCi0gICAgaWYgKHN0cmNhc2Vj bXAoYXBfZ2V0d29yZChyLT5wb29sLCAmYXV0aF9saW5lLCAnICcpLCAiQmFzaWMiKSkgeworICAg IGlmIChhcF9jYXNlY21wc3RyKGFwX2dldHdvcmQoci0+cG9vbCwgJmF1dGhfbGluZSwgJyAnKSwg IkJhc2ljIikpIHsKICAgICAgICAgLyogQ2xpZW50IHRyaWVkIHRvIGF1dGhlbnRpY2F0ZSB1c2lu ZyB3cm9uZyBhdXRoIHNjaGVtZSAqLwogICAgICAgICBhcF9sb2dfcmVycm9yKEFQTE9HX01BUkss IEFQTE9HX0lORk8sIDAsIHIsIEFQTE9HTk8oMDA1NzMpCiAgICAgICAgICAgICAgICAgICAgICAg ImNsaWVudCB1c2VkIHdyb25nIGF1dGhlbnRpY2F0aW9uIHNjaGVtZTogJXMiLCByLT51cmkpOwpJ bmRleDogc2VydmVyL3V0aWwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzZXJ2ZXIvdXRpbC5jCShyZXZpc2lv biAxNzIyMTQzKQorKysgc2VydmVyL3V0aWwuYwkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYs NiBAQAogI3VuZGVmIEFQTE9HX01PRFVMRV9JTkRFWAogI2RlZmluZSBBUExPR19NT0RVTEVfSU5E RVggQVBfQ09SRV9NT0RVTEVfSU5ERVgKIAotCiAvKgogICogRXhhbWluZSBhIGZpZWxkIHZhbHVl IChzdWNoIGFzIGEgbWVkaWEtL2NvbnRlbnQtdHlwZSkgc3RyaW5nIGFuZCByZXR1cm4KICAqIGl0 IHNhbnMgYW55IHBhcmFtZXRlcnM7IGUuZy4sIHN0cmlwIG9mZiBhbnkgJztjaGFyc2V0PWZvbycg YW5kIHRoZSBsaWtlLgpAQCAtODgxLDcgKzg4MCw3IEBAIEFQX0RFQ0xBUkUoYXByX3N0YXR1c190 KSBhcF9wY2ZnX29wZW5maWxlKGFwX2NvbmZpCiAKICAgICBpZiAoZmluZm8uZmlsZXR5cGUgIT0g QVBSX1JFRyAmJgogI2lmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoT1MyKSB8fCBkZWZpbmVk KE5FVFdBUkUpCi0gICAgICAgIHN0cmNhc2VjbXAoYXByX2ZpbGVwYXRoX25hbWVfZ2V0KG5hbWUp LCAibnVsIikgIT0gMCkgeworICAgICAgICBhcF9jYXNlY21wc3RyKGFwcl9maWxlcGF0aF9uYW1l X2dldChuYW1lKSwgIm51bCIpICE9IDApIHsKICNlbHNlCiAgICAgICAgIHN0cmNtcChuYW1lLCAi L2Rldi9udWxsIikgIT0gMCkgewogI2VuZGlmIC8qIFdJTjMyIHx8IE9TMiAqLwpAQCAtMTYwOSw3 ICsxNjA4LDcgQEAgQVBfREVDTEFSRShpbnQpIGFwX2ZpbmRfdG9rZW4oYXByX3Bvb2xfdCAqcCwg Y29uc3QKICAgICAgICAgd2hpbGUgKCpzICYmICFURVNUX0NIQVIoKnMsIFRfSFRUUF9UT0tFTl9T VE9QKSkgewogICAgICAgICAgICAgKytzOwogICAgICAgICB9Ci0gICAgICAgIGlmICghc3RybmNh c2VjbXAoKGNvbnN0IGNoYXIgKilzdGFydF90b2tlbiwgKGNvbnN0IGNoYXIgKil0b2ssCisgICAg ICAgIGlmICghYXBfY2FzZWNtcHN0cm4oKGNvbnN0IGNoYXIgKilzdGFydF90b2tlbiwgKGNvbnN0 IGNoYXIgKil0b2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgcyAtIHN0YXJ0X3Rva2VuKSkg ewogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KQEAgLTE2MzYsNyArMTYzNSw3IEBA IEFQX0RFQ0xBUkUoaW50KSBhcF9maW5kX2xhc3RfdG9rZW4oYXByX3Bvb2xfdCAqcCwKICAgICAg ICAgKGxpZHggPiAwICYmICEoYXByX2lzc3BhY2UobGluZVtsaWR4IC0gMV0pIHx8IGxpbmVbbGlk eCAtIDFdID09ICcsJykpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiAoc3RybmNh c2VjbXAoJmxpbmVbbGlkeF0sIHRvaywgdGxlbikgPT0gMCk7CisgICAgcmV0dXJuIChhcF9jYXNl Y21wc3RybigmbGluZVtsaWR4XSwgdG9rLCB0bGVuKSA9PSAwKTsKIH0KIAogQVBfREVDTEFSRShj aGFyICopIGFwX2VzY2FwZV9zaGVsbF9jbWQoYXByX3Bvb2xfdCAqcCwgY29uc3QgY2hhciAqc3Ry KQpAQCAtMjU4OSw3ICsyNTg4LDcgQEAgQVBfREVDTEFSRShpbnQpIGFwX3BhcnNlX2Zvcm1fZGF0 YShyZXF1ZXN0X3JlYyAqciwKIAogICAgIC8qIHNhbml0eSBjaGVjayAtIHdlIG9ubHkgc3VwcG9y dCBmb3JtcyBmb3Igbm93ICovCiAgICAgY3QgPSBhcHJfdGFibGVfZ2V0KHItPmhlYWRlcnNfaW4s ICJDb250ZW50LVR5cGUiKTsKLSAgICBpZiAoIWN0IHx8IHN0cm5jYXNlY21wKCJhcHBsaWNhdGlv bi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCBjdCwgMzMpKSB7CisgICAgaWYgKCFjdCB8fCBhcF9j YXNlY21wc3RybigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwgY3QsIDMzKSkg ewogICAgICAgICByZXR1cm4gYXBfZGlzY2FyZF9yZXF1ZXN0X2JvZHkocik7CiAgICAgfQogCkBA IC0zMTE5LDMgKzMxMTgsMTE5IEBAIEFQX0RFQ0xBUkUoaW50KSBhcF9hcnJheV9zdHJfY29udGFp bnMoY29uc3QgYXByX2FyCiAgICAgcmV0dXJuIChhcF9hcnJheV9zdHJfaW5kZXgoYXJyYXksIHMs IDApID49IDApOwogfQogCisvKgorICogUHJvdmlkZSBvdXIgb3duIGtub3duLWZhc3QgaW1wbGVt ZW50YXRpb24gb2Ygc3RyW25dY2FzZWNtcCgpCisgKiBOT1RFOiBPbmx5IEFTQ0lJIGFscGhhIGNo YXJhY3RlcnMgNDEtNUEgYXJlIGZvbGRlZCB0byA2MS03QSwKKyAqIG90aGVyIDgtYml0IGxhdGlu IGFscGhhYmV0aWNzIGFyZSBuZXZlciBjYXNlLWZvbGRlZCEKKyAqLworc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgdWNoYXJtYXBbXSA9IHsKKyAgICAweDAsICAweDEsICAweDIsICAweDMsICAw eDQsICAweDUsICAweDYsICAweDcsCisgICAgMHg4LCAgMHg5LCAgMHhhLCAgMHhiLCAgMHhjLCAg MHhkLCAgMHhlLCAgMHhmLAorICAgIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQsIDB4MTUs IDB4MTYsIDB4MTcsCisgICAgMHgxOCwgMHgxOSwgMHgxYSwgMHgxYiwgMHgxYywgMHgxZCwgMHgx ZSwgMHgxZiwKKyAgICAweDIwLCAweDIxLCAweDIyLCAweDIzLCAweDI0LCAweDI1LCAweDI2LCAw eDI3LAorICAgIDB4MjgsIDB4MjksIDB4MmEsIDB4MmIsIDB4MmMsIDB4MmQsIDB4MmUsIDB4MmYs CisgICAgMHgzMCwgMHgzMSwgMHgzMiwgMHgzMywgMHgzNCwgMHgzNSwgMHgzNiwgMHgzNywKKyAg ICAweDM4LCAweDM5LCAweDNhLCAweDNiLCAweDNjLCAweDNkLCAweDNlLCAweDNmLAorICAgIDB4 NDAsICAnYScsICAnYicsICAnYycsICAnZCcsICAnZScsICAnZicsICAnZycsCisgICAgICdoJywg ICdpJywgICdqJywgICdrJywgICdsJywgICdtJywgICduJywgICdvJywKKyAgICAgJ3AnLCAgJ3En LCAgJ3InLCAgJ3MnLCAgJ3QnLCAgJ3UnLCAgJ3YnLCAgJ3cnLAorICAgICAneCcsICAneScsICAn eicsIDB4NWIsIDB4NWMsIDB4NWQsIDB4NWUsIDB4NWYsCisgICAgMHg2MCwgICdhJywgICdiJywg ICdjJywgICdkJywgICdlJywgICdmJywgICdnJywKKyAgICAgJ2gnLCAgJ2knLCAgJ2onLCAgJ2sn LCAgJ2wnLCAgJ20nLCAgJ24nLCAgJ28nLAorICAgICAncCcsICAncScsICAncicsICAncycsICAn dCcsICAndScsICAndicsICAndycsCisgICAgICd4JywgICd5JywgICd6JywgMHg3YiwgMHg3Yywg MHg3ZCwgMHg3ZSwgMHg3ZiwKKyAgICAweDgwLCAweDgxLCAweDgyLCAweDgzLCAweDg0LCAweDg1 LCAweDg2LCAweDg3LAorICAgIDB4ODgsIDB4ODksIDB4OGEsIDB4OGIsIDB4OGMsIDB4OGQsIDB4 OGUsIDB4OGYsCisgICAgMHg5MCwgMHg5MSwgMHg5MiwgMHg5MywgMHg5NCwgMHg5NSwgMHg5Niwg MHg5NywKKyAgICAweDk4LCAweDk5LCAweDlhLCAweDliLCAweDljLCAweDlkLCAweDllLCAweDlm LAorICAgIDB4YTAsIDB4YTEsIDB4YTIsIDB4YTMsIDB4YTQsIDB4YTUsIDB4YTYsIDB4YTcsCisg ICAgMHhhOCwgMHhhOSwgMHhhYSwgMHhhYiwgMHhhYywgMHhhZCwgMHhhZSwgMHhhZiwKKyAgICAw eGIwLCAweGIxLCAweGIyLCAweGIzLCAweGI0LCAweGI1LCAweGI2LCAweGI3LAorICAgIDB4Yjgs IDB4YjksIDB4YmEsIDB4YmIsIDB4YmMsIDB4YmQsIDB4YmUsIDB4YmYsCisgICAgMHhjMCwgMHhj MSwgMHhjMiwgMHhjMywgMHhjNCwgMHhjNSwgMHhjNiwgMHhjNywKKyAgICAweGM4LCAweGM5LCAw eGNhLCAweGNiLCAweGNjLCAweGNkLCAweGNlLCAweGNmLAorICAgIDB4ZDAsIDB4ZDEsIDB4ZDIs IDB4ZDMsIDB4ZDQsIDB4ZDUsIDB4ZDYsIDB4ZDcsCisgICAgMHhkOCwgMHhkOSwgMHhkYSwgMHhk YiwgMHhkYywgMHhkZCwgMHhkZSwgMHhkZiwKKyAgICAweGUwLCAweGUxLCAweGUyLCAweGUzLCAw eGU0LCAweGU1LCAweGU2LCAweGU3LAorICAgIDB4ZTgsIDB4ZTksIDB4ZWEsIDB4ZWIsIDB4ZWMs IDB4ZWQsIDB4ZWUsIDB4ZWYsCisgICAgMHhmMCwgMHhmMSwgMHhmMiwgMHhmMywgMHhmNCwgMHhm NSwgMHhmNiwgMHhmNywKKyAgICAweGY4LCAweGY5LCAweGZhLCAweGZiLCAweGZjLCAweGZkLCAw eGZlLCAweGZmCit9OworCisjZWxzZSAvKiBBUFJfQ0hBUlNFVF9FQkNESUMgKi8KKy8qIERlcml2 ZWQgZnJvbSBhcHItaWNvbnYvY2NzL2NwMDM3LmMgZm9yIEVCQ0RJQyBjYXNlIGNvbXBhcmlzb24s CisgICBwcm92aWRlcyB1bmlxdWUgaWRlbnRpdHkgb2YgZXZlcnkgY2hhciB2YWx1ZSAoc3RyaWN0 IElTTy02NDYKKyAgIGNvbmZvcm1hbmNlLCBhcmJpdHJhcnkgZWxlY3Rpb24gb2YgYW4gSVNPLTg4 NTktMSBvcmRlcmluZywgYW5kCisgICB2ZXJ5IGFyYml0cmFyeSBjb250cm9sIGNvZGUgYXNzaWdu bWVudHMgaW50byBDMSB0byBhY2hpZXZlCisgICBpZGVudGl0eSBhbmQgYSByZXZlcnNpYmxlIG1h cHBpbmcgb2YgY29kZSBwb2ludHMpLAorICAgdGhlbiBmb2xkaW5nIHRoZSBlcXVpdmFsZW5jZXMg b2YgQVNDSUkgNDEtNUEgaW50byA2MS03QSwgCisgICBwcmVzZW50aW5nIGNvbXBhcmlzb24gcmVz dWx0cyBpbiBhIHNvbWV3aGF0IElTTy9JRUMgMTA2NDYKKyAgIChBU0NJSS1saWtlKSBvcmRlciwg ZGVwZW5kaW5nIG9uIHRoZSBFQkNESUMgY29kZSBwYWdlIGluIHVzZS4KKyAqLworc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgdWNoYXJtYXBbXSA9IHsKKwkweDAwLCAweDAxLCAweDAyLCAweDAz LCAweDlDLCAweDA5LCAweDg2LCAweDdGLAorCTB4OTcsIDB4OEQsIDB4OEUsIDB4MEIsIDB4MEMs IDB4MEQsIDB4MEUsIDB4MEYsCisJMHgxMCwgMHgxMSwgMHgxMiwgMHgxMywgMHg5RCwgMHg4NSwg MHgwOCwgMHg4NywKKwkweDE4LCAweDE5LCAweDkyLCAweDhGLCAweDFDLCAweDFELCAweDFFLCAw eDFGLAorCTB4ODAsIDB4ODEsIDB4ODIsIDB4ODMsIDB4ODQsIDB4MEEsIDB4MTcsIDB4MUIsCisJ MHg4OCwgMHg4OSwgMHg4QSwgMHg4QiwgMHg4QywgMHgwNSwgMHgwNiwgMHgwNywKKwkweDkwLCAw eDkxLCAweDE2LCAweDkzLCAweDk0LCAweDk1LCAweDk2LCAweDA0LAorCTB4OTgsIDB4OTksIDB4 OUEsIDB4OUIsIDB4MTQsIDB4MTUsIDB4OUUsIDB4MUEsCisJMHgyMCwgMHhBMCwgMHhFMiwgMHhF NCwgMHhFMCwgMHhFMSwgMHhFMywgMHhFNSwKKwkweEU3LCAweEYxLCAweEEyLCAweDJFLCAweDND LCAweDI4LCAweDJCLCAweDdDLAorCTB4MjYsIDB4RTksIDB4RUEsIDB4RUIsIDB4RTgsIDB4RUQs IDB4RUUsIDB4RUYsCisJMHhFQywgMHhERiwgMHgyMSwgMHgyNCwgMHgyQSwgMHgyOSwgMHgzQiwg MHhBQywKKwkweDJELCAweDJGLCAweEMyLCAweEM0LCAweEMwLCAweEMxLCAweEMzLCAweEM1LAor CTB4QzcsIDB4RDEsIDB4QTYsIDB4MkMsIDB4MjUsIDB4NUYsIDB4M0UsIDB4M0YsCisJMHhGOCwg MHhDOSwgMHhDQSwgMHhDQiwgMHhDOCwgMHhDRCwgMHhDRSwgMHhDRiwKKwkweENDLCAweDYwLCAw eDNBLCAweDIzLCAweDQwLCAweDI3LCAweDNELCAweDIyLAorCTB4RDgsIDB4NjEsIDB4NjIsIDB4 NjMsIDB4NjQsIDB4NjUsIDB4NjYsIDB4NjcsCisJMHg2OCwgMHg2OSwgMHhBQiwgMHhCQiwgMHhG MCwgMHhGRCwgMHhGRSwgMHhCMSwKKwkweEIwLCAweDZBLCAweDZCLCAweDZDLCAweDZELCAweDZF LCAweDZGLCAweDcwLAorCTB4NzEsIDB4NzIsIDB4QUEsIDB4QkEsIDB4RTYsIDB4QjgsIDB4QzYs IDB4QTQsCisJMHhCNSwgMHg3RSwgMHg3MywgMHg3NCwgMHg3NSwgMHg3NiwgMHg3NywgMHg3OCwK KwkweDc5LCAweDdBLCAweEExLCAweEJGLCAweEQwLCAweERELCAweERFLCAweEFFLAorCTB4NUUs IDB4QTMsIDB4QTUsIDB4QjcsIDB4QTksIDB4QTcsIDB4QjYsIDB4QkMsCisJMHhCRCwgMHhCRSwg MHg1QiwgMHg1RCwgMHhBRiwgMHhBOCwgMHhCNCwgMHhENywKKwkweDdCLCAweDYxLCAweDYyLCAw eDYzLCAweDY0LCAweDY1LCAweDY2LCAweDY3LAorCTB4NjgsIDB4NjksIDB4QUQsIDB4RjQsIDB4 RjYsIDB4RjIsIDB4RjMsIDB4RjUsCisJMHg3RCwgMHg2QSwgMHg2QiwgMHg2QywgMHg2RCwgMHg2 RSwgMHg2RiwgMHg3MCwKKwkweDcxLCAweDcyLCAweEI5LCAweEZCLCAweEZDLCAweEY5LCAweEZB LCAweEZGLAorCTB4NUMsIDB4RjcsIDB4NzMsIDB4NzQsIDB4NzUsIDB4NzYsIDB4NzcsIDB4Nzgs CisJMHg3OSwgMHg3QSwgMHhCMiwgMHhENCwgMHhENiwgMHhEMiwgMHhEMywgMHhENSwKKwkweDMw LCAweDMxLCAweDMyLCAweDMzLCAweDM0LCAweDM1LCAweDM2LCAweDM3LAorCTB4MzgsIDB4Mzks IDB4QjMsIDB4REIsIDB4REMsIDB4RDksIDB4REEsIDB4OUYKK307CisjZW5kaWYKKworQVBfREVD TEFSRShpbnQpIGFwX2Nhc2VjbXBzdHIoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyKQor eworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBzMSA9IChjb25zdCB1bnNpZ25lZCBjaGFyICop IHMxOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBzMiA9IChjb25zdCB1bnNpZ25lZCBjaGFy ICopIHMyOworCisgICAgd2hpbGUgKHVjaGFybWFwWypwczFdID09IHVjaGFybWFwWypwczIrK10p IHsKKyAgICAgICAgaWYgKCpwczErKyA9PSAnXDAnKSB7CisgICAgICAgICAgICByZXR1cm4gKDAp OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAodWNoYXJtYXBbKnBzMV0gLSB1Y2hhcm1h cFsqLS1wczJdKTsKK30KKworQVBfREVDTEFSRShpbnQpIGFwX2Nhc2VjbXBzdHJuKGNvbnN0IGNo YXIgKnMxLCBjb25zdCBjaGFyICpzMiwgYXByX3NpemVfdCBuKQoreworICAgIGNvbnN0IHVuc2ln bmVkIGNoYXIgKnBzMSA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIHMxOworICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKnBzMiA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIHMyOworICAgIGlmIChu KSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmICh1Y2hhcm1hcFsqcHMxXSAhPSB1Y2hh cm1hcFsqcHMyKytdKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICh1Y2hhcm1hcFsqcHMxXSAt IHVjaGFybWFwWyotLXBzMl0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCpwczEr KyA9PSAnXDAnKSB7CisgICAgICAgICAgICAgICAgLyogd2Uga25vdyBib3RoIGVuZCBoZXJlICov CisgICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3 aGlsZSAoIS0tbik7CisgICAgfQorICAgIHJldHVybiAoMCk7Cit9CkluZGV4OiBzZXJ2ZXIvdXRp bF9leHByX2V2YWwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzZXJ2ZXIvdXRpbF9leHByX2V2YWwuYwkocmV2 aXNpb24gMTcyMjE0MykKKysrIHNlcnZlci91dGlsX2V4cHJfZXZhbC5jCSh3b3JraW5nIGNvcHkp CkBAIC0xNjgyLDcgKzE2ODIsNyBAQCBzdGF0aWMgaW50IGNvcmVfZXhwcl9sb29rdXAoYXBfZXhw cl9sb29rdXBfcGFybXMgKgogICAgICAgICAgICAgd2hpbGUgKHByb3YtPmZ1bmMpIHsKICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICoqbmFtZSA9IHByb3YtPm5hbWVzOwogICAgICAgICAgICAg ICAgIHdoaWxlICgqbmFtZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc3RyY2FzZWNtcCgq bmFtZSwgcGFybXMtPm5hbWUpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFwX2Nh c2VjbXBzdHIoKm5hbWUsIHBhcm1zLT5uYW1lKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAqcGFybXMtPmZ1bmMgPSBwcm92LT5mdW5jOwogICAgICAgICAgICAgICAgICAgICAgICAg KnBhcm1zLT5kYXRhID0gbmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPSzsK QEAgLTE3MTUsNyArMTcxNSw3IEBAIHN0YXRpYyBpbnQgY29yZV9leHByX2xvb2t1cChhcF9leHBy X2xvb2t1cF9wYXJtcyAqCiAgICAgICAgICAgICAgICAgaWYgKHBhcm1zLT50eXBlID09IEFQX0VY UFJfRlVOQ19PUF9VTkFSWSkKICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSAhc3RyY21wKHBy b3YtPm5hbWUsIHBhcm1zLT5uYW1lKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg ICAgICAgICAgIG1hdGNoID0gIXN0cmNhc2VjbXAocHJvdi0+bmFtZSwgcGFybXMtPm5hbWUpOwor ICAgICAgICAgICAgICAgICAgICBtYXRjaCA9ICFhcF9jYXNlY21wc3RyKHByb3YtPm5hbWUsIHBh cm1zLT5uYW1lKTsKICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHsKICAgICAgICAgICAgICAg ICAgICAgaWYgKChwYXJtcy0+ZmxhZ3MgJiBBUF9FWFBSX0ZMQUdfUkVTVFJJQ1RFRCkKICAgICAg ICAgICAgICAgICAgICAgICAgICYmIHByb3YtPnJlc3RyaWN0ZWQpIHsKSW5kZXg6IHNlcnZlci91 dGlsX3NjcmlwdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNlcnZlci91dGlsX3NjcmlwdC5jCShyZXZpc2lv biAxNzIyMTQzKQorKysgc2VydmVyL3V0aWxfc2NyaXB0LmMJKHdvcmtpbmcgY29weSkKQEAgLTE3 NiwxMCArMTc2LDEwIEBAIEFQX0RFQ0xBUkUodm9pZCkgYXBfYWRkX2NvbW1vbl92YXJzKHJlcXVl c3RfcmVjICpyCiAgICAgICAgICAqIGZvciBubyBwYXJ0aWN1bGFyIHJlYXNvbi4KICAgICAgICAg ICovCiAKLSAgICAgICAgaWYgKCFzdHJjYXNlY21wKGhkcnNbaV0ua2V5LCAiQ29udGVudC10eXBl IikpIHsKKyAgICAgICAgaWYgKCFhcF9jYXNlY21wc3RyKGhkcnNbaV0ua2V5LCAiQ29udGVudC10 eXBlIikpIHsKICAgICAgICAgICAgIGFwcl90YWJsZV9hZGRuKGUsICJDT05URU5UX1RZUEUiLCBo ZHJzW2ldLnZhbCk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAoaGRy c1tpXS5rZXksICJDb250ZW50LWxlbmd0aCIpKSB7CisgICAgICAgIGVsc2UgaWYgKCFhcF9jYXNl Y21wc3RyKGhkcnNbaV0ua2V5LCAiQ29udGVudC1sZW5ndGgiKSkgewogICAgICAgICAgICAgYXBy X3RhYmxlX2FkZG4oZSwgIkNPTlRFTlRfTEVOR1RIIiwgaGRyc1tpXS52YWwpOwogICAgICAgICB9 CiAgICAgICAgIC8qCkBAIC0xODgsOCArMTg4LDggQEAgQVBfREVDTEFSRSh2b2lkKSBhcF9hZGRf Y29tbW9uX3ZhcnMocmVxdWVzdF9yZWMgKnIKICAgICAgICAgICogaW4gdGhlIGVudmlyb25tZW50 IHdpdGggInBzIC1lIi4gIEJ1dCwgaWYgeW91IG11c3QuLi4KICAgICAgICAgICovCiAjaWZuZGVm IFNFQ1VSSVRZX0hPTEVfUEFTU19BVVRIT1JJWkFUSU9OCi0gICAgICAgIGVsc2UgaWYgKCFzdHJj YXNlY21wKGhkcnNbaV0ua2V5LCAiQXV0aG9yaXphdGlvbiIpCi0gICAgICAgICAgICAgICAgIHx8 ICFzdHJjYXNlY21wKGhkcnNbaV0ua2V5LCAiUHJveHktQXV0aG9yaXphdGlvbiIpKSB7CisgICAg ICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3RyKGhkcnNbaV0ua2V5LCAiQXV0aG9yaXphdGlvbiIp CisgICAgICAgICAgICAgICAgIHx8ICFhcF9jYXNlY21wc3RyKGhkcnNbaV0ua2V5LCAiUHJveHkt QXV0aG9yaXphdGlvbiIpKSB7CiAgICAgICAgICAgICBpZiAoY29uZi0+Y2dpX3Bhc3NfYXV0aCA9 PSBBUF9DR0lfUEFTU19BVVRIX09OKSB7CiAgICAgICAgICAgICAgICAgYWRkX3VubGVzc19udWxs KGUsIGh0dHAyZW52KHIsIGhkcnNbaV0ua2V5KSwgaGRyc1tpXS52YWwpOwogICAgICAgICAgICAg fQpAQCAtNTkzLDcgKzU5Myw3IEBAIEFQX0RFQ0xBUkUoaW50KSBhcF9zY2FuX3NjcmlwdF9oZWFk ZXJfZXJyX2NvcmVfZXgoCiAgICAgICAgICAgICArK2w7CiAgICAgICAgIH0KIAotICAgICAgICBp ZiAoIXN0cmNhc2VjbXAodywgIkNvbnRlbnQtdHlwZSIpKSB7CisgICAgICAgIGlmICghYXBfY2Fz ZWNtcHN0cih3LCAiQ29udGVudC10eXBlIikpIHsKICAgICAgICAgICAgIGNoYXIgKnRtcDsKIAog ICAgICAgICAgICAgLyogTnVrZSB0cmFpbGluZyB3aGl0ZXNwYWNlICovCkBAIC02MTEsNyArNjEx LDcgQEAgQVBfREVDTEFSRShpbnQpIGFwX3NjYW5fc2NyaXB0X2hlYWRlcl9lcnJfY29yZV9leCgK ICAgICAgICAgICogSWYgdGhlIHNjcmlwdCByZXR1cm5lZCBhIHNwZWNpZmljIHN0YXR1cywgdGhh dCdzIHdoYXQKICAgICAgICAgICogd2UnbGwgdXNlIC0gb3RoZXJ3aXNlIHdlIGFzc3VtZSAyMDAg T0suCiAgICAgICAgICAqLwotICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCh3LCAiU3RhdHVz IikpIHsKKyAgICAgICAgZWxzZSBpZiAoIWFwX2Nhc2VjbXBzdHIodywgIlN0YXR1cyIpKSB7CiAg ICAgICAgICAgICByLT5zdGF0dXMgPSBjZ2lfc3RhdHVzID0gYXRvaShsKTsKICAgICAgICAgICAg IGlmICghYXBfaXNfSFRUUF9WQUxJRF9SRVNQT05TRShjZ2lfc3RhdHVzKSkKICAgICAgICAgICAg ICAgICBhcF9sb2dfcmVycm9yKFNDUklQVF9MT0dfTUFSSywgQVBMT0dfRVJSfEFQTE9HX1RPQ0xJ RU5ULCAwLCByLApAQCAtNjI0LDE5ICs2MjQsMTkgQEAgQVBfREVDTEFSRShpbnQpIGFwX3NjYW5f c2NyaXB0X2hlYWRlcl9lcnJfY29yZV9leCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFwcl9maWxlcGF0aF9uYW1lX2dldChyLT5maWxlbmFtZSksIGwpOwogICAgICAgICAgICAg ci0+c3RhdHVzX2xpbmUgPSBhcHJfcHN0cmR1cChyLT5wb29sLCBsKTsKICAgICAgICAgfQotICAg ICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCh3LCAiTG9jYXRpb24iKSkgeworICAgICAgICBlbHNl IGlmICghYXBfY2FzZWNtcHN0cih3LCAiTG9jYXRpb24iKSkgewogICAgICAgICAgICAgYXByX3Rh YmxlX3NldChyLT5oZWFkZXJzX291dCwgdywgbCk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBp ZiAoIXN0cmNhc2VjbXAodywgIkNvbnRlbnQtTGVuZ3RoIikpIHsKKyAgICAgICAgZWxzZSBpZiAo IWFwX2Nhc2VjbXBzdHIodywgIkNvbnRlbnQtTGVuZ3RoIikpIHsKICAgICAgICAgICAgIGFwcl90 YWJsZV9zZXQoci0+aGVhZGVyc19vdXQsIHcsIGwpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2Ug aWYgKCFzdHJjYXNlY21wKHcsICJDb250ZW50LVJhbmdlIikpIHsKKyAgICAgICAgZWxzZSBpZiAo IWFwX2Nhc2VjbXBzdHIodywgIkNvbnRlbnQtUmFuZ2UiKSkgewogICAgICAgICAgICAgYXByX3Rh YmxlX3NldChyLT5oZWFkZXJzX291dCwgdywgbCk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBp ZiAoIXN0cmNhc2VjbXAodywgIlRyYW5zZmVyLUVuY29kaW5nIikpIHsKKyAgICAgICAgZWxzZSBp ZiAoIWFwX2Nhc2VjbXBzdHIodywgIlRyYW5zZmVyLUVuY29kaW5nIikpIHsKICAgICAgICAgICAg IGFwcl90YWJsZV9zZXQoci0+aGVhZGVyc19vdXQsIHcsIGwpOwogICAgICAgICB9Ci0gICAgICAg IGVsc2UgaWYgKCFzdHJjYXNlY21wKHcsICJFVGFnIikpIHsKKyAgICAgICAgZWxzZSBpZiAoIWFw X2Nhc2VjbXBzdHIodywgIkVUYWciKSkgewogICAgICAgICAgICAgYXByX3RhYmxlX3NldChyLT5o ZWFkZXJzX291dCwgdywgbCk7CiAgICAgICAgIH0KICAgICAgICAgLyoKQEAgLTY0MywxMSArNjQz LDExIEBAIEFQX0RFQ0xBUkUoaW50KSBhcF9zY2FuX3NjcmlwdF9oZWFkZXJfZXJyX2NvcmVfZXgo CiAgICAgICAgICAqIElmIHRoZSBzY3JpcHQgZ2F2ZSB1cyBhIExhc3QtTW9kaWZpZWQgaGVhZGVy LCB3ZSBjYW4ndCBqdXN0CiAgICAgICAgICAqIHBhc3MgaXQgb24gYmxpbmRseSBiZWNhdXNlIG9m IHJlc3RyaWN0aW9ucyBvbiBmdXR1cmUgdmFsdWVzLgogICAgICAgICAgKi8KLSAgICAgICAgZWxz ZSBpZiAoIXN0cmNhc2VjbXAodywgIkxhc3QtTW9kaWZpZWQiKSkgeworICAgICAgICBlbHNlIGlm ICghYXBfY2FzZWNtcHN0cih3LCAiTGFzdC1Nb2RpZmllZCIpKSB7CiAgICAgICAgICAgICBhcF91 cGRhdGVfbXRpbWUociwgYXByX2RhdGVfcGFyc2VfaHR0cChsKSk7CiAgICAgICAgICAgICBhcF9z ZXRfbGFzdF9tb2RpZmllZChyKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICghc3RyY2Fz ZWNtcCh3LCAiU2V0LUNvb2tpZSIpKSB7CisgICAgICAgIGVsc2UgaWYgKCFhcF9jYXNlY21wc3Ry KHcsICJTZXQtQ29va2llIikpIHsKICAgICAgICAgICAgIGFwcl90YWJsZV9hZGQoY29va2llX3Rh YmxlLCB3LCBsKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKSW5kZXg6IC4KPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gLgkocmV2aXNpb24gMTcyMjE0MykKKysrIC4JKHdvcmtpbmcgY29weSkKClByb3BlcnR5 IGNoYW5nZXMgb246IC4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpNb2RpZmllZDogc3ZuOm1lcmdlaW5mbwogICBNZXJn ZWQgL2h0dHBkL2h0dHBkL3RydW5rOnIxNzE1NDAxLDE3MTU0MDQsMTcxNTUyNywxNzE1NTQ2LDE3 MTU1NTQsMTcxNTU4NywxNzE1NjMyLDE3MTU3MzYsMTcxNTg1MiwxNzE1ODc2LDE3MTU4ODAsMTcx NTkzOCwxNzE2MTUxLDE3MjIxNTAK --001a114a696c59efc805280b76df--