Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vMNzl-008Jgv-22 for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Nov 2025 10:04:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vMNzj-006eWX-2z for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Nov 2025 10:04:00 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vMNzj-006eWP-0J for pgsql-hackers@lists.postgresql.org; Fri, 21 Nov 2025 10:03:59 +0000 Received: from mail-lf1-x131.google.com ([2a00:1450:4864:20::131]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vMNzf-000fxl-31 for pgsql-hackers@lists.postgresql.org; Fri, 21 Nov 2025 10:03:58 +0000 Received: by mail-lf1-x131.google.com with SMTP id 2adb3069b0e04-5957c929a5eso2574677e87.1 for ; Fri, 21 Nov 2025 02:03:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763719435; x=1764324235; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4ZfqNLEsISPvF/TsC6Ok+Zq2ilqdJEcoL8+SGXCC3aI=; b=ZJAz6LJ8PsbdRe/WjQQtBhYYtdlylT8e5RMOjiyLhcXaW03Cp0p/ftaSxv183L2rFf UlVAtKurPI8rVKn4QtwkVLXI+PHi4r2Z4IEcFe6Vw2GyFncqVXgvHkjCu/bRnVH00Sge mcXOUnl0tkHwSTS/iGwnpC9QFRyk7chJIF9I2oMIkyCBvAg0Cf7dTyEhsEaBU/tpEA1Y w7sGjgIFKguAXgEA1AiMh6oyLUY7OirBW4e+ud9mrqks2ajPJ/i8Demd24GPZkxrN81z uSviaI4XbKJJL2Rx4HDVcHU3AG2JLTuh4q7+TJOqZL8LhWoI2gizCe3ft+rB0fKZ6uGf 9M/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763719435; x=1764324235; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=4ZfqNLEsISPvF/TsC6Ok+Zq2ilqdJEcoL8+SGXCC3aI=; b=PomB5SihsXX6ZjFUlhOWqIigKz6GULK07r0Ug25Nu9OZVnh6rp8tpWtXUSST0zWqd1 zGLvdJZQCoAOYMoTjQphCODB6++j/IoJF+8b3XzVSLTtwfNg6ythxvysu6cQHlsgYbAb jgNZqJ0f+wQqR3HSbt5/KMv8rcLFcu1cnBx7C0W5S+cNI38ZMnCDaGBGZ1Qo4msM1Y41 wcofOCeGLRG2ENLhsKcFQEmnSfvsuBhY7syR9BzYEDV4uvgVQmH8ZPOH9on2zliv0bZI QQEeWQjM8FBjZlsu2W01K63FRh6ThQcDs2qmokNtwgj5zOJyGbq5jFEtYgveNgc4QJcb Cvmg== X-Gm-Message-State: AOJu0YxS9wuZbVmDjeflKqqzGYxbEgW0Fsg01HCZvoQLc34/HgJF1yR7 IrKcZelB7HgfN5lB5i1bFkw1TaA4rsf7HEy1uSJ4eIeWGzyW5Q68cbK/N8pSK18AB2S0GFHfkC4 kDtDjVtU6H8VdeRpXvSkomuxCQtNa41oYFUmgoXTDtg== X-Gm-Gg: ASbGnctlqKMyPqVbD8z8xDGXj0ARK19oQ1uf2yPprdiLk7x6xUYeRO68Ee+a7tpEW6E uMoGhEN+WIco6WLfjCmc6ledpC72pF0lbGMuMBEn9xtMqrQJqmDKku3IOCO1tR4zw+WFeAH/6HM qalgg7TW+tP/4WXtkc6vKe7B53+1MnBt9B4DTfgx6lb5MuIwQlolo27UxPEjBK3dIm2G5GhtQyL Wv+msrIN/5++S0MZpQuWeeCt6f0zkcgznj3r+Z/CwChSUZcgEBydXEqeJ0+pqptr4MjfXM= X-Google-Smtp-Source: AGHT+IGa3iFwuwKmZsZCgwKTVIjEn13rhdM8hb9d1gGieXA+3hf+2/yNDNYkJ96s/mf9ff/f5m5WAx+JBhxX2wNKyWw= X-Received: by 2002:a05:6512:3341:b0:594:26d7:c443 with SMTP id 2adb3069b0e04-596a3ef58eamr517157e87.39.1763719434668; Fri, 21 Nov 2025 02:03:54 -0800 (PST) MIME-Version: 1.0 References: <202511201224.fgu55ahjz664@alvherre.pgsql> In-Reply-To: From: Chao Li Date: Fri, 21 Nov 2025 18:03:41 +0800 X-Gm-Features: AWmQ_bmxZfQjm8ODk5V-gf5o2r_vbxBI64ULg-9DZpui7IUed6oSrwsQ1b1JxbM Message-ID: Subject: =?UTF-8?Q?Re=3A_quoteOneName=28=29_inconsistency_with_quote=5Fall=5Fiden?= =?UTF-8?Q?tifiers_=E2=80=94_replacement_API_proposed?= To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: Postgres hackers Content-Type: multipart/mixed; boundary="000000000000632b54064417ee2f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000632b54064417ee2f Content-Type: multipart/alternative; boundary="000000000000632b53064417ee2d" --000000000000632b53064417ee2d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Fixed a compile warning in v4. Best regards, Chao Li (Evan) --------------------- HighGo Software Co., Ltd. https://www.highgo.com/ On Fri, Nov 21, 2025 at 1:52=E2=80=AFPM Chao Li wr= ote: > > On Thu, Nov 20, 2025 at 8:28=E2=80=AFPM =C3=81lvaro Herrera > wrote: > >> Hi, >> >> > - appendStringInfo(&buffer, _("text search configuratio= n >> %s"), >> > - quote_qualified_identifier(nspname, >> > - >> NameStr(cfgForm->cfgname))); >> > + appendStringInfoQualifiedIdentifier(&buffer, >> > + _("text search >> configuration "), >> > + nspname, >> NameStr(cfgForm->cfgname), NULL); >> > ReleaseSysCache(tup); >> > break; >> > } >> >> This doesn't work from a i18n point of view. In the original >> formulation, the translator is free to place the %s wherever it suits >> the language. In the new one there's no such freedom: the name will be >> appended at the end. Some existing translations: >> >> ko.po:msgid "text search configuration %s" >> ko.po-msgstr "%s =EC=A0=84=EB=AC=B8 =EA=B2=80=EC=83=89 =EA=B5=AC=EC=84= =B1" >> >> tr.po:msgid "text search configuration %s" >> tr.po-msgstr "%s metin arama yap=C4=B1land=C4=B1rmas=C4=B1" >> > > Thanks for the feedback. I reverted that piece of change in v3. > > Best regards, > Chao Li (Evan) > --------------------- > HighGo Software Co., Ltd. > https://www.highgo.com/ > --000000000000632b53064417ee2d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Fixed a compile warning in v4.

Best regards,
Chao Li (Evan)
---------= ------------
HighGo Software Co., Ltd.
https://www.highgo.com/


On Fri, Nov 21, 2025 at 1:52=E2=80=AFPM Ch= ao Li <li.evan.chao@gmail.com<= /a>> wrote:
<= div dir=3D"ltr">

Hi,

> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 appendStringI= nfo(&buffer, _("text search configuration %s"),
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0quote_qualified_identifier= (nspname,
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NameStr(= cfgForm->cfgname)));
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 appendStringI= nfoQualifiedIdentifier(&buffer,
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 _("text search configuration &q= uot;),
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 nspname, NameStr(cfgForm->cfgname= ), NULL);
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ReleaseS= ysCache(tup);
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 break; >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }

This doesn't work from a i18n point of view.=C2=A0 In the original
formulation, the translator is free to place the %s wherever it suits
the language.=C2=A0 In the new one there's no such freedom: the name wi= ll be
appended at the end.=C2=A0 Some existing translations:

ko.po:msgid "text search configuration %s"
ko.po-msgstr "%s =EC=A0=84=EB=AC=B8 =EA=B2=80=EC=83=89 =EA=B5=AC=EC=84= =B1"

tr.po:msgid "text search configuration %s"
tr.po-msgstr "%s metin arama yap=C4=B1land=C4=B1rmas=C4=B1"

Thanks for the feedback. I reverted that pie= ce of change in v3.

Best regards,
Chao Li (Ev= an)
---------------------
HighGo Software Co., Ltd.
=
--000000000000632b53064417ee2d-- --000000000000632b54064417ee2f Content-Type: application/octet-stream; name="v4-0004-Use-appendStringInfoIdentifier-in-more-places.patch" Content-Disposition: attachment; filename="v4-0004-Use-appendStringInfoIdentifier-in-more-places.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi8ozvyj3 RnJvbSAwN2U1NjA3ZmE4MTg1MzYxYTRkYTAwMmQxNWExYTMyOGEzYzE5OWZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogV2VkLCAxOSBOb3YgMjAyNSAxNTo1NToyMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQgNC80 XSBVc2UgYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoKSBpbiBtb3JlIHBsYWNlcy4KCkF1dGhv cjogQ2hhbyBMaSA8bGljQGhpZ2hnby5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0FFb1d4Mj1nMlJWa3hYQj1KeldwaGdmZzRRR1Yrc3BhQTNQUTFyQk0yaU1laHJWdmpnQG1h aWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyAgICAgfCAg IDYgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jIHwgIDY0ICsrKy0tLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jIHwgICA4ICstCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICB8IDI2MCArKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCAxOTEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKaW5kZXggZDIzNDc0ZGE0ZmIuLjdjM2IwYmI3ODUzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKQEAgLTM2OTksMTQgKzM2OTksMTQgQEAgTmFtZUxpc3RU b1F1b3RlZFN0cmluZyhjb25zdCBMaXN0ICpuYW1lcykKIHsKIAlTdHJpbmdJbmZvRGF0YSBzdHJp bmc7CiAJTGlzdENlbGwgICAqbDsKKwljb25zdCBjaGFyICpzZXAgPSAiIjsKIAogCWluaXRTdHJp bmdJbmZvKCZzdHJpbmcpOwogCiAJZm9yZWFjaChsLCBuYW1lcykKIAl7Ci0JCWlmIChsICE9IGxp c3RfaGVhZChuYW1lcykpCi0JCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmc3RyaW5nLCAnLicpOwot CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZzdHJpbmcsIHF1b3RlX2lkZW50aWZpZXIoc3RyVmFs KGxmaXJzdChsKSkpKTsKKwkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJnN0cmluZywgc2Vw LCBzdHJWYWwobGZpcnN0KGwpKSwgTlVMTCk7CisJCXNlcCA9ICIuIjsKIAl9CiAKIAlyZXR1cm4g c3RyaW5nLmRhdGE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJl c3MuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jCmluZGV4IDcwZTA1MDU5 ZjlmLi5mYTg3NjJkYjEwZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3Rh ZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTUw MDQsOCArNTAwNCw3IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVz cyAqb2JqZWN0LAogCiAJCQkJaWYgKE9pZElzVmFsaWQoY29uLT5jb25yZWxpZCkpCiAJCQkJewot CQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsICIlcyBvbiAiLAotCQkJCQkJCQkJIHF1b3Rl X2lkZW50aWZpZXIoTmFtZVN0cihjb24tPmNvbm5hbWUpKSk7CisJCQkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKCZidWZmZXIsIE5VTEwsIE5hbWVTdHIoY29uLT5jb25uYW1lKSwgIiBvbiAi KTsKIAkJCQkJZ2V0UmVsYXRpb25JZGVudGl0eSgmYnVmZmVyLCBjb24tPmNvbnJlbGlkLCBvYmpu YW1lLAogCQkJCQkJCQkJCWZhbHNlKTsKIAkJCQkJaWYgKG9iam5hbWUpCkBAIC01MDIwLDEwICs1 MDE5LDEwIEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2Jq ZWN0LAogCQkJCQlkb21haW4ub2JqZWN0SWQgPSBjb24tPmNvbnR5cGlkOwogCQkJCQlkb21haW4u b2JqZWN0U3ViSWQgPSAwOwogCi0JCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiVzIG9u ICVzIiwKLQkJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKE5hbWVTdHIoY29uLT5jb25uYW1lKSks Ci0JCQkJCQkJCQkgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cygmZG9tYWluLCBvYmpuYW1lLAotCQkJ CQkJCQkJCQkJCQkJb2JqYXJncywgZmFsc2UpKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50 aWZpZXIoJmJ1ZmZlciwgTlVMTCwgTmFtZVN0cihjb24tPmNvbm5hbWUpLCAiIG9uICIpOworCQkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCisJCQkJCQkJCQkJICAgZ2V0T2JqZWN0 SWRlbnRpdHlQYXJ0cygmZG9tYWluLCBvYmpuYW1lLAorCQkJCQkJCQkJCQkJCQkJCSAgb2JqYXJn cywgZmFsc2UpKTsKIAogCQkJCQlpZiAob2JqbmFtZSkKIAkJCQkJCSpvYmphcmdzID0gbGFwcGVu ZCgqb2JqYXJncywgcHN0cmR1cChOYW1lU3RyKGNvbi0+Y29ubmFtZSkpKTsKQEAgLTUwOTYsOCAr NTA5NSw4IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2Jq ZWN0LAogCQkJCQlicmVhazsKIAkJCQl9CiAJCQkJbGFuZ0Zvcm0gPSAoRm9ybV9wZ19sYW5ndWFn ZSkgR0VUU1RSVUNUKGxhbmdUdXApOwotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZl ciwKLQkJCQkJCQkJCSAgIHF1b3RlX2lkZW50aWZpZXIoTmFtZVN0cihsYW5nRm9ybS0+bGFubmFt ZSkpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcigmYnVmZmVyLCBOVUxMLAorCQkJ CQkJCQkJCSAgIE5hbWVTdHIobGFuZ0Zvcm0tPmxhbm5hbWUpLCBOVUxMKTsKIAkJCQlpZiAob2Jq bmFtZSkKIAkJCQkJKm9iam5hbWUgPSBsaXN0X21ha2UxKHBzdHJkdXAoTmFtZVN0cihsYW5nRm9y bS0+bGFubmFtZSkpKTsKIAkJCQlSZWxlYXNlU3lzQ2FjaGUobGFuZ1R1cCk7CkBAIC01MTU1LDEw ICs1MTU0LDExIEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAq b2JqZWN0LAogCQkJCQkJIG9wY0Zvcm0tPm9wY21ldGhvZCk7CiAJCQkJYW1Gb3JtID0gKEZvcm1f cGdfYW0pIEdFVFNUUlVDVChhbVR1cCk7CiAKLQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIs ICIlcyBVU0lORyAlcyIsCi0JCQkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihzY2hl bWEsCi0JCQkJCQkJCQkJCQkJCQlOYW1lU3RyKG9wY0Zvcm0tPm9wY25hbWUpKSwKLQkJCQkJCQkJ IHF1b3RlX2lkZW50aWZpZXIoTmFtZVN0cihhbUZvcm0tPmFtbmFtZSkpKTsKKwkJCQlhcHBlbmRT dHJpbmdJbmZvUXVhbGlmaWVkSWRlbnRpZmllcigmYnVmZmVyLCBOVUxMLAorCQkJCQkJCQkJCQkJ CXNjaGVtYSwgTmFtZVN0cihvcGNGb3JtLT5vcGNuYW1lKSwKKwkJCQkJCQkJCQkJCQkiIFVTSU5H ICIpOworCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWZmZXIsIE5VTEwsCisJCQkJ CQkJCQkJICAgTmFtZVN0cihhbUZvcm0tPmFtbmFtZSksIE5VTEwpOwogCQkJCWlmIChvYmpuYW1l KQogCQkJCQkqb2JqbmFtZSA9IGxpc3RfbWFrZTMocHN0cmR1cChOYW1lU3RyKGFtRm9ybS0+YW1u YW1lKSksCiAJCQkJCQkJCQkJICBzY2hlbWEsCkBAIC01MTg2LDcgKzUxODYsNyBAQCBnZXRPYmpl Y3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCQkJCQkgb2Jq ZWN0LT5vYmplY3RJZCk7CiAJCQkJCWJyZWFrOwogCQkJCX0KLQkJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZidWZmZXIsIHF1b3RlX2lkZW50aWZpZXIoYW1uYW1lKSk7CisJCQkJYXBwZW5kU3Ry aW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgTlVMTCwgYW1uYW1lLCBOVUxMKTsKIAkJCQlpZiAo b2JqbmFtZSkKIAkJCQkJKm9iam5hbWUgPSBsaXN0X21ha2UxKGFtbmFtZSk7CiAJCQl9CkBAIC01 MzM5LDggKzUzMzksNyBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJl c3MgKm9iamVjdCwKIAogCQkJCXJ1bGUgPSAoRm9ybV9wZ19yZXdyaXRlKSBHRVRTVFJVQ1QodHVw KTsKIAotCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiVzIG9uICIsCi0JCQkJCQkJCSBx dW90ZV9pZGVudGlmaWVyKE5hbWVTdHIocnVsZS0+cnVsZW5hbWUpKSk7CisJCQkJYXBwZW5kU3Ry aW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgTlVMTCwgTmFtZVN0cihydWxlLT5ydWxlbmFtZSks ICIgb24gIik7CiAJCQkJZ2V0UmVsYXRpb25JZGVudGl0eSgmYnVmZmVyLCBydWxlLT5ldl9jbGFz cywgb2JqbmFtZSwgZmFsc2UpOwogCQkJCWlmIChvYmpuYW1lKQogCQkJCQkqb2JqbmFtZSA9IGxh cHBlbmQoKm9iam5hbWUsIHBzdHJkdXAoTmFtZVN0cihydWxlLT5ydWxlbmFtZSkpKTsKQEAgLTUz NzIsOCArNTM3MSw3IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVz cyAqb2JqZWN0LAogCiAJCQkJdHJpZyA9IChGb3JtX3BnX3RyaWdnZXIpIEdFVFNUUlVDVCh0dXAp OwogCi0JCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCAiJXMgb24gIiwKLQkJCQkJCQkJIHF1 b3RlX2lkZW50aWZpZXIoTmFtZVN0cih0cmlnLT50Z25hbWUpKSk7CisJCQkJYXBwZW5kU3RyaW5n SW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgTlVMTCwgTmFtZVN0cih0cmlnLT50Z25hbWUpLCAiIG9u ICIpOwogCQkJCWdldFJlbGF0aW9uSWRlbnRpdHkoJmJ1ZmZlciwgdHJpZy0+dGdyZWxpZCwgb2Jq bmFtZSwgZmFsc2UpOwogCQkJCWlmIChvYmpuYW1lKQogCQkJCQkqb2JqbmFtZSA9IGxhcHBlbmQo Km9iam5hbWUsIHBzdHJkdXAoTmFtZVN0cih0cmlnLT50Z25hbWUpKSk7CkBAIC01NTQ0LDggKzU1 NDIsNyBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVj dCwKIAkJCQkJYnJlYWs7CiAJCQkJaWYgKG9iam5hbWUpCiAJCQkJCSpvYmpuYW1lID0gbGlzdF9t YWtlMSh1c2VybmFtZSk7Ci0JCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAotCQkJ CQkJCQkJICAgcXVvdGVfaWRlbnRpZmllcih1c2VybmFtZSkpOworCQkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKCZidWZmZXIsIE5VTEwsIHVzZXJuYW1lLCBOVUxMKTsKIAkJCQlicmVhazsK IAkJCX0KIApAQCAtNTYwNiw4ICs1NjAzLDcgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25z dCBPYmplY3RBZGRyZXNzICpvYmplY3QsCiAJCQkJfQogCQkJCWlmIChvYmpuYW1lKQogCQkJCQkq b2JqbmFtZSA9IGxpc3RfbWFrZTEoZGF0bmFtZSk7Ci0JCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZygmYnVmZmVyLAotCQkJCQkJCQkJICAgcXVvdGVfaWRlbnRpZmllcihkYXRuYW1lKSk7CisJCQkJ YXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgTlVMTCwgZGF0bmFtZSwgTlVMTCk7 CiAJCQkJYnJlYWs7CiAJCQl9CiAKQEAgLTU2MjUsOCArNTYyMSw3IEBAIGdldE9iamVjdElkZW50 aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCX0KIAkJCQlpZiAob2Jq bmFtZSkKIAkJCQkJKm9iam5hbWUgPSBsaXN0X21ha2UxKHRibHNwYWNlKTsKLQkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCi0JCQkJCQkJCQkgICBxdW90ZV9pZGVudGlmaWVyKHRi bHNwYWNlKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgTlVMTCwg dGJsc3BhY2UsIE5VTEwpOwogCQkJCWJyZWFrOwogCQkJfQogCkBAIC01NjM4LDcgKzU2MzMsNyBA QCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJ CQkJCQkJCQkJCQltaXNzaW5nX29rKTsKIAkJCQlpZiAoZmR3KQogCQkJCXsKLQkJCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLCBxdW90ZV9pZGVudGlmaWVyKGZkdy0+ZmR3bmFtZSkp OworCQkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcigmYnVmZmVyLCBOVUxMLCBmZHctPmZk d25hbWUsIE5VTEwpOwogCQkJCQlpZiAob2JqbmFtZSkKIAkJCQkJCSpvYmpuYW1lID0gbGlzdF9t YWtlMShwc3RyZHVwKGZkdy0+ZmR3bmFtZSkpOwogCQkJCX0KQEAgLTU2NTMsOCArNTY0OCw3IEBA IGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJ CQkJCQkJCQkgICBtaXNzaW5nX29rKTsKIAkJCQlpZiAoc3J2KQogCQkJCXsKLQkJCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAotCQkJCQkJCQkJCSAgIHF1b3RlX2lkZW50aWZpZXIo c3J2LT5zZXJ2ZXJuYW1lKSk7CisJCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWZm ZXIsIE5VTEwsIHNydi0+c2VydmVybmFtZSwgTlVMTCk7CiAJCQkJCWlmIChvYmpuYW1lKQogCQkJ CQkJKm9iam5hbWUgPSBsaXN0X21ha2UxKHBzdHJkdXAoc3J2LT5zZXJ2ZXJuYW1lKSk7CiAJCQkJ fQpAQCAtNTY5NSw5ICs1Njg5LDggQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25zdCBPYmpl Y3RBZGRyZXNzICpvYmplY3QsCiAJCQkJCSpvYmphcmdzID0gbGlzdF9tYWtlMShwc3RyZHVwKHNy di0+c2VydmVybmFtZSkpOwogCQkJCX0KIAotCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwg IiVzIG9uIHNlcnZlciAlcyIsCi0JCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHVzZW5hbWUpLAot CQkJCQkJCQkgc3J2LT5zZXJ2ZXJuYW1lKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmll cigmYnVmZmVyLCBOVUxMLCB1c2VuYW1lLCAiIG9uIHNlcnZlciAiKTsKKwkJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZidWZmZXIsIHNydi0+c2VydmVybmFtZSk7CiAJCQkJYnJlYWs7CiAJCQl9 CiAKQEAgLTU4MDAsNyArNTc5Myw3IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2Jq ZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKIAkJCQkJYnJl YWs7CiAJCQkJfQotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgcXVvdGVfaWRl bnRpZmllcihleHRuYW1lKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZl ciwgTlVMTCwgZXh0bmFtZSwgTlVMTCk7CiAJCQkJaWYgKG9iam5hbWUpCiAJCQkJCSpvYmpuYW1l ID0gbGlzdF9tYWtlMShleHRuYW1lKTsKIAkJCQlicmVhazsKQEAgLTU4MjMsNyArNTgxNiw3IEBA IGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJ CX0KIAkJCQl0cmlnRm9ybSA9IChGb3JtX3BnX2V2ZW50X3RyaWdnZXIpIEdFVFNUUlVDVCh0dXAp OwogCQkJCWV2dG5hbWUgPSBwc3RyZHVwKE5hbWVTdHIodHJpZ0Zvcm0tPmV2dG5hbWUpKTsKLQkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsIHF1b3RlX2lkZW50aWZpZXIoZXZ0bmFt ZSkpOworCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWZmZXIsIE5VTEwsIGV2dG5h bWUsIE5VTEwpOwogCQkJCWlmIChvYmpuYW1lKQogCQkJCQkqb2JqbmFtZSA9IGxpc3RfbWFrZTEo ZXZ0bmFtZSk7CiAJCQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CkBAIC01ODc4LDggKzU4NzEsNyBA QCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAog CQkJCXBvbGljeSA9IChGb3JtX3BnX3BvbGljeSkgR0VUU1RSVUNUKHR1cCk7CiAKLQkJCQlhcHBl bmRTdHJpbmdJbmZvKCZidWZmZXIsICIlcyBvbiAiLAotCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmll cihOYW1lU3RyKHBvbGljeS0+cG9sbmFtZSkpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRp ZmllcigmYnVmZmVyLCBOVUxMLCBOYW1lU3RyKHBvbGljeS0+cG9sbmFtZSksICIgb24gIik7CiAJ CQkJZ2V0UmVsYXRpb25JZGVudGl0eSgmYnVmZmVyLCBwb2xpY3ktPnBvbHJlbGlkLCBvYmpuYW1l LCBmYWxzZSk7CiAJCQkJaWYgKG9iam5hbWUpCiAJCQkJCSpvYmpuYW1lID0gbGFwcGVuZCgqb2Jq bmFtZSwgcHN0cmR1cChOYW1lU3RyKHBvbGljeS0+cG9sbmFtZSkpKTsKQEAgLTU4OTUsOCArNTg4 Nyw3IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0 LAogCQkJCXB1Ym5hbWUgPSBnZXRfcHVibGljYXRpb25fbmFtZShvYmplY3QtPm9iamVjdElkLCBt aXNzaW5nX29rKTsKIAkJCQlpZiAocHVibmFtZSkKIAkJCQl7Ci0JCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmJ1ZmZlciwKLQkJCQkJCQkJCQkgICBxdW90ZV9pZGVudGlmaWVyKHB1Ym5hbWUp KTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgTlVMTCwgcHVibmFt ZSwgTlVMTCk7CiAJCQkJCWlmIChvYmpuYW1lKQogCQkJCQkJKm9iam5hbWUgPSBsaXN0X21ha2Ux KHB1Ym5hbWUpOwogCQkJCX0KQEAgLTU5NjMsOCArNTk1NCw3IEBAIGdldE9iamVjdElkZW50aXR5 UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCXN1Ym5hbWUgPSBnZXRfc3Vi c2NyaXB0aW9uX25hbWUob2JqZWN0LT5vYmplY3RJZCwgbWlzc2luZ19vayk7CiAJCQkJaWYgKHN1 Ym5hbWUpCiAJCQkJewotCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCi0JCQkJ CQkJCQkJICAgcXVvdGVfaWRlbnRpZmllcihzdWJuYW1lKSk7CisJCQkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKCZidWZmZXIsIE5VTEwsIHN1Ym5hbWUsIE5VTEwpOwogCQkJCQlpZiAob2Jq bmFtZSkKIAkJCQkJCSpvYmpuYW1lID0gbGlzdF9tYWtlMShzdWJuYW1lKTsKIAkJCQl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IGQ2NzY5MzBhY2EyLi41YjFjNjU0NzUxOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKQEAgLTgyNSw5ICs4MjUsMTEgQEAgcmlf cmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAogCQkJ LyogRmluZCB0aGUgcmVtYWluaW5nIGhpc3RvcnkgKi8KIAkJCWluaXRTdHJpbmdJbmZvKCZyZXBs YWNlbWVudHNidWYpOwotCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcmVwbGFjZW1lbnRzYnVm LCAiKFNFTEVDVCBwZ19jYXRhbG9nLnJhbmdlX2FnZyhyKSBGUk9NICIpOwogCi0JCQlhcHBlbmRT dHJpbmdJbmZvSWRlbnRpZmllcigmcmVwbGFjZW1lbnRzYnVmLCAiKFNFTEVDVCB5LiIsIFJJQXR0 TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pLCAiIHIg RlJPTSAiKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZyZXBsYWNlbWVudHNidWYs CisJCQkJCQkJCQkgICAiKFNFTEVDVCBwZ19jYXRhbG9nLnJhbmdlX2FnZyhyKSBGUk9NIChTRUxF Q1QgeS4iLAorCQkJCQkJCQkJICAgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1z W3JpaW5mby0+bmtleXMgLSAxXSksCisJCQkJCQkJCQkgICAiIHIgRlJPTSAiKTsKIAkJCWFwcGVu ZFJlbGF0aW9uTmFtZSgmcmVwbGFjZW1lbnRzYnVmLCBwa19yZWwsIHBrX29ubHksICIgeSIpOwog CiAJCQkvKiBSZXN0cmljdCBwayByb3dzIHRvIHdoYXQgbWF0Y2hlcyAqLwpAQCAtMTgyMSw4ICsx ODIzLDYgQEAgUklfUGFydGl0aW9uUmVtb3ZlX0NoZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0 aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogCWFwcGVuZFJlbGF0aW9uTmFtZSgmcXVlcnli dWYsIGZrX3JlbCwgZmtfb25seSwgIiBmayBKT0lOICIpOwogCWFwcGVuZFJlbGF0aW9uTmFtZSgm cXVlcnlidWYsIHBrX3JlbCwgTlVMTCwgIiBwayBPTiIpOwogCi0JLyogc3RyY3B5KHBrYXR0bmFt ZSwgInBrLiIpOyAqLwotCS8qIHN0cmNweShma2F0dG5hbWUsICJmay4iKTsgKi8KIAlzZXAgPSAi KCI7CiAJZm9yIChpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAl7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKaW5kZXggYjIxMmEyOGQ5YmUuLmNhZmM0ZDljMDAyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCkBAIC05NzksMTggKzk3OSwxNyBAQCBwZ19nZXRfdHJpZ2dlcmRl Zl93b3JrZXIoT2lkIHRyaWdpZCwgYm9vbCBwcmV0dHkpCiAJCS8qIHRnYXR0ciBpcyBmaXJzdCB2 YXItd2lkdGggZmllbGQsIHNvIE9LIHRvIGFjY2VzcyBkaXJlY3RseSAqLwogCQlpZiAodHJpZ3Jl Yy0+dGdhdHRyLmRpbTEgPiAwKQogCQl7Ci0JCQlpbnQJCQlpOworCQkJY29uc3QgY2hhciAqc2Vw ID0gIiI7CiAKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIiBPRiAiKTsKLQkJCWZv ciAoaSA9IDA7IGkgPCB0cmlncmVjLT50Z2F0dHIuZGltMTsgaSsrKQorCQkJZm9yIChpbnQgaSA9 IDA7IGkgPCB0cmlncmVjLT50Z2F0dHIuZGltMTsgaSsrKQogCQkJewogCQkJCWNoYXIJICAgKmF0 dG5hbWU7CiAKLQkJCQlpZiAoaSA+IDApCi0JCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1 ZiwgIiwgIik7CiAJCQkJYXR0bmFtZSA9IGdldF9hdHRuYW1lKHRyaWdyZWMtPnRncmVsaWQsCiAJ CQkJCQkJCQkgIHRyaWdyZWMtPnRnYXR0ci52YWx1ZXNbaV0sIGZhbHNlKTsKLQkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZidWYsIHF1b3RlX2lkZW50aWZpZXIoYXR0bmFtZSkpOworCQkJCWFw cGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWYsIHNlcCwgYXR0bmFtZSwgTlVMTCk7CisJCQkJ c2VwID0gIiwgIjsKIAkJCX0KIAkJfQogCX0KQEAgLTEwNDIsMTEgKzEwNDEsOSBAQCBwZ19nZXRf dHJpZ2dlcmRlZl93b3JrZXIoT2lkIHRyaWdpZCwgYm9vbCBwcmV0dHkpCiAJewogCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZidWYsICJSRUZFUkVOQ0lORyAiKTsKIAkJaWYgKHRnb2xkdGFibGUg IT0gTlVMTCkKLQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIk9MRCBUQUJMRSBBUyAlcyAiLAot CQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHRnb2xkdGFibGUpKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKCZidWYsICJPTEQgVEFCTEUgQVMgIiwgdGdvbGR0YWJsZSwgIiAiKTsKIAkJ aWYgKHRnbmV3dGFibGUgIT0gTlVMTCkKLQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIk5FVyBU QUJMRSBBUyAlcyAiLAotCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHRnbmV3dGFibGUpKTsKKwkJ CWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWYsICJORVcgVEFCTEUgQVMgIiwgdGduZXd0 YWJsZSwgIiAiKTsKIAl9CiAKIAlpZiAoVFJJR0dFUl9GT1JfUk9XKHRyaWdyZWMtPnRndHlwZSkp CkBAIC0xMzg3LDggKzEzODQsNyBAQCBwZ19nZXRfaW5kZXhkZWZfd29ya2VyKE9pZCBpbmRleHJl bGlkLCBpbnQgY29sbm8sCiAJCQkJCQkJIGdlbmVyYXRlX3F1YWxpZmllZF9yZWxhdGlvbl9uYW1l KGluZHJlbGlkKSwKIAkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihOYW1lU3RyKGFtcmVjLT5hbW5h bWUpKSk7CiAJCWVsc2UJCQkJCS8qIGN1cnJlbnRseSwgbXVzdCBiZSBFWENMVURFIGNvbnN0cmFp bnQgKi8KLQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkVYQ0xVREUgVVNJTkcgJXMgKCIsCi0J CQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoTmFtZVN0cihhbXJlYy0+YW1uYW1lKSkpOworCQkJYXBw ZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZiwgIkVYQ0xVREUgVVNJTkcgIiwgTmFtZVN0cihh bXJlYy0+YW1uYW1lKSwgIiAoIik7CiAJfQogCiAJLyoKQEAgLTE0MjYsNyArMTQyMiw3IEBAIHBn X2dldF9pbmRleGRlZl93b3JrZXIoT2lkIGluZGV4cmVsaWQsIGludCBjb2xubywKIAogCQkJYXR0 bmFtZSA9IGdldF9hdHRuYW1lKGluZHJlbGlkLCBhdHRudW0sIGZhbHNlKTsKIAkJCWlmICghY29s bm8gfHwgY29sbm8gPT0ga2V5bm8gKyAxKQotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1 ZiwgcXVvdGVfaWRlbnRpZmllcihhdHRuYW1lKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50 aWZpZXIoJmJ1ZiwgTlVMTCwgYXR0bmFtZSwgTlVMTCk7CiAJCQlnZXRfYXR0dHlwZXR5cG1vZGNv bGwoaW5kcmVsaWQsIGF0dG51bSwKIAkJCQkJCQkJICAma2V5Y29sdHlwZSwgJmtleWNvbHR5cG1v ZCwKIAkJCQkJCQkJICAma2V5Y29sY29sbGF0aW9uKTsKQEAgLTE1MzYsOCArMTUzMiw4IEBAIHBn X2dldF9pbmRleGRlZl93b3JrZXIoT2lkIGluZGV4cmVsaWQsIGludCBjb2xubywKIAkJCXsKIAkJ CQlpZiAoaXNDb25zdHJhaW50KQogCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICIg VVNJTkcgSU5ERVgiKTsKLQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICIgVEFCTEVTUEFDRSAl cyIsCi0JCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGdldF90YWJsZXNwYWNlX25hbWUodGJsc3Bj KSkpOworCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWYsICIgVEFCTEVTUEFDRSAi LAorCQkJCQkJCQkJCSAgIGdldF90YWJsZXNwYWNlX25hbWUodGJsc3BjKSwgTlVMTCk7CiAJCQl9 CiAJCX0KIApAQCAtMTc5NCw3ICsxNzkwLDcgQEAgcGdfZ2V0X3N0YXRpc3RpY3NvYmpfd29ya2Vy KE9pZCBzdGF0ZXh0aWQsIGJvb2wgY29sdW1uc19vbmx5LCBib29sIG1pc3Npbmdfb2spCiAKIAkJ YXR0bmFtZSA9IGdldF9hdHRuYW1lKHN0YXRleHRyZWMtPnN0eHJlbGlkLCBhdHRudW0sIGZhbHNl KTsKIAotCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsIHF1b3RlX2lkZW50aWZpZXIoYXR0 bmFtZSkpOworCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcigmYnVmLCBOVUxMLCBhdHRuYW1l LCBOVUxMKTsKIAl9CiAKIAljb250ZXh0ID0gZGVwYXJzZV9jb250ZXh0X2ZvcihnZXRfcmVsYXRp b25fbmFtZShzdGF0ZXh0cmVjLT5zdHhyZWxpZCksCkBAIC0yMDM4LDcgKzIwMzQsNyBAQCBwZ19n ZXRfcGFydGtleWRlZl93b3JrZXIoT2lkIHJlbGlkLCBpbnQgcHJldHR5RmxhZ3MsCiAJCQlpbnQz MgkJa2V5Y29sdHlwbW9kOwogCiAJCQlhdHRuYW1lID0gZ2V0X2F0dG5hbWUocmVsaWQsIGF0dG51 bSwgZmFsc2UpOwotCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCBxdW90ZV9pZGVudGlm aWVyKGF0dG5hbWUpKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWYsIE5VTEws IGF0dG5hbWUsIE5VTEwpOwogCQkJZ2V0X2F0dHR5cGV0eXBtb2Rjb2xsKHJlbGlkLCBhdHRudW0s CiAJCQkJCQkJCSAgJmtleWNvbHR5cGUsICZrZXljb2x0eXBtb2QsCiAJCQkJCQkJCSAgJmtleWNv bGNvbGxhdGlvbik7CkBAIC0yMjQ2LDE3ICsyMjQyLDE5IEBAIHBnX2dldF9jb25zdHJhaW50ZGVm X3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJICogd2UgbWln aHQgbmVlZCB0byBsZXQgY2FsbGVycyBzcGVjaWZ5IHdoZXRoZXIgdG8gcHV0IE9OTFkgaW4gdGhl CiAJCQkgKiBjb21tYW5kLgogCQkJICovCi0JCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJBTFRF UiBUQUJMRSAlcyBBREQgQ09OU1RSQUlOVCAlcyAiLAotCQkJCQkJCSBnZW5lcmF0ZV9xdWFsaWZp ZWRfcmVsYXRpb25fbmFtZShjb25Gb3JtLT5jb25yZWxpZCksCi0JCQkJCQkJIHF1b3RlX2lkZW50 aWZpZXIoTmFtZVN0cihjb25Gb3JtLT5jb25uYW1lKSkpOworCQkJYXBwZW5kU3RyaW5nSW5mbygm YnVmLCAiQUxURVIgVEFCTEUgJXMgIiwKKwkJCQkJCQkgZ2VuZXJhdGVfcXVhbGlmaWVkX3JlbGF0 aW9uX25hbWUoY29uRm9ybS0+Y29ucmVsaWQpKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlm aWVyKCZidWYsICJBREQgQ09OU1RSQUlOVCAiLAorCQkJCQkJCQkJICAgTmFtZVN0cihjb25Gb3Jt LT5jb25uYW1lKSwgIiAiKTsKIAkJfQogCQllbHNlCiAJCXsKIAkJCS8qIE11c3QgYmUgYSBkb21h aW4gY29uc3RyYWludCAqLwogCQkJQXNzZXJ0KE9pZElzVmFsaWQoY29uRm9ybS0+Y29udHlwaWQp KTsKLQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkFMVEVSIERPTUFJTiAlcyBBREQgQ09OU1RS QUlOVCAlcyAiLAotCQkJCQkJCSBnZW5lcmF0ZV9xdWFsaWZpZWRfdHlwZV9uYW1lKGNvbkZvcm0t PmNvbnR5cGlkKSwKLQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihOYW1lU3RyKGNvbkZvcm0tPmNv bm5hbWUpKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJBTFRFUiBET01BSU4gJXMgIiwK KwkJCQkJCQkgZ2VuZXJhdGVfcXVhbGlmaWVkX3R5cGVfbmFtZShjb25Gb3JtLT5jb250eXBpZCkp OworCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZiwgIkFERCBDT05TVFJBSU5UICIs CisJCQkJCQkJCQkgICBOYW1lU3RyKGNvbkZvcm0tPmNvbm5hbWUpLCAiICIpOwogCQl9CiAJfQog CkBAIC0yNDIzLDYgKzI0MjEsNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNv bnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQkJRGF0dW0JICAgKmtleXM7CiAJCQkJ CWludAkJCW5LZXlzOwogCQkJCQlpbnQJCQlqOworCQkJCQljb25zdCBjaGFyICpzZXAgPSAiIjsK IAogCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICIgSU5DTFVERSAoIik7CiAKQEAg LTI0MzgsOSArMjQzNyw4IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3Ry YWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCiAJCQkJCQljb2xOYW1lID0gZ2V0X2F0dG5hbWUo Y29uRm9ybS0+Y29ucmVsaWQsCiAJCQkJCQkJCQkJCSAgRGF0dW1HZXRJbnQxNihrZXlzW2pdKSwg ZmFsc2UpOwotCQkJCQkJaWYgKGogPiBrZXlhdHRzKQotCQkJCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmJ1ZiwgIiwgIik7Ci0JCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsIHF1 b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZp ZXIoJmJ1Ziwgc2VwLCBjb2xOYW1lLCBOVUxMKTsKKwkJCQkJCXNlcCA9ICIsICI7CiAJCQkJCX0K IAogCQkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwpAQCAtMjQ2Nyw4ICsyNDY1 LDggQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wg ZnVsbENvbW1hbmQsCiAJCQkJCSAqLwogCQkJCQl0YmxzcGMgPSBnZXRfcmVsX3RhYmxlc3BhY2Uo aW5kZXhJZCk7CiAJCQkJCWlmIChPaWRJc1ZhbGlkKHRibHNwYykpCi0JCQkJCQlhcHBlbmRTdHJp bmdJbmZvKCZidWYsICIgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSAlcyIsCi0JCQkJCQkJCQkJIHF1 b3RlX2lkZW50aWZpZXIoZ2V0X3RhYmxlc3BhY2VfbmFtZSh0YmxzcGMpKSk7CisJCQkJCQlhcHBl bmRTdHJpbmdJbmZvSWRlbnRpZmllcigmYnVmLCAiIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgIiwK KwkJCQkJCQkJCQkJCSAgIGdldF90YWJsZXNwYWNlX25hbWUodGJsc3BjKSwgTlVMTCk7CiAJCQkJ fQogCiAJCQkJYnJlYWs7CkBAIC0yNTI5LDkgKzI1MjcsOSBAQCBwZ19nZXRfY29uc3RyYWludGRl Zl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAogCQkJCQlhdHRu dW0gPSBleHRyYWN0Tm90TnVsbENvbHVtbih0dXApOwogCi0JCQkJCWFwcGVuZFN0cmluZ0luZm8o JmJ1ZiwgIk5PVCBOVUxMICVzIiwKLQkJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGdldF9hdHRu YW1lKGNvbkZvcm0tPmNvbnJlbGlkLAotCQkJCQkJCQkJCQkJCQkJCSAgYXR0bnVtLCBmYWxzZSkp KTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZiwgIk5PVCBOVUxMICIsCisJ CQkJCQkJCQkJCSAgIGdldF9hdHRuYW1lKGNvbkZvcm0tPmNvbnJlbGlkLAorCQkJCQkJCQkJCQkJ CQkgICBhdHRudW0sIGZhbHNlKSwgTlVMTCk7CiAJCQkJCWlmICgoKEZvcm1fcGdfY29uc3RyYWlu dCkgR0VUU1RSVUNUKHR1cCkpLT5jb25ub2luaGVyaXQpCiAJCQkJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZidWYsICIgTk8gSU5IRVJJVCIpOwogCQkJCX0KQEAgLTI2MzUsMTEgKzI2MzMsMTQg QEAgZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXks IE9pZCByZWxJZCwKIAkJY29sTmFtZSA9IGdldF9hdHRuYW1lKHJlbElkLCBEYXR1bUdldEludDE2 KGtleXNbal0pLCBmYWxzZSk7CiAKIAkJaWYgKGogPT0gMCkKLQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKGJ1ZiwgTlVMTCwgY29sTmFtZSwgTlVMTCk7CiAJCWVsc2UKLQkJCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAiLCAlcyVzIiwKLQkJCQkJCQkgKHdpdGhQZXJpb2QgJiYgaiA9PSBu S2V5cyAtIDEpID8gIlBFUklPRCAiIDogIiIsCi0JCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoY29s TmFtZSkpOworCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisJCQlh cHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsCisJCQkJCQkJCQkgICAod2l0aFBlcmlvZCAm JiBqID09IG5LZXlzIC0gMSkgPyAiUEVSSU9EICIgOiAiIiwKKwkJCQkJCQkJCSAgIGNvbE5hbWUs IE5VTEwpOworCQl9CiAJfQogCiAJcmV0dXJuIG5LZXlzOwpAQCAtMjk3NSw4ICsyOTc2LDggQEAg cGdfZ2V0X2Z1bmN0aW9uZGVmKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlwcmludF9mdW5jdGlvbl90 cmZ0eXBlcygmYnVmLCBwcm9jdHVwKTsKIAotCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIiBMQU5H VUFHRSAlc1xuIiwKLQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoZ2V0X2xhbmd1YWdlX25hbWUocHJv Yy0+cHJvbGFuZywgZmFsc2UpKSk7CisJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1Ziwg IiBMQU5HVUFHRSAiLAorCQkJCQkJCSAgIGdldF9sYW5ndWFnZV9uYW1lKHByb2MtPnByb2xhbmcs IGZhbHNlKSwgIlxuIik7CiAKIAkvKiBFbWl0IHNvbWUgbWlzY2VsbGFuZW91cyBvcHRpb25zIG9u IG9uZSBsaW5lICovCiAJb2xkbGVuID0gYnVmLmxlbjsKQEAgLTMwNzUsOCArMzA3Niw3IEBAIHBn X2dldF9mdW5jdGlvbmRlZihQR19GVU5DVElPTl9BUkdTKQogCQkJCQljb250aW51ZTsKIAkJCQkq cG9zKysgPSAnXDAnOwogCi0JCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiIFNFVCAlcyBUTyAi LAotCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihjb25maWdpdGVtKSk7CisJCQkJYXBwZW5kU3Ry aW5nSW5mb0lkZW50aWZpZXIoJmJ1ZiwgIiBTRVQgIiwgY29uZmlnaXRlbSwgIiBUTyAiKTsKIAog CQkJCS8qCiAJCQkJICogVmFyaWFibGVzIHRoYXQgYXJlIG1hcmtlZCBHVUNfTElTVF9RVU9URSB3 ZXJlIGFscmVhZHkgZnVsbHkKQEAgLTM0MTgsNyArMzQxOCw3IEBAIHByaW50X2Z1bmN0aW9uX2Fy Z3VtZW50cyhTdHJpbmdJbmZvIGJ1ZiwgSGVhcFR1cGxlIHByb2N0dXAsCiAKIAkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhidWYsIG1vZGVuYW1lKTsKIAkJaWYgKGFyZ25hbWUgJiYgYXJnbmFtZVsw XSkKLQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMgIiwgcXVvdGVfaWRlbnRpZmllcihhcmdu YW1lKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsIE5VTEwsIGFyZ25hbWUs ICIgIik7CiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBmb3JtYXRfdHlwZV9iZShhcmd0 eXBlKSk7CiAJCWlmIChwcmludF9kZWZhdWx0cyAmJiBpc2lucHV0ICYmIGlucHV0YXJnbm8gPiBu bGFja2RlZmF1bHRzKQogCQl7CkBAIC01NDAyLDggKzU0MDIsNyBAQCBtYWtlX3J1bGVkZWYoU3Ry aW5nSW5mbyBidWYsIEhlYXBUdXBsZSBydWxldHVwLCBUdXBsZURlc2MgcnVsZXR0YywKIAkvKgog CSAqIEJ1aWxkIHRoZSBydWxlcyBkZWZpbml0aW9uIHRleHQKIAkgKi8KLQlhcHBlbmRTdHJpbmdJ bmZvKGJ1ZiwgIkNSRUFURSBSVUxFICVzIEFTIiwKLQkJCQkJIHF1b3RlX2lkZW50aWZpZXIocnVs ZW5hbWUpKTsKKwlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICJDUkVBVEUgUlVMRSAi LCBydWxlbmFtZSwgIiBBUyIpOwogCiAJaWYgKHByZXR0eUZsYWdzICYgUFJFVFRZRkxBR19JTkRF TlQpCiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiXG4gICAgT04gIik7CkBAIC01Nzkx LDIxICs1NzkwLDE4IEBAIGdldF93aXRoX2NsYXVzZShRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29u dGV4dCAqY29udGV4dCkKIAkJQ29tbW9uVGFibGVFeHByICpjdGUgPSAoQ29tbW9uVGFibGVFeHBy ICopIGxmaXJzdChsKTsKIAogCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwgc2VwKTsKLQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIoY3RlLT5jdGVuYW1l KSk7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1ZiwgTlVMTCwgY3RlLT5jdGVuYW1l LCBOVUxMKTsKIAkJaWYgKGN0ZS0+YWxpYXNjb2xuYW1lcykKIAkJewotCQkJYm9vbAkJZmlyc3Qg PSB0cnVlOwogCQkJTGlzdENlbGwgICAqY29sOworCQkJY29uc3QgY2hhciAqY29sc2VwID0gIiI7 CiAKIAkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJygnKTsKIAkJCWZvcmVhY2goY29sLCBj dGUtPmFsaWFzY29sbmFtZXMpCiAJCQl7Ci0JCQkJaWYgKGZpcnN0KQotCQkJCQlmaXJzdCA9IGZh bHNlOwotCQkJCWVsc2UKLQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOwot CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAotCQkJCQkJCQkJICAgcXVvdGVfaWRlbnRp ZmllcihzdHJWYWwobGZpcnN0KGNvbCkpKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZp ZXIoYnVmLCBjb2xzZXAsCisJCQkJCQkJCQkJICAgc3RyVmFsKGxmaXJzdChjb2wpKSwgTlVMTCk7 CisJCQkJY29sc2VwID0gIiwgIjsKIAkJCX0KIAkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1Ziwg JyknKTsKIAkJfQpAQCAtNTgzNCw0MyArNTgzMCwzNSBAQCBnZXRfd2l0aF9jbGF1c2UoUXVlcnkg KnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAKIAkJaWYgKGN0ZS0+c2VhcmNoX2Ns YXVzZSkKIAkJewotCQkJYm9vbAkJZmlyc3QgPSB0cnVlOwogCQkJTGlzdENlbGwgICAqbGM7CisJ CQljb25zdCBjaGFyICpjb2xzZXAgPSAiIjsKIAogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIg U0VBUkNIICVzIEZJUlNUIEJZICIsCiAJCQkJCQkJIGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNo X2JyZWFkdGhfZmlyc3QgPyAiQlJFQURUSCIgOiAiREVQVEgiKTsKIAogCQkJZm9yZWFjaChsYywg Y3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfY29sX2xpc3QpCiAJCQl7Ci0JCQkJaWYgKGZpcnN0 KQotCQkJCQlmaXJzdCA9IGZhbHNlOwotCQkJCWVsc2UKLQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhidWYsICIsICIpOwotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAotCQkJCQkJ CQkJICAgcXVvdGVfaWRlbnRpZmllcihzdHJWYWwobGZpcnN0KGxjKSkpKTsKKwkJCQlhcHBlbmRT dHJpbmdJbmZvSWRlbnRpZmllcihidWYsIGNvbHNlcCwgc3RyVmFsKGxmaXJzdChsYykpLCBOVUxM KTsKKwkJCQljb2xzZXAgPSAiLCAiOwogCQkJfQogCi0JCQlhcHBlbmRTdHJpbmdJbmZvKGJ1Ziwg IiBTRVQgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNoX3Nl cV9jb2x1bW4pKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1ZiwgIiBTRVQgIiwg Y3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfc2VxX2NvbHVtbiwgTlVMTCk7CiAJCX0KIAogCQlp ZiAoY3RlLT5jeWNsZV9jbGF1c2UpCiAJCXsKLQkJCWJvb2wJCWZpcnN0ID0gdHJ1ZTsKIAkJCUxp c3RDZWxsICAgKmxjOworCQkJY29uc3QgY2hhciAqY29sc2VwID0gIiI7CiAKIAkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoYnVmLCAiIENZQ0xFICIpOwogCiAJCQlmb3JlYWNoKGxjLCBjdGUtPmN5 Y2xlX2NsYXVzZS0+Y3ljbGVfY29sX2xpc3QpCiAJCQl7Ci0JCQkJaWYgKGZpcnN0KQotCQkJCQlm aXJzdCA9IGZhbHNlOwotCQkJCWVsc2UKLQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYs ICIsICIpOwotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAotCQkJCQkJCQkJICAgcXVv dGVfaWRlbnRpZmllcihzdHJWYWwobGZpcnN0KGxjKSkpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZv SWRlbnRpZmllcihidWYsIGNvbHNlcCwgc3RyVmFsKGxmaXJzdChsYykpLCBOVUxMKTsKKwkJCQlj b2xzZXAgPSAiLCAiOwogCQkJfQogCi0JCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBTRVQgJXMi LCBxdW90ZV9pZGVudGlmaWVyKGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX2NvbHVtbikp OworCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCAiIFNFVCAiLCBjdGUtPmN5Y2xl X2NsYXVzZS0+Y3ljbGVfbWFya19jb2x1bW4sIE5VTEwpOwogCiAJCQl7CiAJCQkJQ29uc3QJICAg KmNtdiA9IGNhc3ROb2RlKENvbnN0LCBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya192YWx1 ZSk7CkBAIC01ODg2LDcgKzU4NzQsNyBAQCBnZXRfd2l0aF9jbGF1c2UoUXVlcnkgKnF1ZXJ5LCBk ZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJCQkJfQogCQkJfQogCi0JCQlhcHBlbmRTdHJpbmdJ bmZvKGJ1ZiwgIiBVU0lORyAlcyIsIHF1b3RlX2lkZW50aWZpZXIoY3RlLT5jeWNsZV9jbGF1c2Ut PmN5Y2xlX3BhdGhfY29sdW1uKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYs ICIgVVNJTkcgIiwgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX3BhdGhfY29sdW1uLCBOVUxMKTsK IAkJfQogCiAJCXNlcCA9ICIsICI7CkBAIC02MDIyLDkgKzYwMTAsNyBAQCBnZXRfc2VsZWN0X3F1 ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJCQkJYnJl YWs7CiAJCQl9CiAKLQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIE9GICVzIiwKLQkJCQkJCQkg cXVvdGVfaWRlbnRpZmllcihnZXRfcnRhYmxlX25hbWUocmMtPnJ0aSwKLQkJCQkJCQkJCQkJCQkJ CSAgY29udGV4dCkpKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1ZiwgIiBPRiAi LCBnZXRfcnRhYmxlX25hbWUocmMtPnJ0aSwgY29udGV4dCksIE5VTEwpOwogCQkJaWYgKHJjLT53 YWl0UG9saWN5ID09IExvY2tXYWl0RXJyb3IpCiAJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhi dWYsICIgTk9XQUlUIik7CiAJCQllbHNlIGlmIChyYy0+d2FpdFBvbGljeSA9PSBMb2NrV2FpdFNr aXApCkBAIC02MzE3LDcgKzYzMDMsNyBAQCBnZXRfdGFyZ2V0X2xpc3QoTGlzdCAqdGFyZ2V0TGlz dCwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCQlpZiAoY29sbmFtZSkJCQkvKiByZXNuYW1l IGNvdWxkIGJlIE5VTEwgKi8KIAkJewogCQkJaWYgKGF0dG5hbWUgPT0gTlVMTCB8fCBzdHJjbXAo YXR0bmFtZSwgY29sbmFtZSkgIT0gMCkKLQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZ0YXJnZXRidWYs ICIgQVMgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbG5hbWUpKTsKKwkJCQlhcHBlbmRTdHJpbmdJ bmZvSWRlbnRpZmllcigmdGFyZ2V0YnVmLCAiIEFTICIsIGNvbG5hbWUsIE5VTEwpOwogCQl9CiAK IAkJLyogUmVzdG9yZSBjb250ZXh0J3Mgb3V0cHV0IGJ1ZmZlciAqLwpAQCAtNjM5MSwxOSArNjM3 NywxNiBAQCBnZXRfcmV0dXJuaW5nX2NsYXVzZShRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4 dCAqY29udGV4dCkKIAkJLyogQWRkIFdJVEggKE9MRC9ORVcpIG9wdGlvbnMsIGlmIHRoZXkncmUg bm90IHRoZSBkZWZhdWx0cyAqLwogCQlpZiAocXVlcnktPnJldHVybmluZ09sZEFsaWFzICYmIHN0 cmNtcChxdWVyeS0+cmV0dXJuaW5nT2xkQWxpYXMsICJvbGQiKSAhPSAwKQogCQl7Ci0JCQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiBXSVRIIChPTEQgQVMgJXMiLAotCQkJCQkJCSBxdW90ZV9pZGVu dGlmaWVyKHF1ZXJ5LT5yZXR1cm5pbmdPbGRBbGlhcykpOworCQkJYXBwZW5kU3RyaW5nSW5mb0lk ZW50aWZpZXIoYnVmLCAiIFdJVEggKE9MRCBBUyAiLCBxdWVyeS0+cmV0dXJuaW5nT2xkQWxpYXMs IE5VTEwpOwogCQkJaGF2ZV93aXRoID0gdHJ1ZTsKIAkJfQogCQlpZiAocXVlcnktPnJldHVybmlu Z05ld0FsaWFzICYmIHN0cmNtcChxdWVyeS0+cmV0dXJuaW5nTmV3QWxpYXMsICJuZXciKSAhPSAw KQogCQl7CiAJCQlpZiAoaGF2ZV93aXRoKQotCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCBO RVcgQVMgJXMiLAotCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihxdWVyeS0+cmV0dXJuaW5nTmV3 QWxpYXMpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICIsIE5FVyBBUyAi LCBxdWVyeS0+cmV0dXJuaW5nTmV3QWxpYXMsIE5VTEwpOwogCQkJZWxzZQogCQkJewotCQkJCWFw cGVuZFN0cmluZ0luZm8oYnVmLCAiIFdJVEggKE5FVyBBUyAlcyIsCi0JCQkJCQkJCSBxdW90ZV9p ZGVudGlmaWVyKHF1ZXJ5LT5yZXR1cm5pbmdOZXdBbGlhcykpOworCQkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKGJ1ZiwgIiBXSVRIIChORVcgQVMgIiwgcXVlcnktPnJldHVybmluZ05ld0Fs aWFzLCBOVUxMKTsKIAkJCQloYXZlX3dpdGggPSB0cnVlOwogCQkJfQogCQl9CkBAIC02NzcxLDcg KzY3NTQsNyBAQCBnZXRfcnVsZV93aW5kb3djbGF1c2UoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQpCiAJCWVsc2UKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBz ZXApOwogCi0JCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMgQVMgIiwgcXVvdGVfaWRlbnRpZmll cih3Yy0+bmFtZSkpOworCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsIE5VTEwsIHdj LT5uYW1lLCAiIEFTICIpOwogCiAJCWdldF9ydWxlX3dpbmRvd3NwZWMod2MsIHF1ZXJ5LT50YXJn ZXRMaXN0LCBjb250ZXh0KTsKIApAQCAtNjc5NCw3ICs2Nzc3LDcgQEAgZ2V0X3J1bGVfd2luZG93 c3BlYyhXaW5kb3dDbGF1c2UgKndjLCBMaXN0ICp0YXJnZXRMaXN0LAogCWFwcGVuZFN0cmluZ0lu Zm9DaGFyKGJ1ZiwgJygnKTsKIAlpZiAod2MtPnJlZm5hbWUpCiAJewotCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcih3Yy0+cmVmbmFtZSkpOworCQlhcHBlbmRT dHJpbmdJbmZvSWRlbnRpZmllcihidWYsIE5VTEwsIHdjLT5yZWZuYW1lLCBOVUxMKTsKIAkJbmVl ZHNwYWNlID0gdHJ1ZTsKIAl9CiAJLyogcGFydGl0aW9uIGNsYXVzZXMgYXJlIGFsd2F5cyBpbmhl cml0ZWQsIHNvIG9ubHkgcHJpbnQgaWYgbm8gcmVmbmFtZSAqLwpAQCAtNzAyMSwxMCArNzAwNCw4 IEBAIGdldF9pbnNlcnRfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpj b250ZXh0KQogCQkgKiBQdXQgb3V0IG5hbWUgb2YgdGFyZ2V0IGNvbHVtbjsgbG9vayBpbiB0aGUg Y2F0YWxvZ3MsIG5vdCBhdAogCQkgKiB0bGUtPnJlc25hbWUsIHNpbmNlIHJlc25hbWUgd2lsbCBm YWlsIHRvIHRyYWNrIFJFTkFNRS4KIAkJICovCi0JCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVm LAotCQkJCQkJCSAgIHF1b3RlX2lkZW50aWZpZXIoZ2V0X2F0dG5hbWUocnRlLT5yZWxpZCwKLQkJ CQkJCQkJCQkJCQkJCXRsZS0+cmVzbm8sCi0JCQkJCQkJCQkJCQkJCQlmYWxzZSkpKTsKKwkJYXBw ZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCBOVUxMLAorCQkJCQkJCQkgICBnZXRfYXR0bmFt ZShydGUtPnJlbGlkLCB0bGUtPnJlc25vLCBmYWxzZSksIE5VTEwpOwogCiAJCS8qCiAJCSAqIFBy aW50IGFueSBpbmRpcmVjdGlvbiBuZWVkZWQgKHN1YmZpZWxkcyBvciBzdWJzY3JpcHRzKSwgYW5k IHN0cmlwCkBAIC03MTE3LDggKzcwOTgsNyBAQCBnZXRfaW5zZXJ0X3F1ZXJ5X2RlZihRdWVyeSAq cXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJCWlmICghY29uc3RyYWludCkKIAkJ CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29uc3RyYWludCAldSIsCiAJ CQkJCSBjb25mbC0+Y29uc3RyYWludCk7Ci0JCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBPTiBD T05TVFJBSU5UICVzIiwKLQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihjb25zdHJhaW50KSk7CisJ CQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICIgT04gQ09OU1RSQUlOVCAiLCBjb25z dHJhaW50LCBOVUxMKTsKIAkJfQogCiAJCWlmIChjb25mbC0+YWN0aW9uID09IE9OQ09ORkxJQ1Rf Tk9USElORykKQEAgLTczMjAsMTAgKzczMDAsNyBAQCBnZXRfdXBkYXRlX3F1ZXJ5X3RhcmdldGxp c3RfZGVmKFF1ZXJ5ICpxdWVyeSwgTGlzdCAqdGFyZ2V0TGlzdCwKIAkJICogUHV0IG91dCBuYW1l IG9mIHRhcmdldCBjb2x1bW47IGxvb2sgaW4gdGhlIGNhdGFsb2dzLCBub3QgYXQKIAkJICogdGxl LT5yZXNuYW1lLCBzaW5jZSByZXNuYW1lIHdpbGwgZmFpbCB0byB0cmFjayBSRU5BTUUuCiAJCSAq LwotCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwKLQkJCQkJCQkgICBxdW90ZV9pZGVudGlm aWVyKGdldF9hdHRuYW1lKHJ0ZS0+cmVsaWQsCi0JCQkJCQkJCQkJCQkJCQl0bGUtPnJlc25vLAot CQkJCQkJCQkJCQkJCQkJZmFsc2UpKSk7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1 ZiwgTlVMTCwgZ2V0X2F0dG5hbWUocnRlLT5yZWxpZCwgdGxlLT5yZXNubywgZmFsc2UpLCBOVUxM KTsKIAogCQkvKgogCQkgKiBQcmludCBhbnkgaW5kaXJlY3Rpb24gbmVlZGVkIChzdWJmaWVsZHMg b3Igc3Vic2NyaXB0cyksIGFuZCBzdHJpcApAQCAtNzUxMSwxMCArNzQ4OCwxMCBAQCBnZXRfbWVy Z2VfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCQkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBzZXApOwogCQkJCXNlcCA9ICIsICI7CiAKLQkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwKLQkJCQkJCQkJCSAgIHF1b3RlX2lkZW50aWZp ZXIoZ2V0X2F0dG5hbWUocnRlLT5yZWxpZCwKLQkJCQkJCQkJCQkJCQkJCQkJdGxlLT5yZXNubywK LQkJCQkJCQkJCQkJCQkJCQkJZmFsc2UpKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZp ZXIoYnVmLCBOVUxMLAorCQkJCQkJCQkJCSAgIGdldF9hdHRuYW1lKHJ0ZS0+cmVsaWQsCisJCQkJ CQkJCQkJCQkJICAgdGxlLT5yZXNubywKKwkJCQkJCQkJCQkJCQkgICBmYWxzZSksIE5VTEwpOwog CQkJCXN0cmlwcGVkZXhwcnMgPSBsYXBwZW5kKHN0cmlwcGVkZXhwcnMsCiAJCQkJCQkJCQkJcHJv Y2Vzc0luZGlyZWN0aW9uKChOb2RlICopIHRsZS0+ZXhwciwKIAkJCQkJCQkJCQkJCQkJICAgY29u dGV4dCkpOwpAQCAtNzU3Myw4ICs3NTUwLDggQEAgZ2V0X3V0aWxpdHlfcXVlcnlfZGVmKFF1ZXJ5 ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCiAJCWFwcGVuZENvbnRleHRLZXl3 b3JkKGNvbnRleHQsICIiLAogCQkJCQkJCSAwLCBQUkVUVFlJTkRFTlRfU1RELCAxKTsKLQkJYXBw ZW5kU3RyaW5nSW5mbyhidWYsICJOT1RJRlkgJXMiLAotCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIo c3RtdC0+Y29uZGl0aW9ubmFtZSkpOworCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYs ICJOT1RJRlkgIiwKKwkJCQkJCQkJICAgc3RtdC0+Y29uZGl0aW9ubmFtZSwgTlVMTCk7CiAJCWlm IChzdG10LT5wYXlsb2FkKQogCQl7CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwg Iik7CkBAIC03ODY1LDExICs3ODQyLDExIEBAIGdldF92YXJpYWJsZShWYXIgKnZhciwgaW50IGxl dmVsc3VwLCBib29sIGlzdG9wbGV2ZWwsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAogCWlm IChyZWZuYW1lICYmIG5lZWRfcHJlZml4KQogCXsKLQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhi dWYsIHF1b3RlX2lkZW50aWZpZXIocmVmbmFtZSkpOworCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRp ZmllcihidWYsIE5VTEwsIHJlZm5hbWUsIE5VTEwpOwogCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihi dWYsICcuJyk7CiAJfQogCWlmIChhdHRuYW1lKQotCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1 ZiwgcXVvdGVfaWRlbnRpZmllcihhdHRuYW1lKSk7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlm aWVyKGJ1ZiwgTlVMTCwgYXR0bmFtZSwgTlVMTCk7CiAJZWxzZQogCXsKIAkJYXBwZW5kU3RyaW5n SW5mb0NoYXIoYnVmLCAnKicpOwpAQCAtODgwNiwxMSArODc4MywxMCBAQCBnZXRfcGFyYW1ldGVy KFBhcmFtICpwYXJhbSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCQkJCX0KIAkJCQlpZiAo c2hvdWxkX3F1YWxpZnkpCiAJCQkJewotCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRl eHQtPmJ1ZiwgcXVvdGVfaWRlbnRpZmllcihkcG5zLT5mdW5jbmFtZSkpOwotCQkJCQlhcHBlbmRT dHJpbmdJbmZvQ2hhcihjb250ZXh0LT5idWYsICcuJyk7CisJCQkJCWFwcGVuZFN0cmluZ0luZm9J ZGVudGlmaWVyKGNvbnRleHQtPmJ1ZiwgTlVMTCwgZHBucy0+ZnVuY25hbWUsICIuIik7CiAJCQkJ fQogCi0JCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250ZXh0LT5idWYsIHF1b3RlX2lkZW50 aWZpZXIoYXJnbmFtZSkpOworCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGNvbnRleHQt PmJ1ZiwgTlVMTCwgYXJnbmFtZSwgTlVMTCk7CiAJCQkJcmV0dXJuOwogCQkJfQogCQl9CkBAIC05 MzkxLDcgKzkzNjcsNyBAQCBnZXRfcnVsZV9leHByKE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4 dCAqY29udGV4dCwKIAkJCXsKIAkJCQlOYW1lZEFyZ0V4cHIgKm5hID0gKE5hbWVkQXJnRXhwciAq KSBub2RlOwogCi0JCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyA9PiAiLCBxdW90ZV9pZGVu dGlmaWVyKG5hLT5uYW1lKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCBO VUxMLCBuYS0+bmFtZSwgIiA9PiAiKTsKIAkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIG5hLT5h cmcsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CiAJCQl9CiAJCQlicmVhazsKQEAgLTk2NzksNyAr OTY1NSw3IEBAIGdldF9ydWxlX2V4cHIoTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250 ZXh0LAogCQkJCSAqLwogCQkJCWZpZWxkbmFtZSA9IGdldF9uYW1lX2Zvcl92YXJfZmllbGQoKFZh ciAqKSBhcmcsIGZubywKIAkJCQkJCQkJCQkJCSAgIDAsIGNvbnRleHQpOwotCQkJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAiLiVzIiwgcXVvdGVfaWRlbnRpZmllcihmaWVsZG5hbWUpKTsKKwkJCQlh cHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICIuIiwgZmllbGRuYW1lLCBOVUxMKTsKIAkJ CX0KIAkJCWJyZWFrOwogCkBAIC0xMDEzMSw4ICsxMDEwNyw4IEBAIGdldF9ydWxlX2V4cHIoTm9k ZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCX0KIAkJCQlpZiAoeGV4cHIt Pm5hbWUpCiAJCQkJewotCQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIk5BTUUgJXMiLAotCQkJ CQkJCQkJIHF1b3RlX2lkZW50aWZpZXIobWFwX3htbF9uYW1lX3RvX3NxbF9pZGVudGlmaWVyKHhl eHByLT5uYW1lKSkpOworCQkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICJOQU1F ICIsCisJCQkJCQkJCQkJCSAgIG1hcF94bWxfbmFtZV90b19zcWxfaWRlbnRpZmllcih4ZXhwci0+ bmFtZSksIE5VTEwpOwogCQkJCQluZWVkY29tbWEgPSB0cnVlOwogCQkJCX0KIAkJCQlpZiAoeGV4 cHItPm5hbWVkX2FyZ3MpCkBAIC0xMDE1Miw4ICsxMDEyOCw4IEBAIGdldF9ydWxlX2V4cHIoTm9k ZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJaWYgKG5lZWRjb21tYSkK IAkJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CiAJCQkJCQlnZXRfcnVs ZV9leHByKChOb2RlICopIGUsIGNvbnRleHQsIHRydWUpOwotCQkJCQkJYXBwZW5kU3RyaW5nSW5m byhidWYsICIgQVMgJXMiLAotCQkJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKG1hcF94bWxfbmFt ZV90b19zcWxfaWRlbnRpZmllcihhcmduYW1lKSkpOworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb0lk ZW50aWZpZXIoYnVmLCAiIEFTICIsCisJCQkJCQkJCQkJCQkgICBtYXBfeG1sX25hbWVfdG9fc3Fs X2lkZW50aWZpZXIoYXJnbmFtZSksIE5VTEwpOwogCQkJCQkJbmVlZGNvbW1hID0gdHJ1ZTsKIAkJ CQkJfQogCQkJCQlpZiAoeGV4cHItPm9wICE9IElTX1hNTEZPUkVTVCkKQEAgLTEwMzY5LDggKzEw MzQ1LDggQEAgZ2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRl eHQsCiAJCQkJQ3VycmVudE9mRXhwciAqY2V4cHIgPSAoQ3VycmVudE9mRXhwciAqKSBub2RlOwog CiAJCQkJaWYgKGNleHByLT5jdXJzb3JfbmFtZSkKLQkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYs ICJDVVJSRU5UIE9GICVzIiwKLQkJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGNleHByLT5jdXJz b3JfbmFtZSkpOworCQkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICJDVVJSRU5U IE9GICIsCisJCQkJCQkJCQkJCSAgIGNleHByLT5jdXJzb3JfbmFtZSwgTlVMTCk7CiAJCQkJZWxz ZQogCQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIkNVUlJFTlQgT0YgJCVkIiwKIAkJCQkJCQkJ CSBjZXhwci0+Y3Vyc29yX3BhcmFtKTsKQEAgLTEwNjA0LDggKzEwNTgwLDggQEAgZ2V0X3J1bGVf ZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQluZWVkY29t bWEgPSB0cnVlOwogCiAJCQkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIGxmaXJzdChsYzIpLCBj b250ZXh0LCBzaG93aW1wbGljaXQpOwotCQkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgQVMg JXMiLAotCQkJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGxmaXJzdF9ub2RlKFN0cmluZywgbGMx KS0+c3ZhbCkpOworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCAiIEFTICIs CisJCQkJCQkJCQkJCQkgICBsZmlyc3Rfbm9kZShTdHJpbmcsIGxjMSktPnN2YWwsIE5VTEwpOwog CQkJCQl9CiAJCQkJfQogCkBAIC0xMTEzNSw3ICsxMTExMSw3IEBAIGdldF93aW5kb3dmdW5jX2V4 cHJfaGVscGVyKFdpbmRvd0Z1bmMgKndmdW5jLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJ CQlpZiAod2MtPndpbnJlZiA9PSB3ZnVuYy0+d2lucmVmKQogCQkJewogCQkJCWlmICh3Yy0+bmFt ZSkKLQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIod2Mt Pm5hbWUpKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCBOVUxMLCB3Yy0+ bmFtZSwgTlVMTCk7CiAJCQkJZWxzZQogCQkJCQlnZXRfcnVsZV93aW5kb3dzcGVjKHdjLCBjb250 ZXh0LT50YXJnZXRMaXN0LCBjb250ZXh0KTsKIAkJCQlicmVhazsKQEAgLTExMTYxLDcgKzExMTM3 LDcgQEAgZ2V0X3dpbmRvd2Z1bmNfZXhwcl9oZWxwZXIoV2luZG93RnVuYyAqd2Z1bmMsIGRlcGFy c2VfY29udGV4dCAqY29udGV4dCwKIAogCQkJCWlmICh3YWdnLT53aW5yZWYgPT0gd2Z1bmMtPndp bnJlZikKIAkJCQl7Ci0JCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVu dGlmaWVyKHdhZ2ctPndpbm5hbWUpKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIo YnVmLCBOVUxMLCB3YWdnLT53aW5uYW1lLCBOVUxMKTsKIAkJCQkJYnJlYWs7CiAJCQkJfQogCQkJ fQpAQCAtMTIwMDEsOCArMTE5NzcsOCBAQCBnZXRfeG1sdGFibGUoVGFibGVGdW5jICp0ZiwgZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKIAkJCWlmIChuc19ub2Rl ICE9IE5VTEwpCiAJCQl7CiAJCQkJZ2V0X3J1bGVfZXhwcihleHByLCBjb250ZXh0LCBzaG93aW1w bGljaXQpOwotCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIEFTICVzIiwKLQkJCQkJCQkJIHF1 b3RlX2lkZW50aWZpZXIoc3RyVmFsKG5zX25vZGUpKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lk ZW50aWZpZXIoYnVmLCAiIEFTICIsCisJCQkJCQkJCQkJICAgc3RyVmFsKG5zX25vZGUpLCBOVUxM KTsKIAkJCX0KIAkJCWVsc2UKIAkJCXsKQEAgLTEyMDg4LDcgKzEyMDY0LDcgQEAgZ2V0X2pzb25f dGFibGVfbmVzdGVkX2NvbHVtbnMoVGFibGVGdW5jICp0ZiwgSnNvblRhYmxlUGxhbiAqcGxhbiwK IAkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAnICcpOwogCQlhcHBlbmRDb250 ZXh0S2V5d29yZChjb250ZXh0LCAiTkVTVEVEIFBBVEggIiwgMCwgMCwgMCk7CiAJCWdldF9jb25z dF9leHByKHNjYW4tPnBhdGgtPnZhbHVlLCBjb250ZXh0LCAtMSk7Ci0JCWFwcGVuZFN0cmluZ0lu Zm8oY29udGV4dC0+YnVmLCAiIEFTICVzIiwgcXVvdGVfaWRlbnRpZmllcihzY2FuLT5wYXRoLT5u YW1lKSk7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGNvbnRleHQtPmJ1ZiwgIiBBUyAi LCBzY2FuLT5wYXRoLT5uYW1lLCBOVUxMKTsKIAkJZ2V0X2pzb25fdGFibGVfY29sdW1ucyh0Ziwg c2NhbiwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKIAl9CiAJZWxzZSBpZiAoSXNBKHBsYW4sIEpz b25UYWJsZVNpYmxpbmdKb2luKSkKQEAgLTEyMjMxLDcgKzEyMjA3LDcgQEAgZ2V0X2pzb25fdGFi bGUoVGFibGVGdW5jICp0ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBs aWNpdCkKIAogCWdldF9jb25zdF9leHByKHJvb3QtPnBhdGgtPnZhbHVlLCBjb250ZXh0LCAtMSk7 CiAKLQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIsIHF1b3RlX2lkZW50aWZpZXIocm9v dC0+cGF0aC0+bmFtZSkpOworCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1ZiwgIiBBUyAi LCByb290LT5wYXRoLT5uYW1lLCBOVUxMKTsKIAogCWlmIChqZXhwci0+cGFzc2luZ192YWx1ZXMp CiAJewpAQCAtMTIyNTUsOSArMTIyMzEsNyBAQCBnZXRfanNvbl90YWJsZShUYWJsZUZ1bmMgKnRm LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQogCQkJYXBwZW5k Q29udGV4dEtleXdvcmQoY29udGV4dCwgIiIsIDAsIDAsIDApOwogCiAJCQlnZXRfcnVsZV9leHBy KChOb2RlICopIGxmaXJzdChsYzIpLCBjb250ZXh0LCBmYWxzZSk7Ci0JCQlhcHBlbmRTdHJpbmdJ bmZvKGJ1ZiwgIiBBUyAlcyIsCi0JCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoKGxmaXJzdF9ub2Rl KFN0cmluZywgbGMxKSktPnN2YWwpCi0JCQkJKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlm aWVyKGJ1ZiwgIiBBUyAiLCBsZmlyc3Rfbm9kZShTdHJpbmcsIGxjMSktPnN2YWwsIE5VTEwpOwog CQl9CiAKIAkJaWYgKFBSRVRUWV9JTkRFTlQoY29udGV4dCkpCkBAIC0xMjUzMyw3ICsxMjUwNyw3 IEBAIGdldF9mcm9tX2NsYXVzZV9pdGVtKE5vZGUgKmp0bm9kZSwgUXVlcnkgKnF1ZXJ5LCBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQpCiAJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKScp OwogCQkJCWJyZWFrOwogCQkJY2FzZSBSVEVfQ1RFOgotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKHJ0ZS0+Y3RlbmFtZSkpOworCQkJCWFwcGVuZFN0cmlu Z0luZm9JZGVudGlmaWVyKGJ1ZiwgTlVMTCwgcnRlLT5jdGVuYW1lLCBOVUxMKTsKIAkJCQlicmVh azsKIAkJCWRlZmF1bHQ6CiAJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBSVEUga2luZDog JWQiLCAoaW50KSBydGUtPnJ0ZWtpbmQpOwpAQCAtMTI2MjAsNyArMTI1OTQsNyBAQCBnZXRfZnJv bV9jbGF1c2VfaXRlbShOb2RlICpqdG5vZGUsIFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0 ICpjb250ZXh0KQogCQlpZiAoai0+dXNpbmdDbGF1c2UpCiAJCXsKIAkJCUxpc3RDZWxsICAgKmxj OwotCQkJYm9vbAkJZmlyc3QgPSB0cnVlOworCQkJY29uc3QgY2hhciAqc2VwID0gIiI7CiAKIAkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIFVTSU5HICgiKTsKIAkJCS8qIFVzZSB0aGUg YXNzaWduZWQgbmFtZXMsIG5vdCB3aGF0J3MgaW4gdXNpbmdDbGF1c2UgKi8KQEAgLTEyNjI4LDE3 ICsxMjYwMiwxMyBAQCBnZXRfZnJvbV9jbGF1c2VfaXRlbShOb2RlICpqdG5vZGUsIFF1ZXJ5ICpx dWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCQkJewogCQkJCWNoYXIJICAgKmNvbG5h bWUgPSAoY2hhciAqKSBsZmlyc3QobGMpOwogCi0JCQkJaWYgKGZpcnN0KQotCQkJCQlmaXJzdCA9 IGZhbHNlOwotCQkJCWVsc2UKLQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIp OwotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKGNvbG5h bWUpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsIHNlcCwgY29sbmFtZSwg TlVMTCk7CisJCQkJc2VwID0gIiwgIjsKIAkJCX0KIAkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1 ZiwgJyknKTsKIAogCQkJaWYgKGotPmpvaW5fdXNpbmdfYWxpYXMpCi0JCQkJYXBwZW5kU3RyaW5n SW5mbyhidWYsICIgQVMgJXMiLAotCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihqLT5qb2luX3Vz aW5nX2FsaWFzLT5hbGlhc25hbWUpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihi dWYsICIgQVMgIiwgai0+am9pbl91c2luZ19hbGlhcy0+YWxpYXNuYW1lLCBOVUxMKTsKIAkJfQog CQllbHNlIGlmIChqLT5xdWFscykKIAkJewpAQCAtMTI2NjgsOSArMTI2MzgsOSBAQCBnZXRfZnJv bV9jbGF1c2VfaXRlbShOb2RlICpqdG5vZGUsIFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0 ICpjb250ZXh0KQogCQkJICogc3VidGxldGllcyB3ZSBkb24ndCB3YW50LiAgSG93ZXZlciwgd2Ug bWlnaHQgcHJpbnQgYSBkaWZmZXJlbnQKIAkJCSAqIGFsaWFzIG5hbWUgdGhhbiB3YXMgdGhlcmUg b3JpZ2luYWxseS4KIAkJCSAqLwotCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgJXMiLAotCQkJ CQkJCSBxdW90ZV9pZGVudGlmaWVyKGdldF9ydGFibGVfbmFtZShqLT5ydGluZGV4LAotCQkJCQkJ CQkJCQkJCQkJICBjb250ZXh0KSkpOworCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVm LCAiICIsCisJCQkJCQkJCQkgICBnZXRfcnRhYmxlX25hbWUoai0+cnRpbmRleCwKKwkJCQkJCQkJ CQkJCQkgICBjb250ZXh0KSwgTlVMTCk7CiAJCQlnZXRfY29sdW1uX2FsaWFzX2xpc3QoY29saW5m bywgY29udGV4dCk7CiAJCX0KIAl9CkBAIC0xMjc0NSw5ICsxMjcxNSw5IEBAIGdldF9ydGVfYWxp YXMoUmFuZ2VUYmxFbnRyeSAqcnRlLCBpbnQgdmFybm8sIGJvb2wgdXNlX2FzLAogCX0KIAogCWlm IChwcmludGFsaWFzKQotCQlhcHBlbmRTdHJpbmdJbmZvKGNvbnRleHQtPmJ1ZiwgIiVzJXMiLAot CQkJCQkJIHVzZV9hcyA/ICIgQVMgIiA6ICIgIiwKLQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHJl Zm5hbWUpKTsKKwkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoY29udGV4dC0+YnVmLAorCQkJ CQkJCQkgICB1c2VfYXMgPyAiIEFTICIgOiAiICIsCisJCQkJCQkJCSAgIHJlZm5hbWUsIE5VTEwp OwogfQogCiAvKgpAQCAtMTI3NzcsNyArMTI3NDcsNyBAQCBnZXRfY29sdW1uX2FsaWFzX2xpc3Qo ZGVwYXJzZV9jb2x1bW5zICpjb2xpbmZvLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJCX0K IAkJZWxzZQogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOwotCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihjb2xuYW1lKSk7CisJCWFwcGVu ZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1ZiwgTlVMTCwgY29sbmFtZSwgTlVMTCk7CiAJfQogCWlm ICghZmlyc3QpCiAJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKQEAgLTEyOTEwLDEz ICsxMjg4MCwxMSBAQCBnZXRfb3BjbGFzc19uYW1lKE9pZCBvcGNsYXNzLCBPaWQgYWN0dWFsX2Rh dGF0eXBlLAogCQkvKiBPa2F5LCB3ZSBuZWVkIHRoZSBvcGNsYXNzIG5hbWUuICBEbyB3ZSBuZWVk IHRvIHF1YWxpZnkgaXQ/ICovCiAJCW9wY25hbWUgPSBOYW1lU3RyKG9wY3JlYy0+b3BjbmFtZSk7 CiAJCWlmIChPcGNsYXNzSXNWaXNpYmxlKG9wY2xhc3MpKQotCQkJYXBwZW5kU3RyaW5nSW5mbyhi dWYsICIgJXMiLCBxdW90ZV9pZGVudGlmaWVyKG9wY25hbWUpKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKGJ1ZiwgIiAiLCBvcGNuYW1lLCBOVUxMKTsKIAkJZWxzZQogCQl7CiAJCQlu c3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAob3BjcmVjLT5vcGNuYW1lc3BhY2Up OwotCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgJXMuJXMiLAotCQkJCQkJCSBxdW90ZV9pZGVu dGlmaWVyKG5zcG5hbWUpLAotCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKG9wY25hbWUpKTsKKwkJ CWFwcGVuZFN0cmluZ0luZm9RdWFsaWZpZWRJZGVudGlmaWVyKGJ1ZiwgTlVMTCwgbnNwbmFtZSwg b3BjbmFtZSwgTlVMTCk7CiAJCX0KIAl9CiAJUmVsZWFzZVN5c0NhY2hlKGh0X29wYyk7CkBAIC0x Mjk4MCw3ICsxMjk0OCw3IEBAIHByb2Nlc3NJbmRpcmVjdGlvbihOb2RlICpub2RlLCBkZXBhcnNl X2NvbnRleHQgKmNvbnRleHQpCiAJCQlBc3NlcnQobGlzdF9sZW5ndGgoZnN0b3JlLT5maWVsZG51 bXMpID09IDEpOwogCQkJZmllbGRuYW1lID0gZ2V0X2F0dG5hbWUodHlwcmVsaWQsCiAJCQkJCQkJ CQlsaW5pdGlhbF9pbnQoZnN0b3JlLT5maWVsZG51bXMpLCBmYWxzZSk7Ci0JCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIi4lcyIsIHF1b3RlX2lkZW50aWZpZXIoZmllbGRuYW1lKSk7CisJCQlhcHBl bmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICIuIiwgZmllbGRuYW1lLCBOVUxMKTsKIAogCQkJ LyoKIAkJCSAqIFdlIGlnbm9yZSBhcmcgc2luY2UgaXQgc2hvdWxkIGJlIGFuIHVuaW50ZXJlc3Rp bmcgcmVmZXJlbmNlIHRvCkBAIC0xMzUzNSw3ICsxMzUwMyw3IEBAIGdlbmVyYXRlX29wZXJhdG9y X25hbWUoT2lkIG9wZXJpZCwgT2lkIGFyZzEsIE9pZCBhcmcyKQogCWVsc2UKIAl7CiAJCW5zcG5h bWUgPSBnZXRfbmFtZXNwYWNlX25hbWVfb3JfdGVtcChvcGVyZm9ybS0+b3BybmFtZXNwYWNlKTsK LQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiT1BFUkFUT1IoJXMuIiwgcXVvdGVfaWRlbnRpZmll cihuc3BuYW1lKSk7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWYsICJPUEVSQVRP UigiLCBuc3BuYW1lLCAiLiIpOwogCX0KIAogCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1Ziwg b3BybmFtZSk7CkBAIC0xMzY0MSw4ICsxMzYwOSw3IEBAIGFkZF9jYXN0X3RvKFN0cmluZ0luZm8g YnVmLCBPaWQgdHlwaWQpCiAJdHlwbmFtZSA9IE5hbWVTdHIodHlwZm9ybS0+dHlwbmFtZSk7CiAJ bnNwbmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZV9vcl90ZW1wKHR5cGZvcm0tPnR5cG5hbWVzcGFj ZSk7CiAKLQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIjo6JXMuJXMiLAotCQkJCQkgcXVvdGVfaWRl bnRpZmllcihuc3BuYW1lKSwgcXVvdGVfaWRlbnRpZmllcih0eXBuYW1lKSk7CisJYXBwZW5kU3Ry aW5nSW5mb1F1YWxpZmllZElkZW50aWZpZXIoYnVmLCAiOjoiLCBuc3BuYW1lLCB0eXBuYW1lLCBO VUxMKTsKIAogCVJlbGVhc2VTeXNDYWNoZSh0eXBldHVwKTsKIH0KQEAgLTEzNzM5LDEyICsxMzcw NiwxMiBAQCBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9ucykK IHsKIAlEYXR1bQkgICAqb3B0aW9uczsKIAlpbnQJCQlub3B0aW9uczsKLQlpbnQJCQlpOworCWNv bnN0IGNoYXIgKnNlcCA9ICIiOwogCiAJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihEYXR1bUdl dEFycmF5VHlwZVAocmVsb3B0aW9ucyksIFRFWFRPSUQsCiAJCQkJCQkJICAmb3B0aW9ucywgTlVM TCwgJm5vcHRpb25zKTsKIAotCWZvciAoaSA9IDA7IGkgPCBub3B0aW9uczsgaSsrKQorCWZvciAo aW50IGkgPSAwOyBpIDwgbm9wdGlvbnM7IGkrKykKIAl7CiAJCWNoYXIJICAgKm9wdGlvbiA9IFRl eHREYXR1bUdldENTdHJpbmcob3B0aW9uc1tpXSk7CiAJCWNoYXIJICAgKm5hbWU7CkBAIC0xMzc2 NSw5ICsxMzczMiw4IEBAIGdldF9yZWxvcHRpb25zKFN0cmluZ0luZm8gYnVmLCBEYXR1bSByZWxv cHRpb25zKQogCQllbHNlCiAJCQl2YWx1ZSA9ICIiOwogCi0JCWlmIChpID4gMCkKLQkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIl cz0iLCBxdW90ZV9pZGVudGlmaWVyKG5hbWUpKTsKKwkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZp ZXIoYnVmLCBzZXAsIG5hbWUsICI9Iik7CisJCXNlcCA9ICIsICI7CiAKIAkJLyoKIAkJICogSW4g Z2VuZXJhbCB3ZSBuZWVkIHRvIHF1b3RlIHRoZSB2YWx1ZTsgYnV0IHRvIGF2b2lkIHVubmVjZXNz YXJ5Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000632b54064417ee2f Content-Type: application/octet-stream; name="v4-0001-Add-appendStringInfoIdentifier-to-avoid-intermedi.patch" Content-Disposition: attachment; filename="v4-0001-Add-appendStringInfoIdentifier-to-avoid-intermedi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi8ozvyc0 RnJvbSA2NDhhOWNiZDIwMTNhYzgyZDc2NTg1NjEwNDYzZTFhZTMwZTA5OTczIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogRnJpLCAxNCBOb3YgMjAyNSAyMTo0NDoyOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQgMS80 XSBBZGQgYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoKSB0byBhdm9pZCBpbnRlcm1lZGlhdGUK IHF1b3RpbmcgYnVmZmVycwoKSW50cm9kdWNlIGFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCkg YW5kCmFwcGVuZFN0cmluZ0luZm9RdWFsaWZpZWRJZGVudGlmaWVyKCksIGhlbHBlciBmdW5jdGlv bnMgdGhhdCBhcHBlbmQgYW4gU1FMCmlkZW50aWZpZXIgZGlyZWN0bHkgdG8gYSBTdHJpbmdJbmZv IHdoaWxlIGFwcGx5aW5nIHF1b3RpbmcgcnVsZXMgd2hlbgpuZWNlc3NhcnkuICBUaGlzIGF2b2lk cyBhbGxvY2F0aW5nIGFuZCBjb3B5aW5nIHRocm91Z2ggdGVtcG9yYXJ5IHBhbGxvYwpidWZmZXJz LCBhcyBjdXJyZW50bHkgaGFwcGVucyB3aXRoIHF1b3RlX2lkZW50aWZpZXIoKSB3aGVuIHVzZWQg dG9nZXRoZXIKd2l0aCBhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCkuCgpUaGUgbmV3IGZ1bmN0aW9u cyBpbXByb3ZlIGJvdGggcmVhZGFiaWxpdHkgYW5kIGVmZmljaWVuY3kgb2YgY2FsbCBzaXRlcyB0 aGF0CmNvbnN0cnVjdCBTUUwgZnJhZ21lbnRzLCBlc3BlY2lhbGx5IHRob3NlIHRoYXQgbmVlZCB0 byBidWlsZCBxdWFsaWZpZWQKbmFtZXMgc3VjaCBhcyBzY2hlbWEudGFibGUuCgpDb252ZXJ0IHNl dmVyYWwgZXhpc3RpbmcgY2FsbGVycyBpbiBvYmplY3RhZGRyZXNzLmMsIGV4cGxhaW4uYyBhbmQK cnVsZXV0aWxzLmMgdG8gdXNlIGFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCkgLwphcHBlbmRT dHJpbmdJbmZvUXVhbGlmaWVkSWRlbnRpZmllcigpIGFzIGV4YW1wbGVzLgoKTm8gZnVuY3Rpb25h bCBiZWhhdmlvciBjaGFuZ2UgaXMgaW50ZW5kZWQuCgpBdXRob3I6IENoYW8gTGkgPGxpY0BoaWdo Z28uY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRW9XeDI9ZzJSVmt4WEI9 SnpXcGhnZmc0UUdWK3NwYUEzUFExckJNMmlNZWhyVnZqZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNy Yy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jIHwgIDE0ICstLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9y aV90cmlnZ2Vycy5jIHwgICA4ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMg ICB8IDE0MiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9i dWlsdGlucy5oICAgICAgICB8ICAgNiArKwogNSBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9u cygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9v YmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwppbmRl eCBjNzViNzEzMWVkNy4uNzBlMDUwNTlmOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvb2JqZWN0YWRkcmVzcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVz cy5jCkBAIC00ODgzLDggKzQ4ODMsNyBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9i amVjdEFkZHJlc3MgKm9iamVjdCwKIAogCQkJCWlmIChhdHRyKQogCQkJCXsKLQkJCQkJYXBwZW5k U3RyaW5nSW5mbygmYnVmZmVyLCAiLiVzIiwKLQkJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGF0 dHIpKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgIi4iLCBhdHRy LCBOVUxMKTsKIAkJCQkJaWYgKG9iam5hbWUpCiAJCQkJCQkqb2JqbmFtZSA9IGxhcHBlbmQoKm9i am5hbWUsIGF0dHIpOwogCQkJCX0KQEAgLTUzOTUsOCArNTM5NCw3IEBAIGdldE9iamVjdElkZW50 aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCQkJCSBvYmplY3QtPm9i amVjdElkKTsKIAkJCQkJYnJlYWs7CiAJCQkJfQotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmJ1ZmZlciwKLQkJCQkJCQkJCSAgIHF1b3RlX2lkZW50aWZpZXIobnNwbmFtZSkpOworCQkJCWFw cGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWZmZXIsIE5VTEwsIG5zcG5hbWUsIE5VTEwpOwog CQkJCWlmIChvYmpuYW1lKQogCQkJCQkqb2JqbmFtZSA9IGxpc3RfbWFrZTEobnNwbmFtZSk7CiAJ CQkJYnJlYWs7CkBAIC01NzM5LDE2ICs1NzM3LDEyIEBAIGdldE9iamVjdElkZW50aXR5UGFydHMo Y29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCWRlZmFjbCA9IChGb3JtX3BnX2RlZmF1 bHRfYWNsKSBHRVRTVFJVQ1QodHVwKTsKIAogCQkJCXVzZXJuYW1lID0gR2V0VXNlck5hbWVGcm9t SWQoZGVmYWNsLT5kZWZhY2xyb2xlLCBmYWxzZSk7Ci0JCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVm ZmVyLAotCQkJCQkJCQkgImZvciByb2xlICVzIiwKLQkJCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIo dXNlcm5hbWUpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcigmYnVmZmVyLCAiZm9y IHJvbGUgIiwgdXNlcm5hbWUsIE5VTEwpOwogCiAJCQkJaWYgKE9pZElzVmFsaWQoZGVmYWNsLT5k ZWZhY2xuYW1lc3BhY2UpKQogCQkJCXsKIAkJCQkJc2NoZW1hID0gZ2V0X25hbWVzcGFjZV9uYW1l X29yX3RlbXAoZGVmYWNsLT5kZWZhY2xuYW1lc3BhY2UpOwotCQkJCQlhcHBlbmRTdHJpbmdJbmZv KCZidWZmZXIsCi0JCQkJCQkJCQkgIiBpbiBzY2hlbWEgJXMiLAotCQkJCQkJCQkJIHF1b3RlX2lk ZW50aWZpZXIoc2NoZW1hKSk7CisJCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWZm ZXIsICIgaW4gc2NoZW1hICIsIHNjaGVtYSwgTlVMTCk7CiAJCQkJfQogCQkJCWVsc2UKIAkJCQkJ c2NoZW1hID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA3ZTY5OWY4NTk1ZS4uY2M5 Nzk3Mzc4NDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTE3MDUsOCArMTcwNSw3IEBAIEV4 cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJCQkJCWV4 cGxhaW5fZ2V0X2luZGV4X25hbWUoYml0bWFwaW5kZXhzY2FuLT5pbmRleGlkKTsKIAogCQkJCWlm IChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RFWFQpCi0JCQkJCWFwcGVuZFN0cmluZ0lu Zm8oZXMtPnN0ciwgIiBvbiAlcyIsCi0JCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihpbmRleG5h bWUpKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoZXMtPnN0ciwJIiBvbiAiLCBp bmRleG5hbWUsIE5VTEwpOwogCQkJCWVsc2UKIAkJCQkJRXhwbGFpblByb3BlcnR5VGV4dCgiSW5k ZXggTmFtZSIsIGluZGV4bmFtZSwgZXMpOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dl cnMuYwppbmRleCAwNTlmYzVlYmY2MC4uOWUxM2Y1MjY5OTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y aV90cmlnZ2Vycy5jCkBAIC0zOTUsNyArMzk1LDYgQEAgUklfRktleV9jaGVjayhUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEpCiAJCXsKIAkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAogCQkJCQkJIFJJQXR0 TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKLQog CQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsCiAJCQkJCQkJICJTRUxFQ1QgMSBGUk9NIChT RUxFQ1QgJXMgQVMgciBGUk9NICVzJXMgeCIsCiAJCQkJCQkJIGF0dG5hbWUsIHBrX29ubHksIHBr cmVsbmFtZSk7CkBAIC0yMDk1LDcgKzIwOTQsNiBAQCByaV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24o U3RyaW5nSW5mbyBidWYsIE9pZCBjb2xsYXRpb24pCiAJSGVhcFR1cGxlCXRwOwogCUZvcm1fcGdf Y29sbGF0aW9uIGNvbGx0dXA7CiAJY2hhcgkgICAqY29sbG5hbWU7Ci0JY2hhcgkJb25lbmFtZVtN QVhfUVVPVEVEX05BTUVfTEVOXTsKIAogCS8qIE5vdGhpbmcgdG8gZG8gaWYgaXQncyBhIG5vbmNv bGxhdGFibGUgZGF0YSB0eXBlICovCiAJaWYgKCFPaWRJc1ZhbGlkKGNvbGxhdGlvbikpCkBAIC0y MTExLDEwICsyMTA5LDggQEAgcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKFN0cmluZ0luZm8gYnVm LCBPaWQgY29sbGF0aW9uKQogCSAqIFdlIHF1YWxpZnkgdGhlIG5hbWUgYWx3YXlzLCBmb3Igc2lt cGxpY2l0eSBhbmQgdG8gZW5zdXJlIHRoZSBxdWVyeSBpcwogCSAqIG5vdCBzZWFyY2gtcGF0aC1k ZXBlbmRlbnQuCiAJICovCi0JcXVvdGVPbmVOYW1lKG9uZW5hbWUsIGdldF9uYW1lc3BhY2VfbmFt ZShjb2xsdHVwLT5jb2xsbmFtZXNwYWNlKSk7Ci0JYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgQ09M TEFURSAlcyIsIG9uZW5hbWUpOwotCXF1b3RlT25lTmFtZShvbmVuYW1lLCBjb2xsbmFtZSk7Ci0J YXBwZW5kU3RyaW5nSW5mbyhidWYsICIuJXMiLCBvbmVuYW1lKTsKKwlhcHBlbmRTdHJpbmdJbmZv SWRlbnRpZmllcihidWYsICIgQ09MTEFURSAiLCBnZXRfbmFtZXNwYWNlX25hbWUoY29sbHR1cC0+ Y29sbG5hbWVzcGFjZSksIE5VTEwpOworCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1Ziwg Ii4iLCBjb2xsbmFtZSwgTlVMTCk7CiAKIAlSZWxlYXNlU3lzQ2FjaGUodHApOwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDU1NmFiMDU3ZTVhLi4xZDc2N2RlYjZjNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTMwNTIsMjUgKzEzMDUyLDE3IEBAIHByaW50U3Vi c2NyaXB0cyhTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0 KQogCX0KIH0KIAotLyoKLSAqIHF1b3RlX2lkZW50aWZpZXIJCQktIFF1b3RlIGFuIGlkZW50aWZp ZXIgb25seSBpZiBuZWVkZWQKLSAqCi0gKiBXaGVuIHF1b3RlcyBhcmUgbmVlZGVkLCB3ZSBwYWxs b2MgdGhlIHJlcXVpcmVkIHNwYWNlOyBzbGlnaHRseQotICogc3BhY2Utd2FzdGVmdWwgYnV0IHdl bGwgd29ydGggaXQgZm9yIG5vdGF0aW9uYWwgc2ltcGxpY2l0eS4KLSAqLwotY29uc3QgY2hhciAq Ci1xdW90ZV9pZGVudGlmaWVyKGNvbnN0IGNoYXIgKmlkZW50KQorc3RhdGljIGlubGluZSBib29s Citpc19pZGVudGlmaWVyX3NhZmUoY29uc3QgY2hhciAqaWRlbnQsIGludCAqbnF1b3RlcykKIHsK IAkvKgogCSAqIENhbiBhdm9pZCBxdW90aW5nIGlmIGlkZW50IHN0YXJ0cyB3aXRoIGEgbG93ZXJj YXNlIGxldHRlciBvciB1bmRlcnNjb3JlCiAJICogYW5kIGNvbnRhaW5zIG9ubHkgbG93ZXJjYXNl IGxldHRlcnMsIGRpZ2l0cywgYW5kIHVuZGVyc2NvcmVzLCAqYW5kKiBpcwogCSAqIG5vdCBhbnkg U1FMIGtleXdvcmQuICBPdGhlcndpc2UsIHN1cHBseSBxdW90ZXMuCiAJICovCi0JaW50CQkJbnF1 b3RlcyA9IDA7CiAJYm9vbAkJc2FmZTsKLQljb25zdCBjaGFyICpwdHI7Ci0JY2hhcgkgICAqcmVz dWx0OwotCWNoYXIJICAgKm9wdHI7CisKKwkqbnF1b3RlcyA9IDA7CiAKIAkvKgogCSAqIHdvdWxk IGxpa2UgdG8gdXNlIDxjdHlwZS5oPiBtYWNyb3MgaGVyZSwgYnV0IHRoZXkgbWlnaHQgeWllbGQg dW53YW50ZWQKQEAgLTEzMDc4LDcgKzEzMDcwLDcgQEAgcXVvdGVfaWRlbnRpZmllcihjb25zdCBj aGFyICppZGVudCkKIAkgKi8KIAlzYWZlID0gKChpZGVudFswXSA+PSAnYScgJiYgaWRlbnRbMF0g PD0gJ3onKSB8fCBpZGVudFswXSA9PSAnXycpOwogCi0JZm9yIChwdHIgPSBpZGVudDsgKnB0cjsg cHRyKyspCisJZm9yIChjb25zdCBjaGFyICpwdHIgPSBpZGVudDsgKnB0cjsgcHRyKyspCiAJewog CQljaGFyCQljaCA9ICpwdHI7CiAKQEAgLTEzMDkyLDcgKzEzMDg0LDcgQEAgcXVvdGVfaWRlbnRp Zmllcihjb25zdCBjaGFyICppZGVudCkKIAkJewogCQkJc2FmZSA9IGZhbHNlOwogCQkJaWYgKGNo ID09ICciJykKLQkJCQlucXVvdGVzKys7CisJCQkJKCpucXVvdGVzKSsrOwogCQl9CiAJfQogCkBA IC0xMzExNSwxNCArMTMxMDcsMjAgQEAgcXVvdGVfaWRlbnRpZmllcihjb25zdCBjaGFyICppZGVu dCkKIAkJCXNhZmUgPSBmYWxzZTsKIAl9CiAKLQlpZiAoc2FmZSkKLQkJcmV0dXJuIGlkZW50OwkJ CS8qIG5vIGNoYW5nZSBuZWVkZWQgKi8KKwlyZXR1cm4gc2FmZTsKK30KIAotCXJlc3VsdCA9IChj aGFyICopIHBhbGxvYyhzdHJsZW4oaWRlbnQpICsgbnF1b3RlcyArIDIgKyAxKTsKK3N0YXRpYyBp bmxpbmUgY29uc3QgY2hhciAqCitxdW90ZV9pZGVudGlmaWVyX2ludGVybmFsKGNvbnN0IGNoYXIg KmlkZW50LCBpbnQgbnF1b3RlcywgY2hhciAqKnJlc3VsdCkKK3sKKwljaGFyCSAgICpvcHRyOwog Ci0Jb3B0ciA9IHJlc3VsdDsKKwlpZiAoKnJlc3VsdCA9PSBOVUxMKQorCQkqcmVzdWx0ID0gKGNo YXIgKikgcGFsbG9jKHN0cmxlbihpZGVudCkgKyBucXVvdGVzICsgMiArIDEpOworCisJb3B0ciA9 ICpyZXN1bHQ7CiAJKm9wdHIrKyA9ICciJzsKLQlmb3IgKHB0ciA9IGlkZW50OyAqcHRyOyBwdHIr KykKKwlmb3IgKGNvbnN0IGNoYXIgKnB0ciA9IGlkZW50OyAqcHRyOyBwdHIrKykKIAl7CiAJCWNo YXIJCWNoID0gKnB0cjsKIApAQCAtMTMxMzMsNyArMTMxMzEsMTA3IEBAIHF1b3RlX2lkZW50aWZp ZXIoY29uc3QgY2hhciAqaWRlbnQpCiAJKm9wdHIrKyA9ICciJzsKIAkqb3B0ciA9ICdcMCc7CiAK LQlyZXR1cm4gcmVzdWx0OworCXJldHVybiAqcmVzdWx0OworfQorCisvKgorICogcXVvdGVfaWRl bnRpZmllcgkJCS0gUXVvdGUgYW4gaWRlbnRpZmllciBvbmx5IGlmIG5lZWRlZAorICoKKyAqIFdo ZW4gcXVvdGVzIGFyZSBuZWVkZWQsIHdlIHBhbGxvYyB0aGUgcmVxdWlyZWQgc3BhY2U7IHNsaWdo dGx5CisgKiBzcGFjZS13YXN0ZWZ1bCBidXQgd2VsbCB3b3J0aCBpdCBmb3Igbm90YXRpb25hbCBz aW1wbGljaXR5LgorICovCitjb25zdCBjaGFyICoKK3F1b3RlX2lkZW50aWZpZXIoY29uc3QgY2hh ciAqaWRlbnQpCit7CisJaW50CQkJbnF1b3RlczsKKwlib29sCQlzYWZlOworCWNoYXIJICAgKnJl c3VsdCA9IE5VTEw7CisKKwlzYWZlID0gaXNfaWRlbnRpZmllcl9zYWZlKGlkZW50LCAmbnF1b3Rl cyk7CisJaWYgKHNhZmUpCisJCXJldHVybiBpZGVudDsJCQkvKiBubyBjaGFuZ2UgbmVlZGVkICov CisKKwlyZXR1cm4gcXVvdGVfaWRlbnRpZmllcl9pbnRlcm5hbChpZGVudCwgbnF1b3RlcywgJnJl c3VsdCk7Cit9CisKKy8qCisgKiBhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcgorICogICAgICBB cHBlbmQgYW4gU1FMIGlkZW50aWZpZXIgdG8gYSBTdHJpbmdJbmZvLCBxdW90aW5nIGlmIHJlcXVp cmVkLgorICoKKyAqIFRoaXMgYmVoYXZlcyBsaWtlIHdyaXRpbmcgcHJlZml4ICsgcXVvdGVfaWRl bnRpZmllcihpZGVudCkgKyBzdWZmaXggaW50bworICogdGhlIFN0cmluZ0luZm8sIGJ1dCBlbWl0 cyB0aGUgaWRlbnRpZmllciBkaXJlY3RseSBpbnRvIHRoZSBidWZmZXIgdG8gYXZvaWQKKyAqIGFu IGludGVybWVkaWF0ZSBwYWxsb2MuICBwcmVmaXggYW5kIHN1ZmZpeCBtYXkgYmUgTlVMTC4KKyAq CisgKiBUaGUgaWRlbnRpZmllciBpcyBjb3BpZWQgdmVyYmF0aW0gaWYgaXQgaXMgc2FmZSB0byBs ZWF2ZSB1bnF1b3RlZDsgb3RoZXJ3aXNlCisgKiBpdCBpcyB3cml0dGVuIHdpdGggZG91YmxlIHF1 b3RlcyBhbmQgZW1iZWRkZWQgZG91YmxlIHF1b3RlcyBhcmUgZG91YmxlZC4KKyAqIFF1b3Rpbmcg cnVsZXMgYXJlIGxvY2FsIHRvIHJ1bGV1dGlscywgc28gdGhpcyBoZWxwZXIgaXMgZGVmaW5lZCBo ZXJlIHJhdGhlcgorICogdGhhbiBpbiBzdHJpbmdpbmZvLmMuCisgKi8KKwordm9pZAorYXBwZW5k U3RyaW5nSW5mb0lkZW50aWZpZXIoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IGNoYXIgKnByZWZpeCwK KwkJCQkJCSAgIGNvbnN0IGNoYXIgKmlkZW50LCBjb25zdCBjaGFyICpzdWZmaXgpCit7CisJaW50 CQkJbnF1b3RlczsKKwlib29sCQlzYWZlOworCWludAkJCWlkZW50X2xlbjsKKwlpbnQJCQlwcmVm aXhfbGVuID0gMDsKKwlpbnQJCQlzdWZmaXhfbGVuID0gMDsKKworCXNhZmUgPSBpc19pZGVudGlm aWVyX3NhZmUoaWRlbnQsICZucXVvdGVzKTsKKwlpZiAoc2FmZSkKKwkJaWRlbnRfbGVuID0gc3Ry bGVuKGlkZW50KTsKKwllbHNlCisJCWlkZW50X2xlbiA9IHN0cmxlbihpZGVudCkgKyBucXVvdGVz ICsgMjsJLyogcXVvdGVzICsgcG9zc2libGUKKwkJCQkJCQkJCQkJCQkgKiBlc2NhcGVzICovCisK KwlpZiAocHJlZml4ICE9IE5VTEwpCisJCXByZWZpeF9sZW4gPSBzdHJsZW4ocHJlZml4KTsKKwor CWlmIChzdWZmaXggIT0gTlVMTCkKKwkJc3VmZml4X2xlbiA9IHN0cmxlbihzdWZmaXgpOworCisJ ZW5sYXJnZVN0cmluZ0luZm8oc3RyLCBpZGVudF9sZW4gKyBwcmVmaXhfbGVuICsgc3VmZml4X2xl biArIDEpOwkvKiArMSBmb3IgdHJhaWxpbmcgbnVsbCAqLworCisJaWYgKHByZWZpeCAhPSBOVUxM KQorCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKHN0ciwgcHJlZml4LCBwcmVmaXhfbGVuKTsKKwor CWlmIChzYWZlKQorCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKHN0ciwgaWRlbnQsIGlkZW50X2xl bik7CisJZWxzZQorCXsKKwkJY2hhcgkgICAqcmVzdWx0ID0gc3RyLT5kYXRhICsgc3RyLT5sZW47 CisKKwkJKHZvaWQpIHF1b3RlX2lkZW50aWZpZXJfaW50ZXJuYWwoaWRlbnQsIG5xdW90ZXMsICZy ZXN1bHQpOworCQlzdHItPmxlbiArPSBpZGVudF9sZW47CisJCXN0ci0+ZGF0YVtzdHItPmxlbl0g PSAnXDAnOworCX0KKworCWlmIChzdWZmaXggIT0gTlVMTCkKKwkJYXBwZW5kQmluYXJ5U3RyaW5n SW5mbyhzdHIsIHN1ZmZpeCwgc3VmZml4X2xlbik7Cit9CisKKy8qCisgKiBhcHBlbmRTdHJpbmdJ bmZvUXVhbGlmaWVkSWRlbnRpZmllcgorICogICAgICBBcHBlbmQgYSAocG9zc2libHkpIHF1YWxp ZmllZCBTUUwgaWRlbnRpZmllciB0byBhIFN0cmluZ0luZm8uCisgKgorICogV3JpdGVzIHByZWZp eCArIHF1YWxpZmllciArICcuJyArIGlkZW50ICsgc3VmZml4LCBxdW90aW5nIGVhY2ggaWRlbnRp ZmllcgorICogY29tcG9uZW50IGlmIG5lZWRlZC4gIElmIG5vIHF1YWxpZmllciBpcyBnaXZlbiwg b25seSBpZGVudCAocGx1cyBvcHRpb25hbAorICogcHJlZml4L3N1ZmZpeCkgaXMgYXBwZW5kZWQu ICBwcmVmaXggYW5kIHN1ZmZpeCBtYXkgYmUgTlVMTC4KKyAqCisgKiBUaGlzIGlzIGEgY29udmVu aWVuY2Ugd3JhcHBlciBhcm91bmQgYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoKS4KKyAqLwor dm9pZAorYXBwZW5kU3RyaW5nSW5mb1F1YWxpZmllZElkZW50aWZpZXIoU3RyaW5nSW5mbyBzdHIs IGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCWNvbnN0IGNoYXIgKnF1YWxpZmllciwgY29u c3QgY2hhciAqaWRlbnQsCisJCQkJCQkJCQljb25zdCBjaGFyICpzdWZmaXgpCit7CisJaWYgKHF1 YWxpZmllcikKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKHN0ciwgcHJlZml4LCBx dWFsaWZpZXIsICIuIik7CisJCXByZWZpeCA9IE5VTEw7CisJfQorCWFwcGVuZFN0cmluZ0luZm9J ZGVudGlmaWVyKHN0ciwgcHJlZml4LCBpZGVudCwgc3VmZml4KTsKIH0KIAogLyoKQEAgLTEzMTUw LDggKzEzMjQ4LDggQEAgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoY29uc3QgY2hhciAqcXVh bGlmaWVyLAogCiAJaW5pdFN0cmluZ0luZm8oJmJ1Zik7CiAJaWYgKHF1YWxpZmllcikKLQkJYXBw ZW5kU3RyaW5nSW5mbygmYnVmLCAiJXMuIiwgcXVvdGVfaWRlbnRpZmllcihxdWFsaWZpZXIpKTsK LQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsIHF1b3RlX2lkZW50aWZpZXIoaWRlbnQpKTsK KwkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZiwgTlVMTCwgcXVhbGlmaWVyLCAiLiIp OworCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWYsIE5VTEwsIGlkZW50LCBOVUxMKTsK IAlyZXR1cm4gYnVmLmRhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2J1 aWx0aW5zLmggYi9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oCmluZGV4IGNlNjI4NWEyYzAz Li5mZjRiYTcyNjVjMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAor KysgYi9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oCkBAIC04NCw2ICs4NCwxMiBAQCBleHRl cm4gdm9pZCBnZW5lcmF0ZV9vcGVyYXRvcl9jbGF1c2UoU3RyaW5nSW5mbyBidWYsCiAJCQkJCQkJ CQkgY29uc3QgY2hhciAqbGVmdG9wLCBPaWQgbGVmdG9wdHlwZSwKIAkJCQkJCQkJCSBPaWQgb3Bv aWQsCiAJCQkJCQkJCQkgY29uc3QgY2hhciAqcmlnaHRvcCwgT2lkIHJpZ2h0b3B0eXBlKTsKK2V4 dGVybiB2b2lkIGFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKFN0cmluZ0luZm8gc3RyLCBjb25z dCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKmlkZW50LCBjb25zdCBjaGFyICpzdWZmaXgpOwor ZXh0ZXJuIHZvaWQgYXBwZW5kU3RyaW5nSW5mb1F1YWxpZmllZElkZW50aWZpZXIoU3RyaW5nSW5m byBzdHIsCisJCQkJCQkJCQkJCQljb25zdCBjaGFyICpwcmVmaXgsCisJCQkJCQkJCQkJCQljb25z dCBjaGFyICpxdWFsaWZpZXIsCisJCQkJCQkJCQkJCQljb25zdCBjaGFyICppZGVudCwKKwkJCQkJ CQkJCQkJCWNvbnN0IGNoYXIgKnN1ZmZpeCk7CiAKIC8qIHZhcmNoYXIuYyAqLwogZXh0ZXJuIGlu dAlicGNoYXJ0cnVlbGVuKGNoYXIgKnMsIGludCBsZW4pOwotLSAKMi4zOS41IChBcHBsZSBHaXQt MTU0KQoK --000000000000632b54064417ee2f Content-Type: application/octet-stream; name="v4-0003-Remove-quoteOneName-and-related-buffer-sizing-mac.patch" Content-Disposition: attachment; filename="v4-0003-Remove-quoteOneName-and-related-buffer-sizing-mac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi8ozvyi2 RnJvbSAxZWEwNDBjNjc2MWE5MWQ4MDdjOGU2Mzg4N2EwNWFjMDFiYjkzYjBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogVHVlLCAxOCBOb3YgMjAyNSAxNzoxMzowNyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQgMy80 XSBSZW1vdmUgcXVvdGVPbmVOYW1lKCkgYW5kIHJlbGF0ZWQgYnVmZmVyLXNpemluZyBtYWNyb3MK IGZyb20gcmlfdHJpZ2dlcnMuYwoKQWZ0ZXIgdGhlIHByZXZpb3VzIHJlZmFjdG9yaW5nLCBxdW90 ZU9uZU5hbWUoKSBhbmQgaXRzIGNhbGxlcnMgYXJlIG5vIGxvbmdlcgpuZWVkZWQuICBSZW1vdmUg dGhlIGZ1bmN0aW9uIGFsb25nIHdpdGggTUFYX1FVT1RFRF9OQU1FX0xFTiwKTUFYX1FVT1RFRF9S RUxfTkFNRV9MRU4sIGFuZCBxdW90ZVJlbGF0aW9uTmFtZSgpLCBhbmQgaW50cm9kdWNlCmFwcGVu ZFJlbGF0aW9uTmFtZSgpIGFzIHRoZSByZW1haW5pbmcgaGVscGVyIGZvciB3cml0aW5nIHF1YWxp ZmllZCByZWxhdGlvbgpuYW1lcyB1c2luZyBhcHBlbmRTdHJpbmdJbmZvUXVhbGlmaWVkSWRlbnRp ZmllcigpLgoKVGhpcyByZWR1Y2VzIHJlZHVuZGFudCBxdW90aW5nIGNvZGUgYW5kIGNlbnRyYWxp emVzIGlkZW50aWZpZXIgaGFuZGxpbmcgaW4KYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoKSAv IGFwcGVuZFN0cmluZ0luZm9RdWFsaWZpZWRJZGVudGlmaWVyKCksIG1ha2luZwpSSSB0cmlnZ2Vy cyBjb25zaXN0ZW50IHdpdGggb3RoZXIgY29kZSB0aGF0IGdlbmVyYXRlcyBTUUwgZnJhZ21lbnRz LgoKTm8gZnVuY3Rpb25hbCBiZWhhdmlvciBjaGFuZ2UgaXMgZXhwZWN0ZWQuCgpBdXRob3I6IENo YW8gTGkgPGxpY0BoaWdoZ28uY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NB RW9XeDI9ZzJSVmt4WEI9SnpXcGhnZmc0UUdWK3NwYUEzUFExckJNMmlNZWhyVnZqZ0BtYWlsLmdt YWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jIHwgMTEyICsr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzMCBpbnNlcnRpb25z KCspLCA4MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4 IDNjYzRkYzJiN2M4Li5kNjc2OTMwYWNhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJz LmMKQEAgLTgwLDkgKzgwLDYgQEAKICNkZWZpbmUgUklfUExBTl9TRVRERUZBVUxUX09OREVMRVRF CQk5CiAjZGVmaW5lIFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURQkJMTAKIAotI2RlZmluZSBN QVhfUVVPVEVEX05BTUVfTEVOICAoTkFNRURBVEFMRU4qMiszKQotI2RlZmluZSBNQVhfUVVPVEVE X1JFTF9OQU1FX0xFTiAgKE1BWF9RVU9URURfTkFNRV9MRU4qMikKLQogI2RlZmluZSBSSUF0dE5h bWUocmVsLCBhdHRudW0pCU5hbWVTdHIoKmF0dG51bUF0dE5hbWUocmVsLCBhdHRudW0pKQogI2Rl ZmluZSBSSUF0dFR5cGUocmVsLCBhdHRudW0pCWF0dG51bVR5cGVJZChyZWwsIGF0dG51bSkKICNk ZWZpbmUgUklBdHRDb2xsYXRpb24ocmVsLCBhdHRudW0pIGF0dG51bUNvbGxhdGlvbklkKHJlbCwg YXR0bnVtKQpAQCAtMTkyLDggKzE4OSw3IEBAIHN0YXRpYyBib29sIHJpX0NoZWNrX1BrX01hdGNo KFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJCQkJCSAgY29uc3QgUklfQ29u c3RyYWludEluZm8gKnJpaW5mbyk7CiBzdGF0aWMgRGF0dW0gcmlfcmVzdHJpY3QoVHJpZ2dlckRh dGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbik7CiBzdGF0aWMgRGF0dW0gcmlfc2V0KFRy aWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCk7Ci1zdGF0 aWMgdm9pZCBxdW90ZU9uZU5hbWUoY2hhciAqYnVmZmVyLCBjb25zdCBjaGFyICpuYW1lKTsKLXN0 YXRpYyB2b2lkIHF1b3RlUmVsYXRpb25OYW1lKGNoYXIgKmJ1ZmZlciwgUmVsYXRpb24gcmVsKTsK K3N0YXRpYyB2b2lkIGFwcGVuZFJlbGF0aW9uTmFtZShTdHJpbmdJbmZvIGJ1ZmZlciwgUmVsYXRp b24gcmVsLCBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKnN1ZmZpeCk7CiBzdGF0aWMg dm9pZCByaV9HZW5lcmF0ZVF1YWwoU3RyaW5nSW5mbyBidWYsCiAJCQkJCQkJY29uc3QgY2hhciAq c2VwLAogCQkJCQkJCWNvbnN0IGNoYXIgKmxlZnRvcHByZWZpeCwgY29uc3QgY2hhciAqbGVmdG9w LCBPaWQgbGVmdG9wdHlwZSwgYm9vbCBxdW90ZWxlZnRvcCwKQEAgLTM1Nyw3ICszNTMsNiBAQCBS SV9GS2V5X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAlpZiAoKHFwbGFuID0gcmlfRmV0 Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxMKQogCXsKIAkJU3RyaW5nSW5mb0RhdGEgcXVl cnlidWY7Ci0JCWNoYXIJCXBrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CiAJCWNv bnN0IGNoYXIgKmF0dG5hbWU7CiAJCWNoYXIJCXBhcmFtbmFtZVsxNl07CiAJCWNvbnN0IGNoYXIg KnF1ZXJ5c2VwOwpAQCAtMzkwLDE5ICszODUsMTYgQEAgUklfRktleV9jaGVjayhUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEpCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CiAJCXBrX29ubHkgPSBw a19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJ CSIiIDogIk9OTFkgIjsKLQkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwpOwog CQlpZiAocmlpbmZvLT5oYXNwZXJpb2QpCiAJCXsKIAkJCWF0dG5hbWUgPSBSSUF0dE5hbWUocGtf cmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsKIAkJCWFwcGVuZFN0 cmluZ0luZm9JZGVudGlmaWVyKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gKFNFTEVDVCAiLCBh dHRuYW1lLCAiIEFTIHIgRlJPTSAiKTsKLQkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAot CQkJCQkJCSAiJXMlcyB4IiwKLQkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJCWFwcGVu ZFJlbGF0aW9uTmFtZSgmcXVlcnlidWYsIHBrX3JlbCwgcGtfb25seSwgIiB4Iik7CiAJCX0KIAkJ ZWxzZQogCQl7Ci0JCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00g JXMlcyB4IiwKLQkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJnF1ZXJ5YnVmLCAiU0VMRUNUIDEgRlJPTSAiKTsKKwkJCWFwcGVuZFJlbGF0aW9u TmFtZSgmcXVlcnlidWYsIHBrX3JlbCwgcGtfb25seSwgIiB4Iik7CiAJCX0KIAkJcXVlcnlzZXAg PSAiV0hFUkUiOwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKQEAg LTUyNiw3ICs1MTgsNiBAQCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0 aW9uIGZrX3JlbCwKIAlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9 PSBOVUxMKQogCXsKIAkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7Ci0JCWNoYXIJCXBrcmVsbmFt ZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CiAJCWNvbnN0IGNoYXIgKmF0dG5hbWU7CiAJCWNo YXIJCXBhcmFtbmFtZVsxNl07CiAJCWNvbnN0IGNoYXIgKnF1ZXJ5c2VwOwpAQCAtNTU5LDE5ICs1 NTAsMTYgQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBma19y ZWwsCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CiAJCXBrX29ubHkgPSBwa19yZWwtPnJk X3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJCSIiIDogIk9O TFkgIjsKLQkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwpOwogCQlpZiAocmlp bmZvLT5oYXNwZXJpb2QpCiAJCXsKIAkJCWF0dG5hbWUgPSBSSUF0dE5hbWUocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsKIAkJCWFwcGVuZFN0cmluZ0luZm9J ZGVudGlmaWVyKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gKFNFTEVDVCAiLCBhdHRuYW1lLCAi IEFTIHIgRlJPTSAiKTsKLQkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAotCQkJCQkJCSAi JXMlcyB4IiwKLQkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJCWFwcGVuZFJlbGF0aW9u TmFtZSgmcXVlcnlidWYsIHBrX3JlbCwgcGtfb25seSwgIiB4Iik7CiAJCX0KIAkJZWxzZQogCQl7 Ci0JCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwK LQkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JnF1ZXJ5YnVmLCAiU0VMRUNUIDEgRlJPTSAiKTsKKwkJCWFwcGVuZFJlbGF0aW9uTmFtZSgmcXVl cnlidWYsIHBrX3JlbCwgcGtfb25seSwgIiB4Iik7CiAJCX0KIAkJcXVlcnlzZXAgPSAiV0hFUkUi OwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKQEAgLTc1MywxMCAr NzQxLDcgQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2Fj dGlvbikKIAlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxM KQogCXsKIAkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7Ci0JCWNoYXIJCXBrcmVsbmFtZVtNQVhf UVVPVEVEX1JFTF9OQU1FX0xFTl07Ci0JCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9O QU1FX0xFTl07CiAJCWNvbnN0IGNoYXIgKmF0dG5hbWU7Ci0JCWNoYXIJCXBlcmlvZGF0dG5hbWVb TUFYX1FVT1RFRF9OQU1FX0xFTl07CiAJCWNoYXIJCXBhcmFtbmFtZVsxNl07CiAJCWNvbnN0IGNo YXIgKnF1ZXJ5c2VwOwogCQlPaWQJCQlxdWVyeW9pZHNbUklfTUFYX05VTUtFWVNdOwpAQCAtNzcz LDkgKzc1OCw4IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19u b19hY3Rpb24pCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CiAJCWZrX29ubHkgPSBma19y ZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJCSIi IDogIk9OTFkgIjsKLQkJcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOwotCQlh cHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwKLQkJCQkJ CSBma19vbmx5LCBma3JlbG5hbWUpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVyeWJ1 ZiwgIlNFTEVDVCAxIEZST00gIik7CisJCWFwcGVuZFJlbGF0aW9uTmFtZSgmcXVlcnlidWYsIGZr X3JlbCwgZmtfb25seSwgIiB4Iik7CiAJCXF1ZXJ5c2VwID0gIldIRVJFIjsKIAkJZm9yIChpbnQg aSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJCXsKQEAgLTg0MywxMCArODI3LDggQEAg cmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJ CWluaXRTdHJpbmdJbmZvKCZyZXBsYWNlbWVudHNidWYpOwogCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmcmVwbGFjZW1lbnRzYnVmLCAiKFNFTEVDVCBwZ19jYXRhbG9nLnJhbmdlX2FnZyhyKSBG Uk9NICIpOwogCi0JCQlxdW90ZU9uZU5hbWUocGVyaW9kYXR0bmFtZSwgUklBdHROYW1lKHBrX3Jl bCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSkpOwotCQkJcXVvdGVSZWxh dGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwpOwotCQkJYXBwZW5kU3RyaW5nSW5mbygmcmVwbGFj ZW1lbnRzYnVmLCAiKFNFTEVDVCB5LiVzIHIgRlJPTSAlcyVzIHkiLAotCQkJCQkJCSBwZXJpb2Rh dHRuYW1lLCBwa19vbmx5LCBwa3JlbG5hbWUpOworCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZp ZXIoJnJlcGxhY2VtZW50c2J1ZiwgIihTRUxFQ1QgeS4iLCBSSUF0dE5hbWUocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSwgIiByIEZST00gIik7CisJCQlhcHBl bmRSZWxhdGlvbk5hbWUoJnJlcGxhY2VtZW50c2J1ZiwgcGtfcmVsLCBwa19vbmx5LCAiIHkiKTsK IAogCQkJLyogUmVzdHJpY3QgcGsgcm93cyB0byB3aGF0IG1hdGNoZXMgKi8KIAkJCXF1ZXJ5c2Vw ID0gIldIRVJFIjsKQEAgLTkzOSw3ICs5MjEsNiBAQCBSSV9GS2V5X2Nhc2NhZGVfZGVsKFBHX0ZV TkNUSU9OX0FSR1MpCiAJaWYgKChxcGxhbiA9IHJpX0ZldGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkg PT0gTlVMTCkKIAl7CiAJCVN0cmluZ0luZm9EYXRhIHF1ZXJ5YnVmOwotCQljaGFyCQlma3JlbG5h bWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwogCQljb25zdCBjaGFyICphdHRuYW1lOwogCQlj aGFyCQlwYXJhbW5hbWVbMTZdOwogCQljb25zdCBjaGFyICpxdWVyeXNlcDsKQEAgLTk1Niw5ICs5 MzcsOCBAQCBSSV9GS2V5X2Nhc2NhZGVfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWluaXRTdHJp bmdJbmZvKCZxdWVyeWJ1Zik7CiAJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJCSIiIDogIk9OTFkgIjsKLQkJcXVvdGVS ZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVy eWJ1ZiwgIkRFTEVURSBGUk9NICVzJXMiLAotCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSk7CisJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCAiREVMRVRFIEZST00gIik7CisJCWFw cGVuZFJlbGF0aW9uTmFtZSgmcXVlcnlidWYsIGZrX3JlbCwgZmtfb25seSwgTlVMTCk7CiAJCXF1 ZXJ5c2VwID0gIldIRVJFIjsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBp KyspCiAJCXsKQEAgLTEwNDQsNyArMTAyNCw2IEBAIFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVO Q1RJT05fQVJHUykKIAl7CiAJCVN0cmluZ0luZm9EYXRhIHF1ZXJ5YnVmOwogCQlTdHJpbmdJbmZv RGF0YSBxdWFsYnVmOwotCQljaGFyCQlma3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5d OwogCQljb25zdCBjaGFyICphdHRuYW1lOwogCQljaGFyCQlwYXJhbW5hbWVbMTZdOwogCQljb25z dCBjaGFyICpxdWVyeXNlcDsKQEAgLTEwNjYsOSArMTA0NSw4IEBAIFJJX0ZLZXlfY2FzY2FkZV91 cGQoUEdfRlVOQ1RJT05fQVJHUykKIAkJaW5pdFN0cmluZ0luZm8oJnF1YWxidWYpOwogCQlma19v bmx5ID0gZmtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJM RSA/CiAJCQkiIiA6ICJPTkxZICI7Ci0JCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtf cmVsKTsKLQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJVUERBVEUgJXMlcyBTRVQiLAot CQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1 ZXJ5YnVmLCAiVVBEQVRFICIpOworCQlhcHBlbmRSZWxhdGlvbk5hbWUoJnF1ZXJ5YnVmLCBma19y ZWwsIGZrX29ubHksICIgU0VUIik7CiAJCXF1ZXJ5c2VwID0gIiI7CiAJCXF1YWxzZXAgPSAiV0hF UkUiOwogCQlmb3IgKGludCBpID0gMCwgaiA9IHJpaW5mby0+bmtleXM7IGkgPCByaWluZm8tPm5r ZXlzOyBpKyssIGorKykKQEAgLTEyMzIsNyArMTIxMCw2IEBAIHJpX3NldChUcmlnZ2VyRGF0YSAq dHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJaWYgKChxcGxhbiA9IHJp X0ZldGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKIAl7CiAJCVN0cmluZ0luZm9EYXRh IHF1ZXJ5YnVmOwotCQljaGFyCQlma3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwog CQljb25zdCBjaGFyICphdHRuYW1lOwogCQljaGFyCQlwYXJhbW5hbWVbMTZdOwogCQljb25zdCBj aGFyICpxdWVyeXNlcDsKQEAgLTEyODEsOSArMTI1OCw4IEBAIHJpX3NldChUcmlnZ2VyRGF0YSAq dHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJCWluaXRTdHJpbmdJbmZv KCZxdWVyeWJ1Zik7CiAJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJCSIiIDogIk9OTFkgIjsKLQkJcXVvdGVSZWxhdGlv bk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1Ziwg IlVQREFURSAlcyVzIFNFVCIsCi0JCQkJCQkgZmtfb25seSwgZmtyZWxuYW1lKTsKKwkJYXBwZW5k U3RyaW5nSW5mbygmcXVlcnlidWYsICJVUERBVEUgIik7CisJCWFwcGVuZFJlbGF0aW9uTmFtZSgm cXVlcnlidWYsIGZrX3JlbCwgZmtfb25seSwgIiBTRVQiKTsKIAogCQkvKgogCQkgKiBBZGQgYXNz aWdubWVudCBjbGF1c2VzCkBAIC0xNTA5LDggKzE0ODUsNiBAQCBSSV9Jbml0aWFsX0NoZWNrKFRy aWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogewogCWNv bnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CiAJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7 Ci0JY2hhcgkJcGtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKLQljaGFyCQlma3Jl bG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwogCWNvbnN0IGNoYXIgKnBrYXR0bmFtZTsK IAljb25zdCBjaGFyICpma2F0dG5hbWU7CiAJUmFuZ2VUYmxFbnRyeSAqcnRlOwpAQCAtMTYxMywx NSArMTU4NywxMyBAQCBSSV9Jbml0aWFsX0NoZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9u IGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogCQlzZXAgPSAiLCAiOwogCX0KIAotCXF1b3RlUmVs YXRpb25OYW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsKLQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5h bWUsIGZrX3JlbCk7CiAJZmtfb25seSA9IGZrX3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUgPwogCQkiIiA6ICJPTkxZICI7CiAJcGtfb25seSA9IHBrX3Jl bC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPwogCQkiIiA6 ICJPTkxZICI7Ci0JYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsCi0JCQkJCSAiIEZST00gJXMl cyBmayBMRUZUIE9VVEVSIEpPSU4gJXMlcyBwayBPTiIsCi0JCQkJCSBma19vbmx5LCBma3JlbG5h bWUsIHBrX29ubHksIHBrcmVsbmFtZSk7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnli dWYsICIgRlJPTSAiKTsKKwlhcHBlbmRSZWxhdGlvbk5hbWUoJnF1ZXJ5YnVmLCBma19yZWwsIGZr X29ubHksICIgZmsgTEVGVCBPVVRFUiBKT0lOICIpOworCWFwcGVuZFJlbGF0aW9uTmFtZSgmcXVl cnlidWYsIHBrX3JlbCwgcGtfb25seSwgIiBwayBPTiIpOwogCiAJc2VwID0gIigiOwogCWZvciAo aW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQpAQCAtMTc5OSw4ICsxNzcxLDYgQEAg UklfUGFydGl0aW9uUmVtb3ZlX0NoZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3Jl bCwgUmVsYXRpb24gcGtfcmVsKQogCWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CiAJ U3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7CiAJY2hhcgkgICAqY29uc3RyYWludERlZjsKLQljaGFy CQlwa3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwotCWNoYXIJCWZrcmVsbmFtZVtN QVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CiAJY29uc3QgY2hhciAqcGthdHRuYW1lOwogCWNvbnN0 IGNoYXIgKmZrYXR0bmFtZTsKIAljb25zdCBjaGFyICpzZXA7CkBAIC0xODQ1LDEzICsxODE1LDEy IEBAIFJJX1BhcnRpdGlvblJlbW92ZV9DaGVjayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBm a19yZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAkJc2VwID0gIiwgIjsKIAl9CiAKLQlxdW90ZVJlbGF0 aW9uTmFtZShwa3JlbG5hbWUsIHBrX3JlbCk7Ci0JcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1l LCBma19yZWwpOwogCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFID8KIAkJIiIgOiAiT05MWSAiOwotCWFwcGVuZFN0cmluZ0luZm8o JnF1ZXJ5YnVmLAotCQkJCQkgIiBGUk9NICVzJXMgZmsgSk9JTiAlcyBwayBPTiIsCi0JCQkJCSBm a19vbmx5LCBma3JlbG5hbWUsIHBrcmVsbmFtZSk7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm cXVlcnlidWYsICIgRlJPTSAiKTsKKwlhcHBlbmRSZWxhdGlvbk5hbWUoJnF1ZXJ5YnVmLCBma19y ZWwsIGZrX29ubHksICIgZmsgSk9JTiAiKTsKKwlhcHBlbmRSZWxhdGlvbk5hbWUoJnF1ZXJ5YnVm LCBwa19yZWwsIE5VTEwsICIgcGsgT04iKTsKKwogCS8qIHN0cmNweShwa2F0dG5hbWUsICJway4i KTsgKi8KIAkvKiBzdHJjcHkoZmthdHRuYW1lLCAiZmsuIik7ICovCiAJc2VwID0gIigiOwpAQCAt MjAwNCwzNyArMTk3MywxNiBAQCBSSV9QYXJ0aXRpb25SZW1vdmVfQ2hlY2soVHJpZ2dlciAqdHJp Z2dlciwgUmVsYXRpb24gZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwpCiAKIAogLyoKLSAqIHF1b3Rl T25lTmFtZSAtLS0gc2FmZWx5IHF1b3RlIGEgc2luZ2xlIFNRTCBuYW1lCi0gKgotICogYnVmZmVy IG11c3QgYmUgTUFYX1FVT1RFRF9OQU1FX0xFTiBsb25nIChpbmNsdWRlcyByb29tIGZvciBcMCkK LSAqLwotc3RhdGljIHZvaWQKLXF1b3RlT25lTmFtZShjaGFyICpidWZmZXIsIGNvbnN0IGNoYXIg Km5hbWUpCi17Ci0JLyogUmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGJlIHNtYXJ0LCBqdXN0IGFsd2F5 cyBxdW90ZSBpdC4gKi8KLQkqYnVmZmVyKysgPSAnIic7Ci0Jd2hpbGUgKCpuYW1lKQotCXsKLQkJ aWYgKCpuYW1lID09ICciJykKLQkJCSpidWZmZXIrKyA9ICciJzsKLQkJKmJ1ZmZlcisrID0gKm5h bWUrKzsKLQl9Ci0JKmJ1ZmZlcisrID0gJyInOwotCSpidWZmZXIgPSAnXDAnOwotfQorICogYXBw ZW5kUmVsYXRpb25OYW1lIC0tLSBzYWZlbHkgYXBwZW5kIGEgcXVvdGVkIGZ1bGx5IHF1YWxpZmll ZCByZWxhdGlvbiBuYW1lCiAKLS8qCi0gKiBxdW90ZVJlbGF0aW9uTmFtZSAtLS0gc2FmZWx5IHF1 b3RlIGEgZnVsbHkgcXVhbGlmaWVkIHJlbGF0aW9uIG5hbWUKLSAqCi0gKiBidWZmZXIgbXVzdCBi ZSBNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTiBsb25nIChpbmNsdWRlcyByb29tIGZvciBcMCkKICAq Lwogc3RhdGljIHZvaWQKLXF1b3RlUmVsYXRpb25OYW1lKGNoYXIgKmJ1ZmZlciwgUmVsYXRpb24g cmVsKQorYXBwZW5kUmVsYXRpb25OYW1lKFN0cmluZ0luZm8gYnVmZmVyLCBSZWxhdGlvbiByZWws CisJCQkJICAgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpzdWZmaXgpCiB7Ci0JcXVv dGVPbmVOYW1lKGJ1ZmZlciwgZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNl KHJlbCkpKTsKLQlidWZmZXIgKz0gc3RybGVuKGJ1ZmZlcik7Ci0JKmJ1ZmZlcisrID0gJy4nOwot CXF1b3RlT25lTmFtZShidWZmZXIsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOworCWFw cGVuZFN0cmluZ0luZm9RdWFsaWZpZWRJZGVudGlmaWVyKGJ1ZmZlciwgcHJlZml4LAorCQkJCQkJ CQkJCWdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKSwKKwkJCQkJ CQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBzdWZmaXgpOwogfQogCiAvKgotLSAK Mi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000632b54064417ee2f Content-Type: application/octet-stream; name="v4-0002-Use-appendStringInfoIdentifier-throughout-ri_trig.patch" Content-Disposition: attachment; filename="v4-0002-Use-appendStringInfoIdentifier-throughout-ri_trig.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi8ozvyh1 RnJvbSA4MDQzYmUwMWYxODgzZmY0MTljMWE3MzJiZTczY2JlMDUwMjFkYmYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogTW9uLCAxNyBOb3YgMjAyNSAxMjowOToxMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQgMi80 XSBVc2UgYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoKSB0aHJvdWdob3V0CiByaV90cmlnZ2Vy cy5jCgpSZXBsYWNlIG1vc3QgdXNlcyBvZiBxdW90ZU9uZU5hbWUoKSBhbmQgbWFudWFsIHN0YWNr IGJ1ZmZlcnMgaW4KcmlfdHJpZ2dlcnMuYyB3aXRoIGFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVy KCkgYW5kIHJlbGF0ZWQgaW5mcmFzdHJ1Y3R1cmUuCgpUaGlzIHNpbXBsaWZpZXMgdGhlIGNvbnN0 cnVjdGlvbiBvZiBTUUwgcXVlcmllcyBnZW5lcmF0ZWQgYnkgUkkgdHJpZ2dlcnMgYW5kCmVsaW1p bmF0ZXMgdGhlIG5lZWQgZm9yIE1BWF9RVU9URURfTkFNRV9MRU4gLyBzdGFjay1hbGxvY2F0ZWQg aW50ZXJtZWRpYXRlCmJ1ZmZlcnMuICBJdCBhbHNvIHJlbW92ZXMgc2V2ZXJhbCBjb2RlIHBhdGhz IHdoZXJlIGlkZW50aWZpZXJzIHdlcmUgcXVvdGVkCm1hbnVhbGx5LCBtYWtpbmcgdGhlIHF1b3Rp bmcgcnVsZXMgY29uc2lzdGVudCB3aXRoIHJ1bGV1dGlscy5jIGFuZCB0aGUgR1VDCnF1b3RlX2Fs bF9pZGVudGlmaWVycy4KClRoaXMgY29tbWl0IGFsc28gYWRqdXN0cyBnZW5lcmF0ZV9vcGVyYXRv cl9jbGF1c2UoKSB0byBzdXBwb3J0IHByZWZpeGVkCmFyZ3VtZW50cyBhbmQgaWRlbnRpZmllciBx dW90aW5nIGRpcmVjdGx5LCByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHBsYWNlcwp3aGVyZSBjYWxs ZXJzIG5lZWQgdG8gaW5qZWN0IHN0cmluZyBjb25jYXRlbmF0aW9uIGxvZ2ljLgoKTm8gdXNlci12 aXNpYmxlIGJlaGF2aW9yIGNoYW5nZSBpcyBpbnRlbmRlZDsgdGhlIGdlbmVyYXRlZCBTUUwgc2hv dWxkIGJlCmVxdWl2YWxlbnQgdG8gdGhlIHByZXZpb3VzIHZlcnNpb24uCgpBdXRob3I6IENoYW8g TGkgPGxpY0BoaWdoZ28uY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRW9X eDI9ZzJSVmt4WEI9SnpXcGhnZmc0UUdWK3NwYUEzUFExckJNMmlNZWhyVnZqZ0BtYWlsLmdtYWls LmNvbQotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgIHwgICA0ICstCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyB8IDE4OCArKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICB8ICAzMSAr KystLQogc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaCAgICAgICAgfCAgIDQgKy0KIDQgZmls ZXMgY2hhbmdlZCwgMTE1IGluc2VydGlvbnMoKyksIDExMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9tYXR2aWV3LmMKaW5kZXggZWY3YzBkNjI0ZjEuLmYxYWQ1YThlMDU5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWF0dmlldy5jCkBAIC03OTcsOSArNzk3LDkgQEAgcmVmcmVzaF9ieV9tYXRjaF9tZXJnZShPaWQg bWF0dmlld09pZCwgT2lkIHRlbXBPaWQsIE9pZCByZWxvd25lciwKIAkJCQkJCQkJCQkJCQkgTmFt ZVN0cihhdHRyLT5hdHRuYW1lKSk7CiAKIAkJCQlnZW5lcmF0ZV9vcGVyYXRvcl9jbGF1c2UoJnF1 ZXJ5YnVmLAotCQkJCQkJCQkJCSBsZWZ0b3AsIGF0dHJ0eXBlLAorCQkJCQkJCQkJCSBOVUxMLCBs ZWZ0b3AsIGF0dHJ0eXBlLCBmYWxzZSwKIAkJCQkJCQkJCQkgb3AsCi0JCQkJCQkJCQkJIHJpZ2h0 b3AsIGF0dHJ0eXBlKTsKKwkJCQkJCQkJCQkgTlVMTCwgcmlnaHRvcCwgYXR0cnR5cGUsIGZhbHNl KTsKIAogCQkJCWZvdW5kVW5pcXVlSW5kZXggPSB0cnVlOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYwppbmRleCA5ZTEzZjUyNjk5NC4uM2NjNGRjMmI3YzggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0xOTYsOSArMTk2LDkgQEAgc3RhdGljIHZvaWQgcXVv dGVPbmVOYW1lKGNoYXIgKmJ1ZmZlciwgY29uc3QgY2hhciAqbmFtZSk7CiBzdGF0aWMgdm9pZCBx dW90ZVJlbGF0aW9uTmFtZShjaGFyICpidWZmZXIsIFJlbGF0aW9uIHJlbCk7CiBzdGF0aWMgdm9p ZCByaV9HZW5lcmF0ZVF1YWwoU3RyaW5nSW5mbyBidWYsCiAJCQkJCQkJY29uc3QgY2hhciAqc2Vw LAotCQkJCQkJCWNvbnN0IGNoYXIgKmxlZnRvcCwgT2lkIGxlZnRvcHR5cGUsCisJCQkJCQkJY29u c3QgY2hhciAqbGVmdG9wcHJlZml4LCBjb25zdCBjaGFyICpsZWZ0b3AsIE9pZCBsZWZ0b3B0eXBl LCBib29sIHF1b3RlbGVmdG9wLAogCQkJCQkJCU9pZCBvcG9pZCwKLQkJCQkJCQljb25zdCBjaGFy ICpyaWdodG9wLCBPaWQgcmlnaHRvcHR5cGUpOworCQkJCQkJCWNvbnN0IGNoYXIgKnJpZ2h0b3Bw cmVmaXgsIGNvbnN0IGNoYXIgKnJpZ2h0b3AsIE9pZCByaWdodG9wdHlwZSwgYm9vbCBxdW90ZXJp Z2h0b3ApOwogc3RhdGljIHZvaWQgcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKFN0cmluZ0luZm8g YnVmLCBPaWQgY29sbGF0aW9uKTsKIHN0YXRpYyBpbnQJcmlfTnVsbENoZWNrKFR1cGxlRGVzYyB0 dXBEZXNjLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCSBjb25zdCBSSV9Db25zdHJhaW50 SW5mbyAqcmlpbmZvLCBib29sIHJlbF9pc19wayk7CkBAIC0zNTgsNyArMzU4LDcgQEAgUklfRktl eV9jaGVjayhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAJewogCQlTdHJpbmdJbmZvRGF0YSBxdWVy eWJ1ZjsKIAkJY2hhcgkJcGtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKLQkJY2hh cgkJYXR0bmFtZVtNQVhfUVVPVEVEX05BTUVfTEVOXTsKKwkJY29uc3QgY2hhciAqYXR0bmFtZTsK IAkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKIAkJY29uc3QgY2hhciAqcXVlcnlzZXA7CiAJCU9pZAkJ CXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZU107CkBAIC0zOTMsMTEgKzM5MywxMSBAQCBSSV9GS2V5 X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxu YW1lLCBwa19yZWwpOwogCQlpZiAocmlpbmZvLT5oYXNwZXJpb2QpCiAJCXsKLQkJCXF1b3RlT25l TmFtZShhdHRuYW1lLAotCQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVt c1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKKwkJCWF0dG5hbWUgPSBSSUF0dE5hbWUocGtfcmVsLCBy aWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gKFNFTEVDVCAiLCBhdHRuYW1l LCAiIEFTIHIgRlJPTSAiKTsKIAkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAotCQkJCQkJ CSAiU0VMRUNUIDEgRlJPTSAoU0VMRUNUICVzIEFTIHIgRlJPTSAlcyVzIHgiLAotCQkJCQkJCSBh dHRuYW1lLCBwa19vbmx5LCBwa3JlbG5hbWUpOworCQkJCQkJCSAiJXMlcyB4IiwKKwkJCQkJCQkg cGtfb25seSwgcGtyZWxuYW1lKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTQxMCwxMyArNDEwLDEy IEBAIFJJX0ZLZXlfY2hlY2soVHJpZ2dlckRhdGEgKnRyaWdkYXRhKQogCQkJT2lkCQkJcGtfdHlw ZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCQlPaWQJCQlm a190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAotCQkJ cXVvdGVPbmVOYW1lKGF0dG5hbWUsCi0JCQkJCQkgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5w a19hdHRudW1zW2ldKSk7CisJCQlhdHRuYW1lID0gUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5w a19hdHRudW1zW2ldKTsKIAkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOwogCQkJ cmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVlcnlzZXAsCi0JCQkJCQkJYXR0bmFtZSwgcGtf dHlwZSwKKwkJCQkJCQlOVUxMLCBhdHRuYW1lLCBwa190eXBlLCB0cnVlLAogCQkJCQkJCXJpaW5m by0+cGZfZXFfb3Byc1tpXSwKLQkJCQkJCQlwYXJhbW5hbWUsIGZrX3R5cGUpOworCQkJCQkJCU5V TEwsIHBhcmFtbmFtZSwgZmtfdHlwZSwgZmFsc2UpOwogCQkJcXVlcnlzZXAgPSAiQU5EIjsKIAkJ CXF1ZXJ5b2lkc1tpXSA9IGZrX3R5cGU7CiAJCX0KQEAgLTQyOCw5ICs0MjcsOSBAQCBSSV9GS2V5 X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgIik7CiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIs IHJpaW5mby0+bmtleXMpOwogCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgIiIsCi0JCQkJ CQkJcGFyYW1uYW1lLCBma190eXBlLAorCQkJCQkJCU5VTEwsIHBhcmFtbmFtZSwgZmtfdHlwZSwg ZmFsc2UsCiAJCQkJCQkJcmlpbmZvLT5hZ2dlZF9wZXJpb2RfY29udGFpbmVkX2J5X29wZXIsCi0J CQkJCQkJInBnX2NhdGFsb2cucmFuZ2VfYWdnIiwgQU5ZTVVMVElSQU5HRU9JRCk7CisJCQkJCQkJ TlVMTCwgInBnX2NhdGFsb2cucmFuZ2VfYWdnIiwgQU5ZTVVMVElSQU5HRU9JRCwgZmFsc2UpOwog CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnlidWYsICIoeDEucikiKTsKIAkJfQogCkBA IC01MjgsNyArNTI3LDcgQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxh dGlvbiBma19yZWwsCiAJewogCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKIAkJY2hhcgkJcGty ZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKLQkJY2hhcgkJYXR0bmFtZVtNQVhfUVVP VEVEX05BTUVfTEVOXTsKKwkJY29uc3QgY2hhciAqYXR0bmFtZTsKIAkJY2hhcgkJcGFyYW1uYW1l WzE2XTsKIAkJY29uc3QgY2hhciAqcXVlcnlzZXA7CiAJCWNvbnN0IGNoYXIgKnBrX29ubHk7CkBA IC01NjMsMTEgKzU2MiwxMSBAQCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJl bGF0aW9uIGZrX3JlbCwKIAkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwpOwog CQlpZiAocmlpbmZvLT5oYXNwZXJpb2QpCiAJCXsKLQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBS SUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7 Ci0KKwkJCWF0dG5hbWUgPSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlp bmZvLT5ua2V5cyAtIDFdKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZxdWVyeWJ1 ZiwgIlNFTEVDVCAxIEZST00gKFNFTEVDVCAiLCBhdHRuYW1lLCAiIEFTIHIgRlJPTSAiKTsKIAkJ CWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAotCQkJCQkJCSAiU0VMRUNUIDEgRlJPTSAoU0VM RUNUICVzIEFTIHIgRlJPTSAlcyVzIHgiLAotCQkJCQkJCSBhdHRuYW1lLCBwa19vbmx5LCBwa3Jl bG5hbWUpOworCQkJCQkJCSAiJXMlcyB4IiwKKwkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsK IAkJfQogCQllbHNlCiAJCXsKQEAgLTU3OSwxMyArNTc4LDEyIEBAIHJpX0NoZWNrX1BrX01hdGNo KFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQl7CiAJCQlPaWQJCQlwa190eXBl ID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKIAotCQkJcXVvdGVP bmVOYW1lKGF0dG5hbWUsCi0JCQkJCQkgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKSk7CisJCQlhdHRuYW1lID0gUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKTsKIAkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOwogCQkJcmlfR2Vu ZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVlcnlzZXAsCi0JCQkJCQkJYXR0bmFtZSwgcGtfdHlwZSwK KwkJCQkJCQlOVUxMLCBhdHRuYW1lLCBwa190eXBlLCB0cnVlLAogCQkJCQkJCXJpaW5mby0+cHBf ZXFfb3Byc1tpXSwKLQkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUpOworCQkJCQkJCU5VTEwsIHBh cmFtbmFtZSwgcGtfdHlwZSwgZmFsc2UpOwogCQkJcXVlcnlzZXAgPSAiQU5EIjsKIAkJCXF1ZXJ5 b2lkc1tpXSA9IHBrX3R5cGU7CiAJCX0KQEAgLTU5Nyw5ICs1OTUsOSBAQCByaV9DaGVja19Qa19N YXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgIik7CiAJCQlzcHJpbnRmKHBhcmFtbmFt ZSwgIiQlZCIsIHJpaW5mby0+bmtleXMpOwogCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1Ziwg IiIsCi0JCQkJCQkJcGFyYW1uYW1lLCBma190eXBlLAorCQkJCQkJCU5VTEwsIHBhcmFtbmFtZSwg ZmtfdHlwZSwgZmFsc2UsCiAJCQkJCQkJcmlpbmZvLT5hZ2dlZF9wZXJpb2RfY29udGFpbmVkX2J5 X29wZXIsCi0JCQkJCQkJInBnX2NhdGFsb2cucmFuZ2VfYWdnIiwgQU5ZTVVMVElSQU5HRU9JRCk7 CisJCQkJCQkJTlVMTCwgInBnX2NhdGFsb2cucmFuZ2VfYWdnIiwgQU5ZTVVMVElSQU5HRU9JRCwg ZmFsc2UpOwogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnlidWYsICIoeDEucikiKTsK IAkJfQogCkBAIC03NTcsNyArNzU1LDcgQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdk YXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7CiAJCWNo YXIJCXBrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CiAJCWNoYXIJCWZrcmVsbmFt ZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07Ci0JCWNoYXIJCWF0dG5hbWVbTUFYX1FVT1RFRF9O QU1FX0xFTl07CisJCWNvbnN0IGNoYXIgKmF0dG5hbWU7CiAJCWNoYXIJCXBlcmlvZGF0dG5hbWVb TUFYX1FVT1RFRF9OQU1FX0xFTl07CiAJCWNoYXIJCXBhcmFtbmFtZVsxNl07CiAJCWNvbnN0IGNo YXIgKnF1ZXJ5c2VwOwpAQCAtNzg0LDEzICs3ODIsMTIgQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRh dGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJCU9pZAkJCXBrX3R5cGUgPSBSSUF0 dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwogCQkJT2lkCQkJZmtfdHlwZSA9 IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAKLQkJCXF1b3RlT25l TmFtZShhdHRuYW1lLAotCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSkpOworCQkJYXR0bmFtZSA9IFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSk7CiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKIAkJCXJpX0dlbmVy YXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAotCQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwK KwkJCQkJCQlOVUxMLCBwYXJhbW5hbWUsIHBrX3R5cGUsIGZhbHNlLAogCQkJCQkJCXJpaW5mby0+ cGZfZXFfb3Byc1tpXSwKLQkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCQkJCQlOVUxMLCBh dHRuYW1lLCBma190eXBlLCB0cnVlKTsKIAkJCXF1ZXJ5c2VwID0gIkFORCI7CiAJCQlxdWVyeW9p ZHNbaV0gPSBwa190eXBlOwogCQl9CkBAIC04MjgsNyArODI1LDcgQEAgcmlfcmVzdHJpY3QoVHJp Z2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJCWNoYXIJICAgKnBrX29u bHkgPSBwa19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF ID8KIAkJCQkiIiA6ICJPTkxZICI7CiAKLQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBSSUF0dE5h bWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7CisJCQlh dHRuYW1lID0gUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+bmtl eXMgLSAxXSk7CiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIHJpaW5mby0+bmtleXMpOwog CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVyeWJ1ZiwgIiBBTkQgTk9UIGNvYWxlc2Nl KCIpOwpAQCAtODM3LDkgKzgzNCw5IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0 YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJCQlpbml0U3RyaW5nSW5mbygmaW50ZXJzZWN0YnVmKTsK IAkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZpbnRlcnNlY3RidWYsICcoJyk7CiAJCQlyaV9HZW5l cmF0ZVF1YWwoJmludGVyc2VjdGJ1ZiwgIiIsCi0JCQkJCQkJYXR0bmFtZSwgZmtfcGVyaW9kX3R5 cGUsCisJCQkJCQkJTlVMTCwgYXR0bmFtZSwgZmtfcGVyaW9kX3R5cGUsIHRydWUsCiAJCQkJCQkJ cmlpbmZvLT5wZXJpb2RfaW50ZXJzZWN0X29wZXIsCi0JCQkJCQkJcGFyYW1uYW1lLCBwa19wZXJp b2RfdHlwZSk7CisJCQkJCQkJTlVMTCwgcGFyYW1uYW1lLCBwa19wZXJpb2RfdHlwZSwgZmFsc2Up OwogCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmludGVyc2VjdGJ1ZiwgJyknKTsKIAogCQkJLyog RmluZCB0aGUgcmVtYWluaW5nIGhpc3RvcnkgKi8KQEAgLTg1NywyMiArODU0LDIxIEBAIHJpX3Jl c3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJCQl7CiAJ CQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tp XSk7CiAKLQkJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKLQkJCQkJCQkgUklBdHROYW1lKHBrX3Jl bCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKSk7CisJCQkJYXR0bmFtZSA9IFJJQXR0TmFtZShwa19y ZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQi LCBpICsgMSk7CiAJCQkJcmlfR2VuZXJhdGVRdWFsKCZyZXBsYWNlbWVudHNidWYsIHF1ZXJ5c2Vw LAotCQkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCisJCQkJCQkJCU5VTEwsIHBhcmFtbmFtZSwg cGtfdHlwZSwgZmFsc2UsCiAJCQkJCQkJCXJpaW5mby0+cHBfZXFfb3Byc1tpXSwKLQkJCQkJCQkJ YXR0bmFtZSwgcGtfdHlwZSk7CisJCQkJCQkJCU5VTEwsIGF0dG5hbWUsIHBrX3R5cGUsIHRydWUp OwogCQkJCXF1ZXJ5c2VwID0gIkFORCI7CiAJCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKIAkJ CX0KIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnJlcGxhY2VtZW50c2J1ZiwgIiBGT1IgS0VZ IFNIQVJFIE9GIHkpIHkyKSIpOwogCiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCAiIiwK LQkJCQkJCQlpbnRlcnNlY3RidWYuZGF0YSwgZmtfcGVyaW9kX3R5cGUsCisJCQkJCQkJTlVMTCwg aW50ZXJzZWN0YnVmLmRhdGEsIGZrX3BlcmlvZF90eXBlLCBmYWxzZSwKIAkJCQkJCQlyaWluZm8t PmFnZ2VkX3BlcmlvZF9jb250YWluZWRfYnlfb3BlciwKLQkJCQkJCQlyZXBsYWNlbWVudHNidWYu ZGF0YSwgQU5ZTVVMVElSQU5HRU9JRCk7CisJCQkJCQkJTlVMTCwgcmVwbGFjZW1lbnRzYnVmLmRh dGEsIEFOWU1VTFRJUkFOR0VPSUQsIGZhbHNlKTsKIAkJCS8qIGVuZCBvZiBjb2FsZXNjZTogKi8K IAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCAiLCBmYWxzZSkiKTsKIAkJfQpA QCAtOTQ0LDcgKzk0MCw3IEBAIFJJX0ZLZXlfY2FzY2FkZV9kZWwoUEdfRlVOQ1RJT05fQVJHUykK IAl7CiAJCVN0cmluZ0luZm9EYXRhIHF1ZXJ5YnVmOwogCQljaGFyCQlma3JlbG5hbWVbTUFYX1FV T1RFRF9SRUxfTkFNRV9MRU5dOwotCQljaGFyCQlhdHRuYW1lW01BWF9RVU9URURfTkFNRV9MRU5d OworCQljb25zdCBjaGFyICphdHRuYW1lOwogCQljaGFyCQlwYXJhbW5hbWVbMTZdOwogCQljb25z dCBjaGFyICpxdWVyeXNlcDsKIAkJT2lkCQkJcXVlcnlvaWRzW1JJX01BWF9OVU1LRVlTXTsKQEAg LTk2OSwxMyArOTY1LDEyIEBAIFJJX0ZLZXlfY2FzY2FkZV9kZWwoUEdfRlVOQ1RJT05fQVJHUykK IAkJCU9pZAkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNb aV0pOwogCQkJT2lkCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0 bnVtc1tpXSk7CiAKLQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAotCQkJCQkJIFJJQXR0TmFtZShm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCQkJYXR0bmFtZSA9IFJJQXR0TmFtZShm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQl ZCIsIGkgKyAxKTsKIAkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAotCQkJ CQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKKwkJCQkJCQlOVUxMLCBwYXJhbW5hbWUsIHBrX3R5cGUs IGZhbHNlLAogCQkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKLQkJCQkJCQlhdHRuYW1lLCBm a190eXBlKTsKKwkJCQkJCQlOVUxMLCBhdHRuYW1lLCBma190eXBlLCB0cnVlKTsKIAkJCXF1ZXJ5 c2VwID0gIkFORCI7CiAJCQlxdWVyeW9pZHNbaV0gPSBwa190eXBlOwogCQl9CkBAIC0xMDUwLDcg KzEwNDUsNyBAQCBSSV9GS2V5X2Nhc2NhZGVfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVN0cmlu Z0luZm9EYXRhIHF1ZXJ5YnVmOwogCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOwogCQljaGFyCQlm a3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwotCQljaGFyCQlhdHRuYW1lW01BWF9R VU9URURfTkFNRV9MRU5dOworCQljb25zdCBjaGFyICphdHRuYW1lOwogCQljaGFyCQlwYXJhbW5h bWVbMTZdOwogCQljb25zdCBjaGFyICpxdWVyeXNlcDsKIAkJY29uc3QgY2hhciAqcXVhbHNlcDsK QEAgLTEwODEsMTYgKzEwNzYsMTUgQEAgUklfRktleV9jYXNjYWRlX3VwZChQR19GVU5DVElPTl9B UkdTKQogCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tpXSk7CiAJCQlPaWQJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5m a19hdHRudW1zW2ldKTsKIAotCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCi0JCQkJCQkgUklBdHRO YW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7Ci0JCQlhcHBlbmRTdHJpbmdJbmZv KCZxdWVyeWJ1ZiwKLQkJCQkJCQkgIiVzICVzID0gJCVkIiwKLQkJCQkJCQkgcXVlcnlzZXAsIGF0 dG5hbWUsIGkgKyAxKTsKKwkJCWF0dG5hbWUgPSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZr X2F0dG51bXNbaV0pOworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnlidWYsIHF1ZXJ5 c2VwKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZxdWVyeWJ1ZiwgIiAiLCBhdHRu YW1lLCAiID0gIik7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIiQlZCIsIGkgKyAx KTsKIAkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaiArIDEpOwogCQkJcmlfR2VuZXJhdGVR dWFsKCZxdWFsYnVmLCBxdWFsc2VwLAotCQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKKwkJCQkJ CQlOVUxMLCBwYXJhbW5hbWUsIHBrX3R5cGUsIGZhbHNlLAogCQkJCQkJCXJpaW5mby0+cGZfZXFf b3Byc1tpXSwKLQkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCQkJCQlOVUxMLCBhdHRuYW1l LCBma190eXBlLCB0cnVlKTsKIAkJCXF1ZXJ5c2VwID0gIiwiOwogCQkJcXVhbHNlcCA9ICJBTkQi OwogCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKQEAgLTEyMzksNyArMTIzMyw3IEBAIHJpX3Nl dChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJ ewogCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKIAkJY2hhcgkJZmtyZWxuYW1lW01BWF9RVU9U RURfUkVMX05BTUVfTEVOXTsKLQkJY2hhcgkJYXR0bmFtZVtNQVhfUVVPVEVEX05BTUVfTEVOXTsK KwkJY29uc3QgY2hhciAqYXR0bmFtZTsKIAkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKIAkJY29uc3Qg Y2hhciAqcXVlcnlzZXA7CiAJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CkBAIC0xMjk3LDExICsxMjkx LDEwIEBAIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGlu dCB0Z2tpbmQpCiAJCXF1ZXJ5c2VwID0gIiI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2Nv bHNfdG9fc2V0OyBpKyspCiAJCXsKLQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUo ZmtfcmVsLCBzZXRfY29sc1tpXSkpOwotCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsCi0J CQkJCQkJICIlcyAlcyA9ICVzIiwKLQkJCQkJCQkgcXVlcnlzZXAsIGF0dG5hbWUsCi0JCQkJCQkJ IGlzX3NldF9udWxsID8gIk5VTEwiIDogIkRFRkFVTFQiKTsKKwkJCWF0dG5hbWUgPSBSSUF0dE5h bWUoZmtfcmVsLCBzZXRfY29sc1tpXSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVy eWJ1ZiwgcXVlcnlzZXApOworCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJnF1ZXJ5YnVm LCAiICIsIGF0dG5hbWUsICIgPSAiKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5 YnVmLCBpc19zZXRfbnVsbCA/ICJOVUxMIiA6ICJERUZBVUxUIik7CiAJCQlxdWVyeXNlcCA9ICIs IjsKIAkJfQogCkBAIC0xMzE0LDE0ICsxMzA3LDEzIEBAIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJCQlPaWQJCQlwa190eXBlID0g UklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKIAkJCU9pZAkJCWZrX3R5 cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwogCi0JCQlxdW90 ZU9uZU5hbWUoYXR0bmFtZSwKLQkJCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0 dG51bXNbaV0pKTsKKwkJCWF0dG5hbWUgPSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0 dG51bXNbaV0pOwogCiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKIAkJCXJp X0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1YWxzZXAsCi0JCQkJCQkJcGFyYW1uYW1lLCBwa190 eXBlLAorCQkJCQkJCU5VTEwsIHBhcmFtbmFtZSwgcGtfdHlwZSwgZmFsc2UsCiAJCQkJCQkJcmlp bmZvLT5wZl9lcV9vcHJzW2ldLAotCQkJCQkJCWF0dG5hbWUsIGZrX3R5cGUpOworCQkJCQkJCU5V TEwsIGF0dG5hbWUsIGZrX3R5cGUsIHRydWUpOwogCQkJcXVhbHNlcCA9ICJBTkQiOwogCQkJcXVl cnlvaWRzW2ldID0gcGtfdHlwZTsKIAkJfQpAQCAtMTUxOSw4ICsxNTExLDggQEAgUklfSW5pdGlh bF9DaGVjayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3Jl bCkKIAlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKIAljaGFyCQlwa3JlbG5hbWVbTUFYX1FVT1RF RF9SRUxfTkFNRV9MRU5dOwogCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xF Tl07Ci0JY2hhcgkJcGthdHRuYW1lW01BWF9RVU9URURfTkFNRV9MRU4gKyAzXTsKLQljaGFyCQlm a2F0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTiArIDNdOworCWNvbnN0IGNoYXIgKnBrYXR0bmFt ZTsKKwljb25zdCBjaGFyICpma2F0dG5hbWU7CiAJUmFuZ2VUYmxFbnRyeSAqcnRlOwogCVJURVBl cm1pc3Npb25JbmZvICpwa19wZXJtaW5mbzsKIAlSVEVQZXJtaXNzaW9uSW5mbyAqZmtfcGVybWlu Zm87CkBAIC0xNjE1LDkgKzE2MDcsOSBAQCBSSV9Jbml0aWFsX0NoZWNrKFRyaWdnZXIgKnRyaWdn ZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogCXNlcCA9ICIiOwogCWZvciAo aW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCXsKLQkJcXVvdGVPbmVOYW1lKGZr YXR0bmFtZSwKLQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkp OwotCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIiVzZmsuJXMiLCBzZXAsIGZrYXR0bmFt ZSk7CisJCWZrYXR0bmFtZSA9IFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tp XSk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCBzZXApOworCQlhcHBlbmRT dHJpbmdJbmZvSWRlbnRpZmllcigmcXVlcnlidWYsICJmay4iLCBma2F0dG5hbWUsIE5VTEwpOwog CQlzZXAgPSAiLCAiOwogCX0KIApAQCAtMTYzMSw4ICsxNjIzLDYgQEAgUklfSW5pdGlhbF9DaGVj ayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAkJ CQkJICIgRlJPTSAlcyVzIGZrIExFRlQgT1VURVIgSk9JTiAlcyVzIHBrIE9OIiwKIAkJCQkJIGZr X29ubHksIGZrcmVsbmFtZSwgcGtfb25seSwgcGtyZWxuYW1lKTsKIAotCXN0cmNweShwa2F0dG5h bWUsICJway4iKTsKLQlzdHJjcHkoZmthdHRuYW1lLCAiZmsuIik7CiAJc2VwID0gIigiOwogCWZv ciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCXsKQEAgLTE2NDEsMTQgKzE2 MzEsMTIgQEAgUklfSW5pdGlhbF9DaGVjayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19y ZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAkJT2lkCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBr X3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKIAkJT2lkCQkJZmtfY29sbCA9IFJJQXR0Q29s bGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAotCQlxdW90ZU9uZU5hbWUo cGthdHRuYW1lICsgMywKLQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVt c1tpXSkpOwotCQlxdW90ZU9uZU5hbWUoZmthdHRuYW1lICsgMywKLQkJCQkJIFJJQXR0TmFtZShm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCQlwa2F0dG5hbWUgPSBSSUF0dE5hbWUo cGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQlma2F0dG5hbWUgPSBSSUF0dE5hbWUo ZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwogCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5 YnVmLCBzZXAsCi0JCQkJCQlwa2F0dG5hbWUsIHBrX3R5cGUsCisJCQkJCQkicGsuIiwgcGthdHRu YW1lLCBwa190eXBlLCB0cnVlLAogCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAotCQkJCQkJ ZmthdHRuYW1lLCBma190eXBlKTsKKwkJCQkJCSJmay4iLCBma2F0dG5hbWUsIGZrX3R5cGUsIHRy dWUpOwogCQlpZiAocGtfY29sbCAhPSBma19jb2xsKQogCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0 aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CiAJCXNlcCA9ICJBTkQiOwpAQCAtMTY1OCwxNiArMTY0 NiwxNSBAQCBSSV9Jbml0aWFsX0NoZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3Jl bCwgUmVsYXRpb24gcGtfcmVsKQogCSAqIEl0J3Mgc3VmZmljaWVudCB0byB0ZXN0IGFueSBvbmUg cGsgYXR0cmlidXRlIGZvciBudWxsIHRvIGRldGVjdCBhIGpvaW4KIAkgKiBmYWlsdXJlLgogCSAq LwotCXF1b3RlT25lTmFtZShwa2F0dG5hbWUsIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtf YXR0bnVtc1swXSkpOwotCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiKSBXSEVSRSBway4l cyBJUyBOVUxMIEFORCAoIiwgcGthdHRuYW1lKTsKKwlwa2F0dG5hbWUgPSBSSUF0dE5hbWUocGtf cmVsLCByaWluZm8tPnBrX2F0dG51bXNbMF0pOworCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVy KCZxdWVyeWJ1ZiwgIikgV0hFUkUgcGsuIiwgcGthdHRuYW1lLCAiIElTIE5VTEwgQU5EICgiKTsK IAogCXNlcCA9ICIiOwogCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQog CXsKLQkJcXVvdGVPbmVOYW1lKGZrYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5m a19hdHRudW1zW2ldKSk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAotCQkJCQkJICIl c2ZrLiVzIElTIE5PVCBOVUxMIiwKLQkJCQkJCSBzZXAsIGZrYXR0bmFtZSk7CisJCWZrYXR0bmFt ZSA9IFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCBzZXApOworCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRp ZmllcigmcXVlcnlidWYsICJmay4iLCBma2F0dG5hbWUsICIgSVMgTk9UIE5VTEwiKTsKIAkJc3dp dGNoIChyaWluZm8tPmNvbmZtYXRjaHR5cGUpCiAJCXsKIAkJCWNhc2UgRktDT05TVFJfTUFUQ0hf U0lNUExFOgpAQCAtMTgxNCw4ICsxODAxLDggQEAgUklfUGFydGl0aW9uUmVtb3ZlX0NoZWNrKFRy aWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogCWNoYXIJ ICAgKmNvbnN0cmFpbnREZWY7CiAJY2hhcgkJcGtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVf TEVOXTsKIAljaGFyCQlma3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwotCWNoYXIJ CXBrYXR0bmFtZVtNQVhfUVVPVEVEX05BTUVfTEVOICsgM107Ci0JY2hhcgkJZmthdHRuYW1lW01B WF9RVU9URURfTkFNRV9MRU4gKyAzXTsKKwljb25zdCBjaGFyICpwa2F0dG5hbWU7CisJY29uc3Qg Y2hhciAqZmthdHRuYW1lOwogCWNvbnN0IGNoYXIgKnNlcDsKIAljb25zdCBjaGFyICpma19vbmx5 OwogCWludAkJCXNhdmVfbmVzdGxldmVsOwpAQCAtMTg1Miw5ICsxODM5LDkgQEAgUklfUGFydGl0 aW9uUmVtb3ZlX0NoZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRp b24gcGtfcmVsKQogCXNlcCA9ICIiOwogCWZvciAoaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBp KyspCiAJewotCQlxdW90ZU9uZU5hbWUoZmthdHRuYW1lLAotCQkJCQkgUklBdHROYW1lKGZrX3Jl bCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVm LCAiJXNmay4lcyIsIHNlcCwgZmthdHRuYW1lKTsKKwkJZmthdHRuYW1lID0gUklBdHROYW1lKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm cXVlcnlidWYsIHNlcCk7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZxdWVyeWJ1Ziwg ImZrLiIsIGZrYXR0bmFtZSwgTlVMTCk7CiAJCXNlcCA9ICIsICI7CiAJfQogCkBAIC0xODY1LDgg KzE4NTIsOCBAQCBSSV9QYXJ0aXRpb25SZW1vdmVfQ2hlY2soVHJpZ2dlciAqdHJpZ2dlciwgUmVs YXRpb24gZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwpCiAJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnli dWYsCiAJCQkJCSAiIEZST00gJXMlcyBmayBKT0lOICVzIHBrIE9OIiwKIAkJCQkJIGZrX29ubHks IGZrcmVsbmFtZSwgcGtyZWxuYW1lKTsKLQlzdHJjcHkocGthdHRuYW1lLCAicGsuIik7Ci0Jc3Ry Y3B5KGZrYXR0bmFtZSwgImZrLiIpOworCS8qIHN0cmNweShwa2F0dG5hbWUsICJway4iKTsgKi8K KwkvKiBzdHJjcHkoZmthdHRuYW1lLCAiZmsuIik7ICovCiAJc2VwID0gIigiOwogCWZvciAoaSA9 IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJewpAQCAtMTg3NSwxNCArMTg2MiwxMiBAQCBS SV9QYXJ0aXRpb25SZW1vdmVfQ2hlY2soVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRpb24gZmtfcmVs LCBSZWxhdGlvbiBwa19yZWwpCiAJCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19y ZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENvbGxh dGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAKLQkJcXVvdGVPbmVOYW1lKHBr YXR0bmFtZSArIDMsCi0JCQkJCSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNb aV0pKTsKLQkJcXVvdGVPbmVOYW1lKGZrYXR0bmFtZSArIDMsCi0JCQkJCSBSSUF0dE5hbWUoZmtf cmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKKwkJcGthdHRuYW1lID0gUklBdHROYW1lKHBr X3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJZmthdHRuYW1lID0gUklBdHROYW1lKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1 Ziwgc2VwLAotCQkJCQkJcGthdHRuYW1lLCBwa190eXBlLAorCQkJCQkJInBrLiIsIHBrYXR0bmFt ZSwgcGtfdHlwZSwgdHJ1ZSwKIAkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKLQkJCQkJCWZr YXR0bmFtZSwgZmtfdHlwZSk7CisJCQkJCQkiZmsuIiwgZmthdHRuYW1lLCBma190eXBlLCB0cnVl KTsKIAkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCkKIAkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlv bigmcXVlcnlidWYsIHBrX2NvbGwpOwogCQlzZXAgPSAiQU5EIjsKQEAgLTE5MDMsMTAgKzE4ODgs OSBAQCBSSV9QYXJ0aXRpb25SZW1vdmVfQ2hlY2soVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRpb24g ZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwpCiAJc2VwID0gIiI7CiAJZm9yIChpID0gMDsgaSA8IHJp aW5mby0+bmtleXM7IGkrKykKIAl7Ci0JCXF1b3RlT25lTmFtZShma2F0dG5hbWUsIFJJQXR0TmFt ZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZx dWVyeWJ1ZiwKLQkJCQkJCSAiJXNmay4lcyBJUyBOT1QgTlVMTCIsCi0JCQkJCQkgc2VwLCBma2F0 dG5hbWUpOworCQlma2F0dG5hbWUgPSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51 bXNbaV0pOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVyeWJ1Ziwgc2VwKTsKKwkJYXBw ZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJnF1ZXJ5YnVmLCAiZmsuIiwgZmthdHRuYW1lLCAiIElT IE5PVCBOVUxMIik7CiAJCXN3aXRjaCAocmlpbmZvLT5jb25mbWF0Y2h0eXBlKQogCQl7CiAJCQlj YXNlIEZLQ09OU1RSX01BVENIX1NJTVBMRToKQEAgLTIwNjQsMTMgKzIwNDgsMTUgQEAgcXVvdGVS ZWxhdGlvbk5hbWUoY2hhciAqYnVmZmVyLCBSZWxhdGlvbiByZWwpCiBzdGF0aWMgdm9pZAogcmlf R2VuZXJhdGVRdWFsKFN0cmluZ0luZm8gYnVmLAogCQkJCWNvbnN0IGNoYXIgKnNlcCwKLQkJCQlj b25zdCBjaGFyICpsZWZ0b3AsIE9pZCBsZWZ0b3B0eXBlLAorCQkJCWNvbnN0IGNoYXIgKmxlZnRv cHByZWZpeCwgY29uc3QgY2hhciAqbGVmdG9wLCBPaWQgbGVmdG9wdHlwZSwgYm9vbCBxdW90ZWxl ZnRvcCwKIAkJCQlPaWQgb3BvaWQsCi0JCQkJY29uc3QgY2hhciAqcmlnaHRvcCwgT2lkIHJpZ2h0 b3B0eXBlKQorCQkJCWNvbnN0IGNoYXIgKnJpZ2h0b3BwcmVmaXgsIGNvbnN0IGNoYXIgKnJpZ2h0 b3AsIE9pZCByaWdodG9wdHlwZSwgYm9vbCBxdW90ZXJpZ2h0b3ApCiB7CiAJYXBwZW5kU3RyaW5n SW5mbyhidWYsICIgJXMgIiwgc2VwKTsKLQlnZW5lcmF0ZV9vcGVyYXRvcl9jbGF1c2UoYnVmLCBs ZWZ0b3AsIGxlZnRvcHR5cGUsIG9wb2lkLAotCQkJCQkJCSByaWdodG9wLCByaWdodG9wdHlwZSk7 CisJZ2VuZXJhdGVfb3BlcmF0b3JfY2xhdXNlKGJ1ZiwKKwkJCQkJCQkgbGVmdG9wcHJlZml4LCBs ZWZ0b3AsIGxlZnRvcHR5cGUsIHF1b3RlbGVmdG9wLAorCQkJCQkJCSBvcG9pZCwKKwkJCQkJCQkg cmlnaHRvcHByZWZpeCwgcmlnaHRvcCwgcmlnaHRvcHR5cGUsIHF1b3RlcmlnaHRvcCk7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggMWQ3NjdkZWI2YzQuLmIyMTJhMjhk OWJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0xMzU3MCw5ICsxMzU3MCw5IEBA IGdlbmVyYXRlX29wZXJhdG9yX25hbWUoT2lkIG9wZXJpZCwgT2lkIGFyZzEsIE9pZCBhcmcyKQog ICovCiB2b2lkCiBnZW5lcmF0ZV9vcGVyYXRvcl9jbGF1c2UoU3RyaW5nSW5mbyBidWYsCi0JCQkJ CQkgY29uc3QgY2hhciAqbGVmdG9wLCBPaWQgbGVmdG9wdHlwZSwKKwkJCQkJCSBjb25zdCBjaGFy ICpsZWZ0b3BwcmVmaXgsIGNvbnN0IGNoYXIgKmxlZnRvcCwgT2lkIGxlZnRvcHR5cGUsIGJvb2wg cXVvdGVsZWZ0b3AsCiAJCQkJCQkgT2lkIG9wb2lkLAotCQkJCQkJIGNvbnN0IGNoYXIgKnJpZ2h0 b3AsIE9pZCByaWdodG9wdHlwZSkKKwkJCQkJCSBjb25zdCBjaGFyICpyaWdodG9wcHJlZml4LCBj b25zdCBjaGFyICpyaWdodG9wLCBPaWQgcmlnaHRvcHR5cGUsIGJvb2wgcXVvdGVyaWdodG9wKQog ewogCUhlYXBUdXBsZQlvcGVydHVwOwogCUZvcm1fcGdfb3BlcmF0b3Igb3BlcmZvcm07CkBAIC0x MzU4NSwxNSArMTM1ODUsMzIgQEAgZ2VuZXJhdGVfb3BlcmF0b3JfY2xhdXNlKFN0cmluZ0luZm8g YnVmLAogCW9wZXJmb3JtID0gKEZvcm1fcGdfb3BlcmF0b3IpIEdFVFNUUlVDVChvcGVydHVwKTsK IAlBc3NlcnQob3BlcmZvcm0tPm9wcmtpbmQgPT0gJ2InKTsKIAlvcHJuYW1lID0gTmFtZVN0cihv cGVyZm9ybS0+b3BybmFtZSk7Ci0KIAluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKG9wZXJm b3JtLT5vcHJuYW1lc3BhY2UpOwogCi0JYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIGxlZnRv cCk7CisJaWYgKHF1b3RlbGVmdG9wKQorCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYs IGxlZnRvcHByZWZpeCwgbGVmdG9wLCBOVUxMKTsKKwllbHNlCisJeworCQlpZiAobGVmdG9wcHJl Zml4KQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIGxlZnRvcHByZWZpeCk7CisJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBsZWZ0b3ApOworCX0KKwogCWlmIChsZWZ0b3B0eXBl ICE9IG9wZXJmb3JtLT5vcHJsZWZ0KQogCQlhZGRfY2FzdF90byhidWYsIG9wZXJmb3JtLT5vcHJs ZWZ0KTsKLQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBPUEVSQVRPUiglcy4iLCBxdW90ZV9pZGVu dGlmaWVyKG5zcG5hbWUpKTsKLQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwgb3BybmFtZSk7 Ci0JYXBwZW5kU3RyaW5nSW5mbyhidWYsICIpICVzIiwgcmlnaHRvcCk7CisKKwlhcHBlbmRTdHJp bmdJbmZvSWRlbnRpZmllcihidWYsICIgT1BFUkFUT1IoIiwgbnNwbmFtZSwgIi4iKTsKKwlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiVzKSAiLCBvcHJuYW1lKTsKKworCWlmIChxdW90ZXJpZ2h0b3Ap CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1ZiwgcmlnaHRvcHByZWZpeCwgcmlnaHRv cCwgTlVMTCk7CisJZWxzZQorCXsKKwkJaWYgKHJpZ2h0b3BwcmVmaXgpCisJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGJ1ZiwgcmlnaHRvcHByZWZpeCk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCByaWdodG9wKTsKKwl9CisKIAlpZiAocmlnaHRvcHR5cGUgIT0gb3BlcmZvcm0tPm9w cnJpZ2h0KQogCQlhZGRfY2FzdF90byhidWYsIG9wZXJmb3JtLT5vcHJyaWdodCk7CiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmggYi9zcmMvaW5jbHVkZS91dGlscy9i dWlsdGlucy5oCmluZGV4IGZmNGJhNzI2NWMyLi40YmQwNGUxYTU3YSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlu cy5oCkBAIC04MSw5ICs4MSw5IEBAIGV4dGVybiBjb25zdCBjaGFyICpxdW90ZV9pZGVudGlmaWVy KGNvbnN0IGNoYXIgKmlkZW50KTsKIGV4dGVybiBjaGFyICpxdW90ZV9xdWFsaWZpZWRfaWRlbnRp Zmllcihjb25zdCBjaGFyICpxdWFsaWZpZXIsCiAJCQkJCQkJCQkJY29uc3QgY2hhciAqaWRlbnQp OwogZXh0ZXJuIHZvaWQgZ2VuZXJhdGVfb3BlcmF0b3JfY2xhdXNlKFN0cmluZ0luZm8gYnVmLAot CQkJCQkJCQkJIGNvbnN0IGNoYXIgKmxlZnRvcCwgT2lkIGxlZnRvcHR5cGUsCisJCQkJCQkJCQkg Y29uc3QgY2hhciAqbGVmdG9wcHJlZml4LCBjb25zdCBjaGFyICpsZWZ0b3AsIE9pZCBsZWZ0b3B0 eXBlLCBib29sIHF1b3RlbGVmdG9wLAogCQkJCQkJCQkJIE9pZCBvcG9pZCwKLQkJCQkJCQkJCSBj b25zdCBjaGFyICpyaWdodG9wLCBPaWQgcmlnaHRvcHR5cGUpOworCQkJCQkJCQkJIGNvbnN0IGNo YXIgKnJpZ2h0b3BwcmVmaXgsIGNvbnN0IGNoYXIgKnJpZ2h0b3AsIE9pZCByaWdodG9wdHlwZSwg Ym9vbCBxdW90ZXJpZ2h0b3ApOwogZXh0ZXJuIHZvaWQgYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZp ZXIoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqaWRlbnQs IGNvbnN0IGNoYXIgKnN1ZmZpeCk7CiBleHRlcm4gdm9pZCBhcHBlbmRTdHJpbmdJbmZvUXVhbGlm aWVkSWRlbnRpZmllcihTdHJpbmdJbmZvIHN0ciwKIAkJCQkJCQkJCQkJCWNvbnN0IGNoYXIgKnBy ZWZpeCwKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000632b54064417ee2f--