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 1wfaVS-005WhC-2P for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Jul 2026 09:48:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wfaVR-006cJh-27 for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Jul 2026 09:48:21 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wfaVR-006cI9-0W for pgsql-hackers@lists.postgresql.org; Fri, 03 Jul 2026 09:48:21 +0000 Received: from mail-oo1-xc29.google.com ([2607:f8b0:4864:20::c29]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wfaVO-00000001RSg-2syw for pgsql-hackers@lists.postgresql.org; Fri, 03 Jul 2026 09:48:20 +0000 Received: by mail-oo1-xc29.google.com with SMTP id 006d021491bc7-69d7cdd3b8eso129044eaf.2 for ; Fri, 03 Jul 2026 02:48:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783072096; cv=none; d=google.com; s=arc-20260327; b=fm9uJlGMIM4xrABPSTNFUiIrkef9ry8VNZ6DGVOrE6JuGWLgls88hE619nUTwg4pXB zwTzIHl7opKKY8yQXzixYWuU3g1cGJUb4j51Zcu7OiZAJqBZWNV/WppaYdrax5xDTHfm hnHur1W/hhxwXetZI9wkoV6z4e6AAHc+N2zKd/ee3dtfXDc9d8/r8GGYHYNiEzKLvLQG 6IRlQQtlvWE5+WlEpW6OqAOH41eiHaS5ylctHyGVU8HjkkY98H26XJzV0PMaS18UXXGN LSBcq/rdV+K95msigdJ1oyX6Q2QLyYvGBDR/YLVxMjMyq/waEkRQ999VqaefbgZ9FcDf jafg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=IyE1M25l5nWvJy/uXL84zLKOabhgDZnlxHp/RtLM4fQ=; fh=u+RLjW8ZL9pJGdWoFmnC9lcDQEz0dYu0WntWmRQblFo=; b=YQXJuunRkapX6lJhw0DGAhgHoUVWAlRCcXL0WDQhKD66TGKJ9znZnLg2jiFt4tKJmX P9zNk/Vzu62mP34SKgyyRjRQ13cqqUnyiczBloRd0KO2rNmWMqmlbNJHG/mIci//xifg KSmrapxkC7UPimfU7cZg3890cF3JIigh7YmZidB0UiV5Qw1WjiUw8QfwAFbWAcJBeYwQ 1EgJkQp2dZ0Bv6AgLmrsIIbBCiJi4QtJJ2AClzK25eCNqjjKOntHc0zOEkhQWuo7IlhF n1OeFElv0PpGBITQ+tj4+dgFVJyWNpSKqep/wNBk3rf7YHn/DXy3r3AEA1v3fP5qhHCa 12yg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783072096; x=1783676896; 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=IyE1M25l5nWvJy/uXL84zLKOabhgDZnlxHp/RtLM4fQ=; b=ZZtmS7jD55Okv86TE31JbuYZgB9Rw6JZc5BfL8xNww+GkJVxrIQcPeOlKWdop1/0o0 xfM5eq2WKI5vhsu1pvO16ujNaqCZ+DV/95knp8ZR1qEg9yQWvMsJAqiJP+lcLIav37fP O+VOmRiAoZJdaHf5k9rsDQA74VHmRail8sPGPbtxoCLQrnFhT//qg41sgU2oOuQ39qv5 UXm8hBIpGC4+K6y7GMbIBOcUfPPuvNbdyOJvQqRIFe+TexWh/rwb1/eP3A6R9xOoVqbL d4mcqgX907vzSTuwN4OVM7hd2LzbWlQa2y1cNt531UjDRkxNiUTb7VypsmRid49Zc1+s HtPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783072096; x=1783676896; 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=IyE1M25l5nWvJy/uXL84zLKOabhgDZnlxHp/RtLM4fQ=; b=k94iVZK6BSo60WRDaTYe7lkj0BKq8RFFWgIyDPuPB1boqWqCd+2nG5i36qQmhCjaGA CyqJD9GxTYEh3PwUMt5N/BqJQtpN4dVmrS0kyz2Q8ekB10dglwIx4MR0YRpisQL/rrP9 SOwUBrG+MevEMqn+OI/vcLPMgDrST4c4BQ3zbhbUmGxOIIhfQzvGVJj25XDL9CpRe0eN dbRZnOAg+HuRd7v0dOkxR0ZbC57FKCp4Kzd2xnq3EZPPb8ZGfbhWnk1d6XPRyURCnm54 se5fXn25RMx9KBb8Cc4pRLT3KgOQsUdco+BzNbuHkUNOXSjzDdVlGZgnmEJd1AT5A2x5 5rCg== X-Forwarded-Encrypted: i=1; AFNElJ9qNm5BrCpRpg9ad6o543vwvAgyNsrsWDM9TFcqRAPPm888LaWVHO05B4M7eYcQj+lA+lHmUjVLTZTRAiaU@lists.postgresql.org X-Gm-Message-State: AOJu0Yymmqht4oYBVlMopqanxW+J9e0DOpyuYJjOExOATZs8bAb//CO0 YCqj04n4NsC6WrPAToppGSTSyVH6QbZ22hMKlvinxYegS32L7bVUTHejzG3pF7q0vJi2L25Xi+m tcPdxAROIrV2mDtw7RCasojfmv3e/MMc= X-Gm-Gg: AfdE7cmI8R3XnI5Cp0U0lommpCx5LAanpoidx2lJHKiDu3g+GDcav3ecfbArVv0jj6O J9+QRsZ1EK78Dow+cpbahrsLjAXI7K8P6lA/pWT8f8nbhfOW5VHOxBGDerEsYaHZ2Jn3HjtSnyo Ni/8AHtzH9HeJ9mnd1mIATiHHJMLocM1KtyDatF56WixC8V+fKrPO9ZJpURw0hxGqMBjVryh/cg VvggiHif0yDmJV/UtPmju1uw4vhSf7YHdX5ke2Z+Sg7oWiG1LYSJnm+ql6oZhRYkrPfaa3OtIY= X-Received: by 2002:a05:6820:81d8:b0:6a1:5103:5ee8 with SMTP id 006d021491bc7-6a309928f4bmr7188531eaf.1.1783072096350; Fri, 03 Jul 2026 02:48:16 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Fri, 3 Jul 2026 15:18:02 +0530 X-Gm-Features: AVVi8CdB-bwDsUNUKuqmE_g-Zuo4iDaY2QSA3W0_bZUgkfjLRWWft3SuNaHLRN8 Message-ID: Subject: Re: Support EXCEPT for ALL SEQUENCES publications To: Ashutosh Sharma Cc: Peter Smith , shveta malik , vignesh C , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e9ccfc0655b1d2bd" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e9ccfc0655b1d2bd Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 3 Jul 2026 at 11:24, Ashutosh Sharma wrote: > > Hi, > > On Thu, Jul 2, 2026 at 11:53=E2=80=AFAM Shlok Kyal wrote: > > > > Please find the updated v17 patch attached. > > > > Thank you for the updated patches. I see that the following command > works with your patch: > > CREATE PUBLICATION combined_seq_pub_1 > FOR ALL SEQUENCES > EXCEPT (SEQUENCE ONLY s1_seq); > > May I know what the purpose of ONLY is here? > > AFAIU, for FOR ALL TABLES, ONLY was added to handle inherited tables. > However, sequences do not have inheritance, so I am not sure what > semantics ONLY is intended to provide for sequences. Could you please > clarify? It was unintentional. ONLY should not be allowed with SEQUENCE. This happened because, in gram.y, the EXCEPT SEQUENCE production uses relation_expr: +PublicationExceptSeqSpec: + relation_expr + { + $$ =3D makeNode(PublicationObjSpec); + $$->pubobjtype =3D PUBLICATIONOBJ_EXCEPT_SEQUENCE; + $$->pubrelation =3D makeNode(PublicationRelation); + $$->pubrelation->except =3D true; + $$->pubrelation->relation =3D $1; + $$->location =3D @1; + } + ; relation_expr accepts ONLY, so it inadvertently allows syntax such as EXCEPT (SEQUENCE ONLY s1). I think it would be better to use qualified_name instead. That's also what CREATE SEQUENCE uses, so it would be consistent with the rest of the grammar and would prevent ONLY from being accepted. With this change we are now throwing syntax error: postgres=3D# CREATE PUBLICATION combined_seq_pub_1 FOR ALL SEQUENCES EXCEPT (SEQUENCE ONLY s1_seq); ERROR: syntax error at or near "ONLY" LINE 3: EXCEPT (SEQUENCE ONLY s1_seq); While making the change, I also found that I missed updating the comments in gram.y for this feature. I have updated the same and attached the updated v18 patches. Thanks, Shlok Kyal --000000000000e9ccfc0655b1d2bd Content-Type: application/octet-stream; name="v18-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLI.patch" Content-Disposition: attachment; filename="v18-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLI.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr4r0z2j0 RnJvbSA0ZTg4MjJmNzUxZTgxYmMwNjk5YmJmODUzNzg1ZTliY2Y3YThlZWY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjYgTWF5IDIwMjYgMTA6NTE6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYx OCAxLzJdIFN1cHBvcnQgRVhDRVBUIGZvciBBTEwgU0VRVUVOQ0VTIGluIENSRUFURQogUFVCTElD QVRJT04KCkV4dGVuZCBDUkVBVEUgUFVCTElDQVRJT04gLi4uIEZPUiBBTEwgU0VRVUVOQ0VTIHRv IHN1cHBvcnQgdGhlCkVYQ0VQVCBzeW50YXguIFRoaXMgYWxsb3dzIG9uZSBvciBtb3JlIHNlcXVl bmNlcyB0byBiZSBleGNsdWRlZC4gVGhlCnB1Ymxpc2hlciB3aWxsIG5vdCBzZW5kIHRoZSBkYXRh IG9mIGV4Y2x1ZGVkIHNlcXVlbmNlcyB0byB0aGUgc3Vic2NyaWJlci4KCkV4YW1wbGU6CkNSRUFU RSBQVUJMSUNBVElPTiBwdWIxIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgczEs IHMyKTsKLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICB8ICAg OCArLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgfCAgIDggKy0K IGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgIHwgIDQ2ICsrKysrKy0t LQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgNzAgKysrKysr KystLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgfCAxMTgg KysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAg ICAgICAgICB8IDExOSArKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jICAgICAgICAgICAgICAgICB8ICA2NSArKysrKysrKystLS0KIHNyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC90LzAw Ml9wZ19kdW1wLnBsICAgICAgICAgIHwgIDIyICsrKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5j ICAgICAgICAgICAgICAgICAgIHwgIDg5ICsrKysrKysrKysrKysrLS0KIHNyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgIHwgIDEyICsrKwogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5oICAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCAgICAgICAgICAgIHwgIDE1ICstLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w dWJsaWNhdGlvbi5vdXQgfCAgOTkgKysrKysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICB8ICA1MiArKysrKysrKystCiBzcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsICAgICB8ICA3OSArKysrKysrKysrKysrKwogc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgfCAgIDIgKy0KIDE3IGZpbGVzIGNo YW5nZWQsIDYzNiBpbnNlcnRpb25zKCspLCAxNzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApp bmRleCA0YjQ3NGMxMzkxNy4uNDNhMzU2NmRkYTIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC03MDk5LDcg KzcwOTksNyBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50 Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgIChyZWZlcmVuY2VzIDxs aW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctY2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1 Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQogICAgICAgPC9w YXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgUmVmZXJlbmNlIHRvIHRhYmxlCisgICAgICAgUmVm ZXJlbmNlIHRvIHRhYmxlIG9yIHNlcXVlbmNlCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAg PC9yb3c+CiAKQEAgLTcxMDgsOCArNzEwOCw4IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxl PiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAg ICAgICA8c3RydWN0ZmllbGQ+cHJleGNlcHQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBl PgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgVHJ1ZSBpZiB0aGUgdGFibGUg aXMgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uIFNlZQotICAgICAgIDxsaW5rIGxpbmtl bmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+PGxpdGVy YWw+RVhDRVBUPC9saXRlcmFsPjwvbGluaz4uCisgICAgICAgVHJ1ZSBpZiB0aGUgdGFibGUgb3Ig c2VxdWVuY2UgaXMgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uIFNlZQorICAgICAgIDxs aW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdCI+PGxp dGVyYWw+RVhDRVBUPC9saXRlcmFsPjwvbGluaz4uCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAKQEAgLTcxMTgsNyArNzExOCw3IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2Vh YmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZs CiAgICAgICA8c3RydWN0ZmllbGQ+cHJxdWFsPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbm9kZV90 cmVlPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+RXhwcmVzc2lvbiB0cmVlIChp biA8ZnVuY3Rpb24+bm9kZVRvU3RyaW5nKCk8L2Z1bmN0aW9uPgotICAgICAgcmVwcmVzZW50YXRp b24pIGZvciB0aGUgcmVsYXRpb24ncyBwdWJsaWNhdGlvbiBxdWFsaWZ5aW5nIGNvbmRpdGlvbi4g TnVsbAorICAgICAgcmVwcmVzZW50YXRpb24pIGZvciB0aGUgdGFibGUncyBwdWJsaWNhdGlvbiBx dWFsaWZ5aW5nIGNvbmRpdGlvbi4gTnVsbAogICAgICAgaWYgdGhlcmUgaXMgbm8gcHVibGljYXRp b24gcXVhbGlmeWluZyBjb25kaXRpb24uPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCBmMjEyMzlhZjZiOC4uYTI5NjFi ZDNjNDEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTE4LDggKzEx OCwxMiBAQAogICAgc3luY2hyb25pemVkIGF0IGFueSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlv biwgc2VlCiAgICA8eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIv Pi4gV2hlbiBhIHB1YmxpY2F0aW9uIGlzCiAgICBjcmVhdGVkIHdpdGggPGxpdGVyYWw+Rk9SIEFM TCBUQUJMRVM8L2xpdGVyYWw+LCBhIHRhYmxlIG9yIHNldCBvZiB0YWJsZXMgY2FuCi0gICBiZSBl eHBsaWNpdGx5IGV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb24gdXNpbmcgdGhlCi0gICA8bGluayBs aW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxs aXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD48L2xpbms+CisgICBiZSBleHBsaWNpdGx5IGV4Y2x1ZGVk IGZyb20gdGhlIHB1YmxpY2F0aW9uIHVzaW5nIHRoZQorICAgPGxpbmsgbGlua2VuZD0ic3FsLWNy ZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0Ij48bGl0ZXJhbD5FWENFUFQ8L2xpdGVy YWw+PC9saW5rPgorICAgY2xhdXNlLiBTaW1pbGFybHksIHdoZW4gYSBwdWJsaWNhdGlvbiBpcyBj cmVhdGVkIHdpdGgKKyAgIDxsaXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiwgYSBz ZXF1ZW5jZSBvciBzZXQgb2Ygc2VxdWVuY2VzIGNhbiBiZQorICAgZXhwbGljaXRseSBleGNsdWRl ZCBmcm9tIHRoZSBwdWJsaWNhdGlvbiB1c2luZyB0aGUKKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1j cmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdCI+PGxpdGVyYWw+RVhDRVBUPC9saXRl cmFsPjwvbGluaz4KICAgIGNsYXVzZS4KICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfcHVibGljYXRpb24uc2dtbAppbmRleCA4NWNmY2FkZGFmYS4uMzYwZGM3ZWRhNmEgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMzMsNyArMzMsNyBAQCBD UkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPgogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1 YmxpY2F0aW9uX2FsbF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAK ICAgICBBTEwgVEFCTEVTIFsgRVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmV4Y2VwdF90YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KLSAgICBBTEwg U0VRVUVOQ0VTCisgICAgQUxMIFNFUVVFTkNFUyBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leGNlcHRfc2VxdWVuY2Vfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4u IF0gKSBdCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJs ZV9hbmRfY29sdW1uczwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCkBAIC00Niw2ICs0Niwx MCBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPgogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICBbIE9OTFkg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ IFsgKiBdCisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNl cHRfc2VxdWVuY2Vfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKKyAgICBTRVFV RU5DRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2VxdWVuY2VfbmFtZTwvcmVwbGFj ZWFibGU+IFssIC4uLiBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTE4 OSwyMiArMTkzLDI2IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgIDxwYXJhPgogICAgICAgT25seSBwZXJz aXN0ZW50IHNlcXVlbmNlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIHB1YmxpY2F0aW9uLiBUZW1wb3Jh cnkKICAgICAgIHNlcXVlbmNlcyBhbmQgdW5sb2dnZWQgc2VxdWVuY2VzIGFyZSBleGNsdWRlZCBm cm9tIHRoZSBwdWJsaWNhdGlvbi4KKyAgICAgIFNlcXVlbmNlcyBsaXN0ZWQgaW4gdGhlIDxsaXRl cmFsPkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNlIGFyZSBleGNsdWRlZCBmcm9tCisgICAgICB0aGUg cHVibGljYXRpb24uCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0 ZW50cnk+CiAKLSAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJh bXMtZm9yLWV4Y2VwdC10YWJsZSI+CisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVi bGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQiPgogICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0VQVDwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIFRoaXMg Y2xhdXNlIHNwZWNpZmllcyBhIGxpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhl CisgICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMgdGhlIHRhYmxlcyBvciBzZXF1ZW5jZXMgdG8g YmUgZXhjbHVkZWQgZnJvbSBhbgorICAgICAgPGxpdGVyYWw+QUxMIFRBQkxFUzwvbGl0ZXJhbD4g b3IgPGxpdGVyYWw+QUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4KICAgICAgIHB1YmxpY2F0aW9uLgog ICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgT25jZSBhIHRhYmxlIGlzIGV4Y2x1ZGVk LCB0aGUgZXhjbHVzaW9uIGFwcGxpZXMgdG8gdGhhdCB0YWJsZQotICAgICAgcmVnYXJkbGVzcyBv ZiBpdHMgbmFtZSBvciBzY2hlbWEuIFJlbmFtaW5nIHRoZSB0YWJsZSBvciBtb3ZpbmcgaXQgdG8K LSAgICAgIGFub3RoZXIgc2NoZW1hIHVzaW5nIDxjb21tYW5kPkFMVEVSIFRBQkxFIC4uLiBTRVQg U0NIRU1BPC9jb21tYW5kPiBkb2VzCi0gICAgICBub3QgcmVtb3ZlIHRoZSBleGNsdXNpb24uCisg ICAgICBPbmNlIGEgdGFibGUgb3Igc2VxdWVuY2UgaXMgZXhjbHVkZWQsIHRoZSBleGNsdXNpb24g YXBwbGllcyB0byB0aGF0CisgICAgICBvYmplY3QgcmVnYXJkbGVzcyBvZiBpdHMgbmFtZSBvciBz Y2hlbWEuIFJlbmFtaW5nIHRoZSBvYmplY3Qgb3IgbW92aW5nCisgICAgICBpdCB0byBhbm90aGVy IHNjaGVtYSB1c2luZyA8Y29tbWFuZD5BTFRFUiBUQUJMRSAuLi4gU0VUIFNDSEVNQTwvY29tbWFu ZD4KKyAgICAgIG9yIDxjb21tYW5kPkFMVEVSIFNFUVVFTkNFIC4uLiBTRVQgU0NIRU1BPC9jb21t YW5kPiBkb2VzIG5vdCByZW1vdmUgdGhlCisgICAgICBleGNsdXNpb24uCiAgICAgIDwvcGFyYT4K ICAgICAgPHBhcmE+CiAgICAgICBGb3IgaW5oZXJpdGVkIHRhYmxlcywgaWYgPGxpdGVyYWw+T05M WTwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGJlZm9yZSB0aGUKQEAgLTIyMyw5ICsyMzEsMTAgQEAg Q1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZT4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgIFRoZXJlIGNhbiBi ZSBhIGNhc2Ugd2hlcmUgYSBzdWJzY3JpcHRpb24gaW5jbHVkZXMgbXVsdGlwbGUgcHVibGljYXRp b25zLgotICAgICAgSW4gc3VjaCBhIGNhc2UsIGEgdGFibGUgb3IgcGFydGl0aW9uIHRoYXQgaXMg aW5jbHVkZWQgaW4gb25lIHB1YmxpY2F0aW9uCi0gICAgICBidXQgZXhjbHVkZWQgKGV4cGxpY2l0 bHkgb3IgaW1wbGljaXRseSkgYnkgdGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KLSAgICAg IGNsYXVzZSBvZiBhbm90aGVyIGlzIGNvbnNpZGVyZWQgaW5jbHVkZWQgZm9yIHJlcGxpY2F0aW9u LgorICAgICAgSW4gc3VjaCBhIGNhc2UsIGEgdGFibGUsIHBhcnRpdGlvbiBvciBzZXF1ZW5jZSB0 aGF0IGlzIGluY2x1ZGVkIGluIG9uZQorICAgICAgcHVibGljYXRpb24gYnV0IGV4Y2x1ZGVkIChl eHBsaWNpdGx5IG9yIGltcGxpY2l0bHkpIGJ5IHRoZQorICAgICAgPGxpdGVyYWw+RVhDRVBUPC9s aXRlcmFsPiBjbGF1c2Ugb2YgYW5vdGhlciBpcyBjb25zaWRlcmVkIGluY2x1ZGVkIGZvcgorICAg ICAgcmVwbGljYXRpb24uCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJs aXN0ZW50cnk+CkBAIC01NTMsMTEgKzU2MiwyMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gYWxsX3Rh Ymxlc19leGNlcHQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSB1c2VycywgZGVwYXJ0bQog ICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxp c2hlcyBhbGwgc2VxdWVuY2VzIGZvciBzeW5jaHJvbml6YXRpb24sIGFuZAotICAgYWxsIGNoYW5n ZXMgaW4gYWxsIHRhYmxlcyBleGNlcHQgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFu ZAotICAgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+OgorICAgQ3JlYXRlIGEg cHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIHNlcXVlbmNlcyBmb3Igc3luY2hyb25pemF0 aW9uIGV4Y2VwdAorICAgPHN0cnVjdG5hbWU+c2VxMTwvc3RydWN0bmFtZT4gYW5kIDxzdHJ1Y3Ru YW1lPnNlcTI8L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FU SU9OIGFsbF9zZXF1ZW5jZXNfZXhjZXB0IEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVO Q0Ugc2VxMSwgc2VxMik7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+ CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgc2VxdWVuY2VzIGZv ciBzeW5jaHJvbml6YXRpb24gZXhjZXB0CisgICA8c3RydWN0bmFtZT5zZXExPC9zdHJ1Y3RuYW1l PiBhbmQgPHN0cnVjdG5hbWU+c2VxMjwvc3RydWN0bmFtZT4sIGFuZCBhbGwKKyAgIGNoYW5nZXMg aW4gYWxsIHRhYmxlcyBleGNlcHQKKyAgIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBh bmQgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+OgogPHByb2dyYW1saXN0aW5n PgotQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF9zZXF1ZW5jZXNfdGFibGVzX2V4Y2VwdCBGT1IgQUxM IFNFUVVFTkNFUywgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50cyk7 CitDUkVBVEUgUFVCTElDQVRJT04gYWxsX3NlcXVlbmNlc190YWJsZXNfZXhjZXB0IEZPUiBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ugc2VxMSwgc2VxMiksIEFMTCBUQUJMRVMgRVhDRVBU IChUQUJMRSB1c2VycywgZGVwYXJ0bWVudHMpOwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9wYXJh PgogIDwvcmVmc2VjdDE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggMWVj OTRjODUxYjIuLjVlYjRkZTc0NGRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5j CkBAIC00OSwyMCArNDksMjggQEAgdHlwZWRlZiBzdHJ1Y3QKIH0gcHVibGlzaGVkX3JlbDsKIAog LyoKLSAqIENoZWNrIGlmIHJlbGF0aW9uIGNhbiBiZSBpbiBnaXZlbiBwdWJsaWNhdGlvbiBhbmQg dGhyb3dzIGFwcHJvcHJpYXRlCi0gKiBlcnJvciBpZiBub3QuCisgKiBDaGVjayBpZiB0aGUgdGFy Z2V0IHJlbGF0aW9uIGlzIGFsbG93ZWQgdG8gYmUgc3BlY2lmaWVkIGluIHRoZSBnaXZlbgorICog cHVibGljYXRpb24gYW5kIHRocm93IGFuIGVycm9yIGlmIG5vdC4KKyAqCisgKiAncHVicmVsa2lu ZCcgaXMgdGhlIHJlbGtpbmQgYWNjZXB0ZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGNsYXVzZS4gVGhl IHJlbGtpbmQKKyAqIG9mIHRoZSByZWxhdGlvbiBpbiAncHJpJyBpcyBjaGVja2VkIGZvciBjb21w YXRpYmlsaXR5IGFnYWluc3QgaXQuIEVycm9yIGlzCisgKiByYWlzZWQgaWYgdGhleSBhcmUgbm90 IGNvbXBhdGlibGUuCiAgKi8KIHN0YXRpYyB2b2lkCi1jaGVja19wdWJsaWNhdGlvbl9hZGRfcmVs YXRpb24oUHVibGljYXRpb25SZWxJbmZvICpwcmkpCitjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVs YXRpb24oUHVibGljYXRpb25SZWxJbmZvICpwcmksIGNoYXIgcHVicmVsa2luZCkKIHsKIAlSZWxh dGlvbgl0YXJnZXRyZWwgPSBwcmktPnJlbGF0aW9uOworCWNoYXIJCXRhcmdldHJlbGtpbmQgPSBS ZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2luZDsKIAljb25zdCBjaGFyICpyZWxuYW1l OwogCWNvbnN0IGNoYXIgKmVycm9ybXNnOwogCiAJaWYgKHByaS0+ZXhjZXB0KQogCXsKIAkJcmVs bmFtZSA9IFJlbGF0aW9uR2V0UXVhbGlmaWVkUmVsYXRpb25OYW1lKHRhcmdldHJlbCk7Ci0JCWVy cm9ybXNnID0gZ2V0dGV4dF9ub29wKCJjYW5ub3Qgc3BlY2lmeSByZWxhdGlvbiBcIiVzXCIgaW4g dGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UiKTsKKwkJaWYgKHB1YnJlbGtpbmQgPT0gUkVM S0lORF9TRVFVRU5DRSkKKwkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJjYW5ub3Qgc3BlY2lm eSBcIiVzXCIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoU0VRVUVOQ0UpIGNsYXVzZSIpOwor CQllbHNlCisJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiY2Fubm90IHNwZWNpZnkgXCIlc1wi IGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFRBQkxFKSBjbGF1c2UiKTsKIAl9CiAJZWxzZQog CXsKQEAgLTc3LDEzICs4NSwyMyBAQCBjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oUHVi bGljYXRpb25SZWxJbmZvICpwcmkpCiAJCQkJIGVycm1zZyhlcnJvcm1zZywgcmVsbmFtZSksCiAJ CQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgaW5kaXZp ZHVhbCBwYXJ0aXRpb25zLiIpKSk7CiAKLQkvKiBNdXN0IGJlIGEgcmVndWxhciBvciBwYXJ0aXRp b25lZCB0YWJsZSAqLwotCWlmIChSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2luZCAh PSBSRUxLSU5EX1JFTEFUSU9OICYmCi0JCVJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxr aW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJLyoKKwkgKiBNdXN0IGJlIGEgcmVn dWxhciBvciBwYXJ0aXRpb25lZCB0YWJsZSB3aGVuIHNwZWNpZmllZCBpbiBGT1IgVEFCTEUgb3IK KwkgKiBFWENFUFQgdGFibGUgbGlzdAorCSAqLworCWlmIChwdWJyZWxraW5kID09IFJFTEtJTkRf UkVMQVRJT04gJiYgdGFyZ2V0cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmCisJCXRhcmdl dHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJy bXNnKGVycm9ybXNnLCByZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBv cnRlZCh0YXJnZXRyZWxraW5kKSkpOworCisJLyogTXVzdCBiZSBhIHNlcXVlbmNlIGlmIHNwZWNp ZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlzdCAqLworCWlmIChwdWJyZWxraW5kID09IFJFTEtJ TkRfU0VRVUVOQ0UgJiYgdGFyZ2V0cmVsa2luZCAhPSBSRUxLSU5EX1NFUVVFTkNFKQogCQllcmVw b3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAogCQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAotCQkJCSBlcnJkZXRhaWxfcmVsa2lu ZF9ub3Rfc3VwcG9ydGVkKFJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kKSkpOwor CQkJCSBlcnJkZXRhaWxfcmVsa2luZF9ub3Rfc3VwcG9ydGVkKHRhcmdldHJlbGtpbmQpKSk7CiAK IAkvKiBDYW4ndCBiZSBzeXN0ZW0gdGFibGUgKi8KIAlpZiAoSXNDYXRhbG9nUmVsYXRpb24odGFy Z2V0cmVsKSkKQEAgLTEwNCwxMSArMTIyLDE1IEBAIGNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxh dGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKGVycm9y bXNnLCByZWxuYW1lKSwKKwkJCQkgdGFyZ2V0cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFID8K KwkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB0ZW1w b3Jhcnkgc2VxdWVuY2VzLiIpIDoKIAkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBu b3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhcnkgdGFibGVzLiIpKSk7CiAJZWxzZSBpZiAodGFyZ2V0 cmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAogCQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAorCQkJCSB0YXJnZXRyZWxr aW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgPworCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9u IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHVubG9nZ2VkIHNlcXVlbmNlcy4iKSA6CiAJCQkJIGVycmRl dGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdW5sb2dnZWQgdGFibGVz LiIpKSk7CiB9CiAKQEAgLTUzMSw3ICs1NTMsOCBAQCBhdHRudW1zdG9pbnQydmVjdG9yKEJpdG1h cHNldCAqYXR0cnMpCiAgKi8KIE9iamVjdEFkZHJlc3MKIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlv bihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAotCQkJCQkJIGJvb2wgaWZfbm90 X2V4aXN0cywgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKmFsdGVyX3N0bXQpCisJCQkJCQkgYm9vbCBp Zl9ub3RfZXhpc3RzLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqYWx0ZXJfc3RtdCwKKwkJCQkJCSBj aGFyIHB1YnJlbGtpbmQpCiB7CiAJUmVsYXRpb24JcmVsOwogCUhlYXBUdXBsZQl0dXA7CkBAIC01 NjksNyArNTkyLDcgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGlj YXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRy ZWwpLCBwdWItPm5hbWUpKSk7CiAJfQogCi0JY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9u KHByaSk7CisJY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHByaSwgcHVicmVsa2luZCk7 CiAKIAkvKiBWYWxpZGF0ZSBhbmQgdHJhbnNsYXRlIGNvbHVtbiBuYW1lcyBpbnRvIGEgQml0bWFw c2V0IG9mIGF0dG51bXMuICovCiAJYXR0bnVtcyA9IHB1Yl9jb2xsaXN0X3ZhbGlkYXRlKHByaS0+ cmVsYXRpb24sIHByaS0+Y29sdW1ucyk7CkBAIC05ODksMTUgKzEwMTIsMTcgQEAgR2V0SW5jbHVk ZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJf cGFydG9wdCkKIH0KIAogLyoKLSAqIEdldHMgbGlzdCBvZiB0YWJsZSBvaWRzIHRoYXQgd2VyZSBz cGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgZm9yIGEKLSAqIHB1YmxpY2F0aW9uLgotICoK LSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMu CisgKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyB0aGF0IHdlcmUgc3BlY2lmaWVkIGluIHRo ZSBFWENFUFQgY2xhdXNlIGZvciBhCisgKiAnRk9SIEFMTCBUQUJMRVMnIG9yIGEgJ0ZPUiBBTEwg U0VRVUVOQ0VTJyBwdWJsaWNhdGlvbi4KICAqLwogTGlzdCAqCi1HZXRFeGNsdWRlZFB1YmxpY2F0 aW9uVGFibGVzKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQorR2V0 RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9w dCBwdWJfcGFydG9wdCkKIHsKLQlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJs ZXMpOworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlQdWJsaWNhdGlvbiAqcHViID0gR2V0 UHVibGljYXRpb24ocHViaWQpOworCisJQXNzZXJ0KHB1Yi0+YWxsdGFibGVzIHx8IHB1Yi0+YWxs c2VxdWVuY2VzKTsKKyNlbmRpZgogCiAJcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMo cHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVlKTsKIH0KQEAgLTEwNDgsOCArMTA3Myw5IEBAIEdldEFs bFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKQogICogcm9vdCBwYXJ0aXRpb25lZCB0YWJsZXMuIFRo aXMgaXMgbm90IGFwcGxpY2FibGUgdG8gRk9SIEFMTCBTRVFVRU5DRVMKICAqIHB1YmxpY2F0aW9u LgogICoKLSAqIEZvciBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uLCB0aGUgcmV0dXJuZWQg bGlzdCBleGNsdWRlcyB0YWJsZXMgbWVudGlvbmVkCi0gKiBpbiB0aGUgRVhDRVBUIGNsYXVzZS4K KyAqIEZvciBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uLCB0aGUgcmV0dXJuZWQgbGlzdCBl eGNsdWRlcyB0YWJsZXMKKyAqIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUIGNsYXVzZS4gRm9yIGEg Rk9SIEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb24sCisgKiBpdCBleGNsdWRlcyBzZXF1ZW5jZXMg c3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlLgogICovCiBMaXN0ICoKIEdldEFsbFB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3Qp CkBAIC0xMDYzLDExICsxMDg5LDkgQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1 YmlkLCBjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKIAogCUFzc2VydCghKHJlbGtpbmQg PT0gUkVMS0lORF9TRVFVRU5DRSAmJiBwdWJ2aWFyb290KSk7CiAKLQkvKiBFWENFUFQgZmlsdGVy aW5nIGFwcGxpZXMgb25seSB0byByZWxhdGlvbnMsIG5vdCBzZXF1ZW5jZXMgKi8KLQlpZiAocmVs a2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OKQotCQlleGNlcHRsaXN0ID0gR2V0RXhjbHVkZWRQdWJs aWNhdGlvblRhYmxlcyhwdWJpZCwgcHVidmlhcm9vdCA/Ci0JCQkJCQkJCQkJCQkgIFBVQkxJQ0FU SU9OX1BBUlRfUk9PVCA6Ci0JCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJ ZXhjZXB0bGlzdCA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsIHB1YnZp YXJvb3QgPworCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6CisJCQkJCQkJCQkJ CQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKIAogCWNsYXNzUmVsID0gdGFibGVfb3BlbihSZWxh dGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVi bGljYXRpb25jbWRzLmMKaW5kZXggNDQwYWRiMzU2YWQuLmJkMTcxZjllNDhlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtNjEsMTEgKzYxLDExIEBAIHR5cGVkZWYg c3RydWN0IHJmX2NvbnRleHQKIAlPaWQJCQlwYXJlbnRpZDsJCS8qIHJlbGlkIG9mIHRoZSBwYXJl bnQgcmVsYXRpb24gKi8KIH0gcmZfY29udGV4dDsKIAotc3RhdGljIExpc3QgKk9wZW5UYWJsZUxp c3QoTGlzdCAqdGFibGVzKTsKLXN0YXRpYyB2b2lkIENsb3NlVGFibGVMaXN0KExpc3QgKnJlbHMp Oworc3RhdGljIExpc3QgKk9wZW5SZWxhdGlvbkxpc3QoTGlzdCAqdGFibGVzKTsKK3N0YXRpYyB2 b2lkIENsb3NlUmVsYXRpb25MaXN0KExpc3QgKnJlbHMpOwogc3RhdGljIHZvaWQgTG9ja1NjaGVt YUxpc3QoTGlzdCAqc2NoZW1hbGlzdCk7Ci1zdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFRhYmxl cyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywKLQkJCQkJCQkJIEFs dGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKK3N0YXRpYyB2b2lkIFB1YmxpY2F0aW9uQWRkUmVs YXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAorCQkJCQkJ CQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIGNoYXIgcHVicmVsa2luZCk7CiBzdGF0aWMg dm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIG1p c3Npbmdfb2spOwogc3RhdGljIHZvaWQgUHVibGljYXRpb25BZGRTY2hlbWFzKE9pZCBwdWJpZCwg TGlzdCAqc2NoZW1hcywgYm9vbCBpZl9ub3RfZXhpc3RzLAogCQkJCQkJCQkgIEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10KTsKQEAgLTE3NiwxMiArMTc2LDEzIEBAIHBhcnNlX3B1YmxpY2F0aW9u X29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogfQogCiAvKgotICogQ29udmVydCB0aGUgUHVi bGljYXRpb25PYmpTcGVjVHlwZSBsaXN0IGludG8gc2NoZW1hIG9pZCBsaXN0IGFuZAotICogUHVi bGljYXRpb25UYWJsZSBsaXN0LgorICogQ29udmVydCB0aGUgUHVibGljYXRpb25PYmpTcGVjVHlw ZSBsaXN0IGludG8gUHVibGljYXRpb25SZWxhdGlvbiBsaXN0cworICogKGByZWxzYCwgYGV4Y2Vw dHRibHNgLCBgZXhjZXB0c2Vxc2ApIGFuZCBhIHNjaGVtYSBvaWQgbGlzdCAoYHNjaGVtYXNgKS4K ICAqLwogc3RhdGljIHZvaWQKIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9i anNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJICAgTGlzdCAqKnJlbHMsIExp c3QgKipleGNlcHRyZWxzLCBMaXN0ICoqc2NoZW1hcykKKwkJCQkJCSAgIExpc3QgKipyZWxzLCBM aXN0ICoqZXhjZXB0dGJscywgTGlzdCAqKmV4Y2VwdHNlcXMsCisJCQkJCQkgICBMaXN0ICoqc2No ZW1hcykKIHsKIAlMaXN0Q2VsbCAgICpjZWxsOwogCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVib2Jq OwpAQCAtMTk5LDEyICsyMDAsMTYgQEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAq cHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCXN3aXRjaCAocHVib2JqLT5w dWJvYmp0eXBlKQogCQl7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRToKLQkJ CQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOwotCQkJCSpleGNlcHRyZWxzID0gbGFw cGVuZCgqZXhjZXB0cmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJcHVib2JqLT5wdWJyZWxh dGlvbi0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkqZXhjZXB0dGJscyA9IGxhcHBlbmQoKmV4Y2VwdHRi bHMsIHB1Ym9iai0+cHVicmVsYXRpb24pOworCQkJCWJyZWFrOworCQkJY2FzZSBQVUJMSUNBVElP Tk9CSl9FWENFUFRfU0VRVUVOQ0U6CisJCQkJcHVib2JqLT5wdWJyZWxhdGlvbi0+ZXhjZXB0ID0g dHJ1ZTsKKwkJCQkqZXhjZXB0c2VxcyA9IGxhcHBlbmQoKmV4Y2VwdHNlcXMsIHB1Ym9iai0+cHVi cmVsYXRpb24pOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRToKLQkJ CQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSBmYWxzZTsKLQkJCQkqcmVscyA9IGxhcHBlbmQo KnJlbHMsIHB1Ym9iai0+cHVidGFibGUpOworCQkJCXB1Ym9iai0+cHVicmVsYXRpb24tPmV4Y2Vw dCA9IGZhbHNlOworCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJyZWxhdGlv bik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUE6 CiAJCQkJc2NoZW1haWQgPSBnZXRfbmFtZXNwYWNlX29pZChwdWJvYmotPm5hbWUsIGZhbHNlKTsK QEAgLTg0OSw3ICs4NTQsOCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUs IENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAljaGFyCQlwdWJsaXNoX2dlbmVyYXRlZF9j b2x1bW5zOwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJTGlzdAkgICAqcmVsYXRpb25zID0gTklM OwotCUxpc3QJICAgKmV4Y2VwdHJlbGF0aW9ucyA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHR0Ymxz ID0gTklMOworCUxpc3QJICAgKmV4Y2VwdHNlcXMgPSBOSUw7CiAJTGlzdAkgICAqc2NoZW1haWRs aXN0ID0gTklMOwogCiAJLyogbXVzdCBoYXZlIENSRUFURSBwcml2aWxlZ2Ugb24gZGF0YWJhc2Ug Ki8KQEAgLTkzNiwxOCArOTQyLDI5IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCiAJLyogQXNzb2NpYXRlIG9iamVj dHMgd2l0aCB0aGUgcHVibGljYXRpb24uICovCiAJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMo c3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJCSAgICZleGNlcHRy ZWxhdGlvbnMsICZzY2hlbWFpZGxpc3QpOworCQkJCQkJCSAgICZleGNlcHR0YmxzLCAmZXhjZXB0 c2VxcywgJnNjaGVtYWlkbGlzdCk7CisKKwlpZiAoc3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMpCisJ eworCQkvKiBQcm9jZXNzIEVYQ0VQVCBzZXF1ZW5jZSBsaXN0ICovCisJCWlmIChleGNlcHRzZXFz ICE9IE5JTCkKKwkJeworCQkJTGlzdAkgICAqcmVscyA9IE9wZW5SZWxhdGlvbkxpc3QoZXhjZXB0 c2Vxcyk7CisKKwkJCVB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKHB1Ym9pZCwgcmVscywgdHJ1ZSwg TlVMTCwgUkVMS0lORF9TRVFVRU5DRSk7CisJCQlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKKwkJ fQorCX0KIAogCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcykKIAl7CiAJCS8qIFByb2Nlc3MgRVhD RVBUIHRhYmxlIGxpc3QgKi8KLQkJaWYgKGV4Y2VwdHJlbGF0aW9ucyAhPSBOSUwpCisJCWlmIChl eGNlcHR0YmxzICE9IE5JTCkKIAkJewotCQkJTGlzdAkgICAqcmVsczsKKwkJCUxpc3QJICAgKnJl bHMgPSBPcGVuUmVsYXRpb25MaXN0KGV4Y2VwdHRibHMpOwogCi0JCQlyZWxzID0gT3BlblRhYmxl TGlzdChleGNlcHRyZWxhdGlvbnMpOwotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCBy ZWxzLCB0cnVlLCBOVUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCQkJUHVibGljYXRp b25BZGRSZWxhdGlvbnMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMLCBSRUxLSU5EX1JFTEFUSU9O KTsKKwkJCUNsb3NlUmVsYXRpb25MaXN0KHJlbHMpOwogCQl9CiAKIAkJLyoKQEAgLTk2OSw3ICs5 ODYsNyBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCkKIAkJewogCQkJTGlzdAkgICAqcmVsczsKIAotCQkJcmVscyA9IE9w ZW5UYWJsZUxpc3QocmVsYXRpb25zKTsKKwkJCXJlbHMgPSBPcGVuUmVsYXRpb25MaXN0KHJlbGF0 aW9ucyk7CiAJCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcHN0YXRlLT5wX3NvdXJj ZXRleHQsCiAJCQkJCQkJCQkgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCkBAIC05Nzcs OCArOTk0LDggQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQ dWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMLAog CQkJCQkJCQkJICAgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCi0JCQlQdWJsaWNhdGlv bkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOwotCQkJQ2xvc2VUYWJsZUxpc3Qo cmVscyk7CisJCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJvaWQsIHJlbHMsIHRydWUsIE5V TEwsIFJFTEtJTkRfUkVMQVRJT04pOworCQkJQ2xvc2VSZWxhdGlvbkxpc3QocmVscyk7CiAJCX0K IAogCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCkKQEAgLTEyNTUsNyArMTI3Miw3IEBAIEFsdGVy UHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0 dXAsCiAJaWYgKCF0YWJsZXMgJiYgc3RtdC0+YWN0aW9uICE9IEFQX1NldE9iamVjdHMpCiAJCXJl dHVybjsKIAotCXJlbHMgPSBPcGVuVGFibGVMaXN0KHRhYmxlcyk7CisJcmVscyA9IE9wZW5SZWxh dGlvbkxpc3QodGFibGVzKTsKIAogCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfQWRkT2JqZWN0cykK IAl7CkBAIC0xMjY2LDcgKzEyODMsNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVi bGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQlDaGVja1B1YlJlbGF0aW9uQ29s dW1uTGlzdChzdG10LT5wdWJuYW1lLCByZWxzLCBwdWJsaXNoX3NjaGVtYSwKIAkJCQkJCQkJICAg cHViZm9ybS0+cHVidmlhcm9vdCk7CiAKLQkJUHVibGljYXRpb25BZGRUYWJsZXMocHViaWQsIHJl bHMsIGZhbHNlLCBzdG10KTsKKwkJUHVibGljYXRpb25BZGRSZWxhdGlvbnMocHViaWQsIHJlbHMs IGZhbHNlLCBzdG10LCBSRUxLSU5EX1JFTEFUSU9OKTsKIAl9CiAJZWxzZSBpZiAoc3RtdC0+YWN0 aW9uID09IEFQX0Ryb3BPYmplY3RzKQogCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIHJl bHMsIGZhbHNlKTsKQEAgLTEyODksOCArMTMwNiw4IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMo QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkgKi8KIAkJCWlm IChwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCiAJCQl7Ci0JCQkJb2xkcmVsaWRzID0gR2V0RXhjbHVk ZWRQdWJsaWNhdGlvblRhYmxlcyhwdWJpZCwKLQkJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BB UlRfUk9PVCk7CisJCQkJb2xkcmVsaWRzID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9u cyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAJCQl9CiAJ CX0KIAkJZWxzZQpAQCAtMTM2Myw4ICsxMzgwLDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCQkvKgogCQkJCSAq IFZhbGlkYXRlIHRoZSBjb2x1bW4gbGlzdC4gIElmIHRoZSBjb2x1bW4gbGlzdCBvciBXSEVSRQog CQkJCSAqIGNsYXVzZSBjaGFuZ2VzLCB0aGVuIHRoZSB2YWxpZGF0aW9uIGRvbmUgaGVyZSB3aWxs IGJlCi0JCQkJICogZHVwbGljYXRlZCBpbnNpZGUgUHVibGljYXRpb25BZGRUYWJsZXMoKS4gIFRo ZSB2YWxpZGF0aW9uCi0JCQkJICogaXMgY2hlYXAgZW5vdWdoIHRoYXQgdGhhdCBzZWVtcyBoYXJt bGVzcy4KKwkJCQkgKiBkdXBsaWNhdGVkIGluc2lkZSBQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucygp LiAgVGhlCisJCQkJICogdmFsaWRhdGlvbiBpcyBjaGVhcCBlbm91Z2ggdGhhdCB0aGF0IHNlZW1z IGhhcm1sZXNzLgogCQkJCSAqLwogCQkJCW5ld2NvbHVtbnMgPSBwdWJfY29sbGlzdF92YWxpZGF0 ZShuZXdwdWJyZWwtPnJlbGF0aW9uLAogCQkJCQkJCQkJCQkJICBuZXdwdWJyZWwtPmNvbHVtbnMp OwpAQCAtMTQxMCwxMiArMTQyNywxMiBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVi bGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkgKiBEb24ndCBib3RoZXIgY2Fs Y3VsYXRpbmcgdGhlIGRpZmZlcmVuY2UgZm9yIGFkZGluZywgd2UnbGwgY2F0Y2ggYW5kCiAJCSAq IHNraXAgZXhpc3Rpbmcgb25lcyB3aGVuIGRvaW5nIGNhdGFsb2cgdXBkYXRlLgogCQkgKi8KLQkJ UHVibGljYXRpb25BZGRUYWJsZXMocHViaWQsIHJlbHMsIHRydWUsIHN0bXQpOworCQlQdWJsaWNh dGlvbkFkZFJlbGF0aW9ucyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCwgUkVMS0lORF9SRUxBVElP Tik7CiAKLQkJQ2xvc2VUYWJsZUxpc3QoZGVscmVscyk7CisJCUNsb3NlUmVsYXRpb25MaXN0KGRl bHJlbHMpOwogCX0KIAotCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCUNsb3NlUmVsYXRpb25MaXN0 KHJlbHMpOwogfQogCiAvKgpAQCAtMTY1MSw3ICsxNjY4LDcgQEAgQWx0ZXJQdWJsaWNhdGlvbkFs bEZsYWdzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBSZWxhdGlvbiByZWwsCiAgKiBBbHRl ciB0aGUgZXhpc3RpbmcgcHVibGljYXRpb24uCiAgKgogICogVGhpcyBpcyBkaXNwYXRjaGVyIGZ1 bmN0aW9uIGZvciBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucywKLSAqIEFsdGVyUHVibGljYXRpb25T Y2hlbWFzIGFuZCBBbHRlclB1YmxpY2F0aW9uVGFibGVzLgorICogQWx0ZXJQdWJsaWNhdGlvblNj aGVtYXMgYW5kIEFsdGVyUHVibGljYXRpb25SZWxhdGlvbnMuCiAgKi8KIHZvaWQKIEFsdGVyUHVi bGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkK QEAgLTE2ODMsMTIgKzE3MDAsMTkgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCWVsc2UKIAl7CiAJCUxpc3QJICAgKnJl bGF0aW9ucyA9IE5JTDsKLQkJTGlzdAkgICAqZXhjZXB0cmVsYXRpb25zID0gTklMOworCQlMaXN0 CSAgICpleGNlcHR0YmxzID0gTklMOworCQlMaXN0CSAgICpleGNlcHRzZXFzID0gTklMOwogCQlM aXN0CSAgICpzY2hlbWFpZGxpc3QgPSBOSUw7CiAJCU9pZAkJCXB1YmlkID0gcHViZm9ybS0+b2lk OwogCiAJCU9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0 ZSwgJnJlbGF0aW9ucywKLQkJCQkJCQkJICAgJmV4Y2VwdHJlbGF0aW9ucywgJnNjaGVtYWlkbGlz dCk7CisJCQkJCQkJCSAgICZleGNlcHR0YmxzLCAmZXhjZXB0c2VxcywgJnNjaGVtYWlkbGlzdCk7 CisKKwkJLyoKKwkJICogVE9ETzogRVhDRVBUIChTRVFVRU5DRSAuLi4pIGlzIG5vdCB5ZXQgc3Vw cG9ydGVkIHdpdGggQUxURVIKKwkJICogUFVCTElDQVRJT04uCisJCSAqLworCQlBc3NlcnQoZXhj ZXB0c2VxcyA9PSBOSUwpOwogCiAJCUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10LCB0dXAsIHJl bGF0aW9ucywgc2NoZW1haWRsaXN0KTsKIApAQCAtMTcxMSw3ICsxNzM1LDcgQEAgQWx0ZXJQdWJs aWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQog CQkJCQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCiAJCQkJCQkg ICBzdG10LT5wdWJuYW1lKSk7CiAKLQkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQocmVsYXRpb25z LCBleGNlcHRyZWxhdGlvbnMpOworCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChyZWxhdGlvbnMs IGV4Y2VwdHRibHMpOwogCQlBbHRlclB1YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVsYXRp b25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklM KTsKIAkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFpZGxpc3QpOwpA QCAtMTgzMCwxMiArMTg1NCwxMiBAQCBSZW1vdmVQdWJsaWNhdGlvblNjaGVtYUJ5SWQoT2lkIHBz b2lkKQogfQogCiAvKgotICogT3BlbiByZWxhdGlvbnMgc3BlY2lmaWVkIGJ5IGEgUHVibGljYXRp b25UYWJsZSBsaXN0LgotICogVGhlIHJldHVybmVkIHRhYmxlcyBhcmUgbG9ja2VkIGluIFNoYXJl VXBkYXRlRXhjbHVzaXZlTG9jayBtb2RlIGluIG9yZGVyIHRvCi0gKiBhZGQgdGhlbSB0byBhIHB1 YmxpY2F0aW9uLgorICogT3BlbiByZWxhdGlvbnMgc3BlY2lmaWVkIGJ5IGEgUHVibGljYXRpb25S ZWxhdGlvbiBsaXN0LgorICogVGhlIHJldHVybmVkIHJlbGF0aW9ucyBhcmUgbG9ja2VkIGluIFNo YXJlVXBkYXRlRXhjbHVzaXZlTG9jayBtb2RlIGluIG9yZGVyCisgKiB0byBhZGQgdGhlbSB0byBh IHB1YmxpY2F0aW9uLgogICovCiBzdGF0aWMgTGlzdCAqCi1PcGVuVGFibGVMaXN0KExpc3QgKnRh YmxlcykKK09wZW5SZWxhdGlvbkxpc3QoTGlzdCAqdGFibGVzKQogewogCUxpc3QJICAgKnJlbGlk cyA9IE5JTDsKIAlMaXN0CSAgICpyZWxzID0gTklMOwpAQCAtMTg0OCw3ICsxODcyLDcgQEAgT3Bl blRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJICovCiAJZm9yZWFjaChsYywgdGFibGVzKQogCXsK LQkJUHVibGljYXRpb25UYWJsZSAqdCA9IGxmaXJzdF9ub2RlKFB1YmxpY2F0aW9uVGFibGUsIGxj KTsKKwkJUHVibGljYXRpb25SZWxhdGlvbiAqdCA9IGxmaXJzdF9ub2RlKFB1YmxpY2F0aW9uUmVs YXRpb24sIGxjKTsKIAkJYm9vbAkJcmVjdXJzZSA9IHQtPnJlbGF0aW9uLT5pbmg7CiAJCVJlbGF0 aW9uCXJlbDsKIAkJT2lkCQkJbXlyZWxpZDsKQEAgLTE5ODcsNyArMjAxMSw3IEBAIE9wZW5UYWJs ZUxpc3QoTGlzdCAqdGFibGVzKQogICogQ2xvc2UgYWxsIHJlbGF0aW9ucyBpbiB0aGUgbGlzdC4K ICAqLwogc3RhdGljIHZvaWQKLUNsb3NlVGFibGVMaXN0KExpc3QgKnJlbHMpCitDbG9zZVJlbGF0 aW9uTGlzdChMaXN0ICpyZWxzKQogewogCUxpc3RDZWxsICAgKmxjOwogCkBAIC0yMDMyLDExICsy MDU2LDE1IEBAIExvY2tTY2hlbWFMaXN0KExpc3QgKnNjaGVtYWxpc3QpCiB9CiAKIC8qCi0gKiBB ZGQgbGlzdGVkIHRhYmxlcyB0byB0aGUgcHVibGljYXRpb24uCisgKiBBZGQgbGlzdGVkIHJlbGF0 aW9ucyB0byB0aGUgcHVibGljYXRpb24uCisgKgorICogJ3B1YnJlbGtpbmQnIGlzIHRoZSByZWxr aW5kIGFjY2VwdGVkIGJ5IHRoZSBwdWJsaWNhdGlvbiBjbGF1c2UuCisgKiBUaGUgcmVsa2luZCBv ZiBlYWNoIHJlbGF0aW9uIGluICdyZWxzJyBpcyBjaGVja2VkIGZvciBjb21wYXRpYmlsaXR5Cisg KiBhZ2FpbnN0IGl0LgogICovCiBzdGF0aWMgdm9pZAotUHVibGljYXRpb25BZGRUYWJsZXMoT2lk IHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCi0JCQkJCSBBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCkKK1B1YmxpY2F0aW9uQWRkUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlz dCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAorCQkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQsIGNoYXIgcHVicmVsa2luZCkKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIApAQCAtMjA0Niwx MiArMjA3NCwxMiBAQCBQdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMs IGJvb2wgaWZfbm90X2V4aXN0cywKIAkJUmVsYXRpb24JcmVsID0gcHViX3JlbC0+cmVsYXRpb247 CiAJCU9iamVjdEFkZHJlc3Mgb2JqOwogCi0JCS8qIE11c3QgYmUgb3duZXIgb2YgdGhlIHRhYmxl IG9yIHN1cGVydXNlci4gKi8KKwkJLyogTXVzdCBiZSBvd25lciBvZiB0aGUgcmVsYXRpb24gb3Ig c3VwZXJ1c2VyLiAqLwogCQlpZiAoIW9iamVjdF9vd25lcmNoZWNrKFJlbGF0aW9uUmVsYXRpb25J ZCwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBHZXRVc2VySWQoKSkpCiAJCQlhY2xjaGVja19lcnJv cihBQ0xDSEVDS19OT1RfT1dORVIsIGdldF9yZWxraW5kX29ianR5cGUocmVsLT5yZF9yZWwtPnJl bGtpbmQpLAogCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CiAKLQkJb2Jq ID0gcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHB1YmlkLCBwdWJfcmVsLCBpZl9ub3RfZXhpc3Rz LCBzdG10KTsKKwkJb2JqID0gcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHB1YmlkLCBwdWJfcmVs LCBpZl9ub3RfZXhpc3RzLCBzdG10LCBwdWJyZWxraW5kKTsKIAkJaWYgKHN0bXQpCiAJCXsKIAkJ CUV2ZW50VHJpZ2dlckNvbGxlY3RTaW1wbGVDb21tYW5kKG9iaiwgSW52YWxpZE9iamVjdEFkZHJl c3MsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQppbmRleCBmZjRlMTM4OGM1NS4uZjBiZTIyZWQ5NDEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQpAQCAtNDU3LDcgKzQ1Nyw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJVHJpZ2dl clRyYW5zaXRpb25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0 IG9wdF92YWN1dW1fcmVsYXRpb25fbGlzdAogCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9s aXN0IHB1Yl9hbGxfb2JqX3R5cGVfbGlzdAotCQkJCXB1Yl9leGNlcHRfb2JqX2xpc3Qgb3B0X3B1 Yl9leGNlcHRfY2xhdXNlCisJCQkJcHViX2V4Y2VwdF90YmxfbGlzdCBvcHRfcHViX2V4Y2VwdF90 YmxfY2xhdXNlCisJCQkJcHViX2V4Y2VwdF9zZXFfbGlzdCBvcHRfcHViX2V4Y2VwdF9zZXFfY2xh dXNlCiAKICV0eXBlIDxyZXRjbGF1c2U+IHJldHVybmluZ19jbGF1c2UKICV0eXBlIDxub2RlPgly ZXR1cm5pbmdfb3B0aW9uCkBAIC01OTcsNyArNTk4LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKICV0eXBlIDxub2RlPgl2YXJfdmFsdWUgem9uZV92YWx1ZQogJXR5cGUgPHJvbGVzcGVjPiBh dXRoX2lkZW50IFJvbGVTcGVjIG9wdF9ncmFudGVkX2J5CiAldHlwZSA8cHVibGljYXRpb25vYmpl Y3RzcGVjPiBQdWJsaWNhdGlvbk9ialNwZWMKLSV0eXBlIDxwdWJsaWNhdGlvbm9iamVjdHNwZWM+ IFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYworJXR5cGUgPHB1YmxpY2F0aW9ub2JqZWN0c3BlYz4g UHVibGljYXRpb25FeGNlcHRUYmxTcGVjCisldHlwZSA8cHVibGljYXRpb25vYmplY3RzcGVjPiBQ dWJsaWNhdGlvbkV4Y2VwdFNlcVNwZWMKICV0eXBlIDxwdWJsaWNhdGlvbmFsbG9iamVjdHNwZWM+ IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCiAldHlwZSA8a2V5d29yZD4gdW5yZXNlcnZlZF9rZXl3 b3JkIHR5cGVfZnVuY19uYW1lX2tleXdvcmQKQEAgLTExMjY1LDcgKzExMjY3LDcgQEAgQWx0ZXJP d25lclN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBPV05FUiBU TyBSb2xlU3BlYwogICogcHViX2FsbF9vYmpfdHlwZSBpcyBvbmUgb2Y6CiAgKgogICoJCVRBQkxF UyBbRVhDRVBUIChUQUJMRSB0YWJsZSBbLCAuLi5dICldCi0gKgkJU0VRVUVOQ0VTCisgKgkJU0VR VUVOQ0VTIFtFWENFUFQgKFNFUVVFTkNFIHNlcXVlbmNlIFssIC4uLl0gKV0KICAqCiAgKiBDUkVB VEUgUFVCTElDQVRJT04gRk9SIHB1Yl9vYmogWywgLi4uXSBbV0lUSCBvcHRpb25zXQogICoKQEAg LTExMzI3LDEwICsxMTMyOSwxMCBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJewogCQkJCQkk JCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0g UFVCTElDQVRJT05PQkpfVEFCTEU7Ci0JCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1Ymxp Y2F0aW9uVGFibGUpOwotCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0gJDI7Ci0JCQkJCSQk LT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOwotCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNl ID0gJDQ7CisJCQkJCSQkLT5wdWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRp b24pOworCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0aW9uID0gJDI7CisJCQkJCSQkLT5wdWJy ZWxhdGlvbi0+Y29sdW1ucyA9ICQzOworCQkJCQkkJC0+cHVicmVsYXRpb24tPndoZXJlQ2xhdXNl ID0gJDQ7CiAJCQkJfQogCQkJfCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ29sSWQKIAkJCQl7CkBAIC0x MTM1MSw3ICsxMTM1Myw3IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1Ym9ianR5 cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047CiAJCQkJCS8qCiAJCQkJCSAqIElmIGVp dGhlciBhIHJvdyBmaWx0ZXIgb3IgY29sdW1uIGxpc3QgaXMgc3BlY2lmaWVkLCBjcmVhdGUKLQkJ CQkJICogYSBQdWJsaWNhdGlvblRhYmxlIG9iamVjdC4KKwkJCQkJICogYSBQdWJsaWNhdGlvblJl bGF0aW9uIG9iamVjdC4KIAkJCQkJICovCiAJCQkJCWlmICgkMiB8fCAkMykKIAkJCQkJewpAQCAt MTEzNjEsMTAgKzExMzYzLDEwIEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJCSAqIGVycm9y IHdpbGwgYmUgdGhyb3duIGxhdGVyIHZpYQogCQkJCQkJICogcHJlcHJvY2Vzc19wdWJvYmpfbGlz dCgpLgogCQkJCQkJICovCi0JCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlv blRhYmxlKTsKLQkJCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSBtYWtlUmFuZ2VWYXIoTlVM TCwgJDEsIEAxKTsKLQkJCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQyOwotCQkJCQkJJCQt PnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQzOworCQkJCQkJJCQtPnB1YnJlbGF0aW9uID0gbWFr ZU5vZGUoUHVibGljYXRpb25SZWxhdGlvbik7CisJCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0 aW9uID0gbWFrZVJhbmdlVmFyKE5VTEwsICQxLCBAMSk7CisJCQkJCQkkJC0+cHVicmVsYXRpb24t PmNvbHVtbnMgPSAkMjsKKwkJCQkJCSQkLT5wdWJyZWxhdGlvbi0+d2hlcmVDbGF1c2UgPSAkMzsK IAkJCQkJfQogCQkJCQllbHNlCiAJCQkJCXsKQEAgLTExMzc2LDEwICsxMTM3OCwxMCBAQCBQdWJs aWNhdGlvbk9ialNwZWM6CiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2Jq U3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9O OwotCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsKLQkJCQkJ JCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9IG1ha2VSYW5nZVZhckZyb21RdWFsaWZpZWROYW1lKCQx LCAkMiwgQDEsIHl5c2Nhbm5lcik7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOwot CQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7CisJCQkJCSQkLT5wdWJyZWxhdGlv biA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVicmVsYXRpb24t PnJlbGF0aW9uID0gbWFrZVJhbmdlVmFyRnJvbVF1YWxpZmllZE5hbWUoJDEsICQyLCBAMSwgeXlz Y2FubmVyKTsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uLT5jb2x1bW5zID0gJDM7CisJCQkJCSQkLT5w dWJyZWxhdGlvbi0+d2hlcmVDbGF1c2UgPSAkNDsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJ CQkJfQogCQkJLyogZ3JhbW1hciBsaWtlIHRhYmxlbmFtZSAqICwgT05MWSB0YWJsZW5hbWUsIE9O TFkgKCB0YWJsZW5hbWUgKSAqLwpAQCAtMTEzODcsMTAgKzExMzg5LDEwIEBAIFB1YmxpY2F0aW9u T2JqU3BlYzoKIAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsK IAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047Ci0JCQkJ CSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwotCQkJCQkkJC0+cHVi dGFibGUtPnJlbGF0aW9uID0gJDE7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQyOwot CQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDM7CisJCQkJCSQkLT5wdWJyZWxhdGlv biA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVicmVsYXRpb24t PnJlbGF0aW9uID0gJDE7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+Y29sdW1ucyA9ICQyOworCQkJ CQkkJC0+cHVicmVsYXRpb24tPndoZXJlQ2xhdXNlID0gJDM7CiAJCQkJfQogCQkJfCBDVVJSRU5U X1NDSEVNQQogCQkJCXsKQEAgLTExNDA2LDIzICsxMTQwOCwyOSBAQCBwdWJfb2JqX2xpc3Q6CVB1 YmxpY2F0aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCi1v cHRfcHViX2V4Y2VwdF9jbGF1c2U6Ci0JCQlFWENFUFQgJygnIFRBQkxFIHB1Yl9leGNlcHRfb2Jq X2xpc3QgJyknCXsgJCQgPSAkNDsgfQorb3B0X3B1Yl9leGNlcHRfdGJsX2NsYXVzZToKKwkJCUVY Q0VQVCAnKCcgVEFCTEUgcHViX2V4Y2VwdF90YmxfbGlzdCAnKScJeyAkJCA9ICQ0OyB9CisJCQl8 IC8qRU1QVFkqLwkJCQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJOworCitvcHRfcHViX2V4Y2VwdF9z ZXFfY2xhdXNlOgorCQkJRVhDRVBUICcoJyBTRVFVRU5DRSBwdWJfZXhjZXB0X3NlcV9saXN0ICcp Jwl7ICQkID0gJDQ7IH0KIAkJCXwgLypFTVBUWSovCQkJCQkJCQkJeyAkJCA9IE5JTDsgfQogCQk7 CiAKIFB1YmxpY2F0aW9uQWxsT2JqU3BlYzoKLQkJCQlBTEwgVEFCTEVTIG9wdF9wdWJfZXhjZXB0 X2NsYXVzZQorCQkJCUFMTCBUQUJMRVMgb3B0X3B1Yl9leGNlcHRfdGJsX2NsYXVzZQogCQkJCQl7 CiAJCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uQWxsT2JqU3BlYyk7CiAJCQkJCQkkJC0+ cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OX0FMTF9UQUJMRVM7Ci0JCQkJCQkkJC0+ZXhjZXB0X3Rh YmxlcyA9ICQzOworCQkJCQkJJCQtPmV4Y2VwdF9yZWxhdGlvbnMgPSAkMzsKIAkJCQkJCSQkLT5s b2NhdGlvbiA9IEAxOwogCQkJCQl9Ci0JCQkJfCBBTEwgU0VRVUVOQ0VTCisJCQkJfCBBTEwgU0VR VUVOQ0VTIG9wdF9wdWJfZXhjZXB0X3NlcV9jbGF1c2UKIAkJCQkJewogCQkJCQkJJCQgPSBtYWtl Tm9kZShQdWJsaWNhdGlvbkFsbE9ialNwZWMpOwogCQkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJM SUNBVElPTl9BTExfU0VRVUVOQ0VTOworCQkJCQkJJCQtPmV4Y2VwdF9yZWxhdGlvbnMgPSAkMzsK IAkJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwogCQkJCQl9CiAJCQkJCTsKQEAgLTExNDMzLDIxICsx MTQ0MSw0MSBAQCBwdWJfYWxsX29ial90eXBlX2xpc3Q6CVB1YmxpY2F0aW9uQWxsT2JqU3BlYwog CQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCi1QdWJsaWNhdGlvbkV4Y2VwdE9i alNwZWM6CitQdWJsaWNhdGlvbkV4Y2VwdFRibFNwZWM6CiAJCQkgcmVsYXRpb25fZXhwcgogCQkJ CXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVi b2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRTsKLQkJCQkJJCQtPnB1YnRhYmxl ID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+ZXhjZXB0 ID0gdHJ1ZTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQxOworCQkJCQkkJC0+cHVi cmVsYXRpb24gPSBtYWtlTm9kZShQdWJsaWNhdGlvblJlbGF0aW9uKTsKKwkJCQkJJCQtPnB1YnJl bGF0aW9uLT5leGNlcHQgPSB0cnVlOworCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0aW9uID0g JDE7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOworCQkJCX0KKwk7CisKK1B1YmxpY2F0aW9uRXhj ZXB0U2VxU3BlYzoKKwkJCSBxdWFsaWZpZWRfbmFtZQorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9k ZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9O T0JKX0VYQ0VQVF9TRVFVRU5DRTsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVi bGljYXRpb25SZWxhdGlvbik7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+ZXhjZXB0ID0gdHJ1ZTsK KwkJCQkJJCQtPnB1YnJlbGF0aW9uLT5yZWxhdGlvbiA9ICQxOwogCQkJCQkkJC0+bG9jYXRpb24g PSBAMTsKIAkJCQl9CiAJOwogCi1wdWJfZXhjZXB0X29ial9saXN0OiBQdWJsaWNhdGlvbkV4Y2Vw dE9ialNwZWMKK3B1Yl9leGNlcHRfdGJsX2xpc3Q6IFB1YmxpY2F0aW9uRXhjZXB0VGJsU3BlYwor CQkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwgcHViX2V4Y2VwdF90YmxfbGlzdCAn LCcgb3B0X3RhYmxlIFB1YmxpY2F0aW9uRXhjZXB0VGJsU3BlYworCQkJCQl7ICQkID0gbGFwcGVu ZCgkMSwgJDQpOyB9CisJOworCitwdWJfZXhjZXB0X3NlcV9saXN0OiBQdWJsaWNhdGlvbkV4Y2Vw dFNlcVNwZWMKIAkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9Ci0JCQl8IHB1Yl9leGNlcHRf b2JqX2xpc3QgJywnIG9wdF90YWJsZSBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMKKwkJCXwgcHVi X2V4Y2VwdF9zZXFfbGlzdCAnLCcgUHVibGljYXRpb25FeGNlcHRTZXFTcGVjCisJCQkJCXsgJCQg PSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJCXwgcHViX2V4Y2VwdF9zZXFfbGlzdCAnLCcgU0VRVUVO Q0UgUHVibGljYXRpb25FeGNlcHRTZXFTcGVjCiAJCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkNCk7 IH0KIAk7CiAKQEAgLTIwNzQ3LDEyICsyMDc3NSwxMiBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2Jq dHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIExpc3QgKipwdWJvYmplY3RzLAogCQkJ CQkJCQlib29sICphbGxfdGFibGVzLCBib29sICphbGxfc2VxdWVuY2VzLAogCQkJCQkJCQljb3Jl X3l5c2Nhbl90IHl5c2Nhbm5lcikKIHsKLQlpZiAoIWFsbF9vYmplY3RzX2xpc3QpCi0JCXJldHVy bjsKLQogCSphbGxfdGFibGVzID0gZmFsc2U7CiAJKmFsbF9zZXF1ZW5jZXMgPSBmYWxzZTsKIAor CWlmICghYWxsX29iamVjdHNfbGlzdCkKKwkJcmV0dXJuOworCiAJZm9yZWFjaF9wdHIoUHVibGlj YXRpb25BbGxPYmpTcGVjLCBvYmosIGFsbF9vYmplY3RzX2xpc3QpCiAJewogCQlpZiAob2JqLT5w dWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OX0FMTF9UQUJMRVMpCkBAIC0yMDc2NSw3ICsyMDc5Myw3 IEBAIHByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlz dCwgTGlzdCAqKnB1Ym9iamVjdHMsCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ob2JqLT5sb2Nh dGlvbikpOwogCiAJCQkqYWxsX3RhYmxlcyA9IHRydWU7Ci0JCQkqcHVib2JqZWN0cyA9IGxpc3Rf Y29uY2F0KCpwdWJvYmplY3RzLCBvYmotPmV4Y2VwdF90YWJsZXMpOworCQkJKnB1Ym9iamVjdHMg PSBsaXN0X2NvbmNhdCgqcHVib2JqZWN0cywgb2JqLT5leGNlcHRfcmVsYXRpb25zKTsKIAkJfQog CQllbHNlIGlmIChvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05fQUxMX1NFUVVFTkNFUykK IAkJewpAQCAtMjA3NzcsNiArMjA4MDUsNyBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9s aXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIExpc3QgKipwdWJvYmplY3RzLAogCQkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKG9iai0+bG9jYXRpb24pKTsKIAogCQkJKmFsbF9zZXF1ZW5jZXMgPSB0 cnVlOworCQkJKnB1Ym9iamVjdHMgPSBsaXN0X2NvbmNhdCgqcHVib2JqZWN0cywgb2JqLT5leGNl cHRfcmVsYXRpb25zKTsKIAkJfQogCX0KIH0KQEAgLTIwODEyLDggKzIwODQxLDggQEAgcHJlcHJv Y2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlz Y2FubmVyKQogCiAJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFC TEUpCiAJCXsKLQkJCS8qIHJlbGF0aW9uIG5hbWUgb3IgcHVidGFibGUgbXVzdCBiZSBzZXQgZm9y IHRoaXMgdHlwZSBvZiBvYmplY3QgKi8KLQkJCWlmICghcHVib2JqLT5uYW1lICYmICFwdWJvYmot PnB1YnRhYmxlKQorCQkJLyogUmVsYXRpb24gbmFtZSBvciBwdWJyZWxhdGlvbiBtdXN0IGJlIHNl dCBmb3IgdGhpcyB0eXBlIG9mIG9iamVjdCAqLworCQkJaWYgKCFwdWJvYmotPm5hbWUgJiYgIXB1 Ym9iai0+cHVicmVsYXRpb24pCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCWVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAogCQkJCQkJZXJybXNnKCJpbnZhbGlkIHRhYmxlIG5hbWUiKSwK QEAgLTIwODIxLDEyICsyMDg1MCwxMiBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1 Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAKIAkJCWlmIChwdWJvYmot Pm5hbWUpCiAJCQl7Ci0JCQkJLyogY29udmVydCBpdCB0byBQdWJsaWNhdGlvblRhYmxlICovCi0J CQkJUHVibGljYXRpb25UYWJsZSAqcHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxl KTsKKwkJCQkvKiBDb252ZXJ0IGl0IHRvIFB1YmxpY2F0aW9uUmVsYXRpb24gKi8KKwkJCQlQdWJs aWNhdGlvblJlbGF0aW9uICpwdWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRp b24pOwogCi0JCQkJcHVidGFibGUtPnJlbGF0aW9uID0KKwkJCQlwdWJyZWxhdGlvbi0+cmVsYXRp b24gPQogCQkJCQltYWtlUmFuZ2VWYXIoTlVMTCwgcHVib2JqLT5uYW1lLCBwdWJvYmotPmxvY2F0 aW9uKTsKLQkJCQlwdWJvYmotPnB1YnRhYmxlID0gcHVidGFibGU7CisJCQkJcHVib2JqLT5wdWJy ZWxhdGlvbiA9IHB1YnJlbGF0aW9uOwogCQkJCXB1Ym9iai0+bmFtZSA9IE5VTEw7CiAJCQl9CiAJ CX0KQEAgLTIwODM0LDE0ICsyMDg2MywxNCBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3Qg KnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJIHB1Ym9iai0+ cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVNQSkKIAkJewog CQkJLyogV0hFUkUgY2xhdXNlIGlzIG5vdCBhbGxvd2VkIG9uIGEgc2NoZW1hIG9iamVjdCAqLwot CQkJaWYgKHB1Ym9iai0+cHVidGFibGUgJiYgcHVib2JqLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2Up CisJCQlpZiAocHVib2JqLT5wdWJyZWxhdGlvbiAmJiBwdWJvYmotPnB1YnJlbGF0aW9uLT53aGVy ZUNsYXVzZSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCiAJCQkJCQllcnJtc2coIldIRVJFIGNsYXVzZSBub3QgYWxsb3dlZCBmb3Igc2No ZW1hIiksCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHVib2JqLT5sb2NhdGlvbikpOwogCiAJ CQkvKiBDb2x1bW4gbGlzdCBpcyBub3QgYWxsb3dlZCBvbiBhIHNjaGVtYSBvYmplY3QgKi8KLQkJ CWlmIChwdWJvYmotPnB1YnRhYmxlICYmIHB1Ym9iai0+cHVidGFibGUtPmNvbHVtbnMpCisJCQlp ZiAocHVib2JqLT5wdWJyZWxhdGlvbiAmJiBwdWJvYmotPnB1YnJlbGF0aW9uLT5jb2x1bW5zKQog CQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK IAkJCQkJCWVycm1zZygiY29sdW1uIHNwZWNpZmljYXRpb24gbm90IGFsbG93ZWQgZm9yIHNjaGVt YSIpLApAQCAtMjA4NDksMTEgKzIwODc4LDExIEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlz dCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAogCQkJLyoKIAkJ CSAqIFdlIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgdHlwZSBvZiBzY2hl bWEgb2JqZWN0cwotCQkJICogYmFzZWQgb24gd2hldGhlciBuYW1lIGFuZCBwdWJ0YWJsZSBpcyBz ZXQuCisJCQkgKiBiYXNlZCBvbiB3aGV0aGVyIG5hbWUgYW5kIHB1YnJlbGF0aW9uIGlzIHNldC4K IAkJCSAqLwogCQkJaWYgKHB1Ym9iai0+bmFtZSkKIAkJCQlwdWJvYmotPnB1Ym9ianR5cGUgPSBQ VUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BOwotCQkJZWxzZSBpZiAoIXB1Ym9iai0+bmFt ZSAmJiAhcHVib2JqLT5wdWJ0YWJsZSkKKwkJCWVsc2UgaWYgKCFwdWJvYmotPm5hbWUgJiYgIXB1 Ym9iai0+cHVicmVsYXRpb24pCiAJCQkJcHVib2JqLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05P QkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUE7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCmluZGV4IGY2N2RhZjg1OTExLi43YzJiYTYzNTcxMiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00 NTcxLDIzICs0NTcxLDMxIEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0KQogCQl7CiAJ CQlOVUxMLCBOVUxMCiAJCX07CisJCXB1YmluZm9baV0uZXhjZXB0X3NlcXVlbmNlcyA9IChTaW1w bGVQdHJMaXN0KQorCQl7CisJCQlOVUxMLCBOVUxMCisJCX07CiAKIAkJLyogRGVjaWRlIHdoZXRo ZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYocHViaW5m b1tpXS5kb2JqKSwgZm91dCk7CiAKIAkJLyoKLQkJICogR2V0IHRoZSBsaXN0IG9mIHRhYmxlcyBm b3IgcHVibGljYXRpb25zIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUCi0JCSAqIFRBQkxFIGNsYXVz ZS4KKwkJICogR2V0IHRoZSBsaXN0IG9mIHRhYmxlcyBhbmQgc2VxdWVuY2VzIGZvciBwdWJsaWNh dGlvbnMgc3BlY2lmaWVkIGluCisJCSAqIHRoZSBFWENFUFQgY2xhdXNlLgogCQkgKgotCQkgKiBB bHRob3VnaCBpbmRpdmlkdWFsIHRhYmxlIGVudHJpZXMgaW4gRVhDRVBUIGxpc3QgY291bGQgYmUg c3RvcmVkIGluCi0JCSAqIFB1YmxpY2F0aW9uUmVsSW5mbywgZHVtcFB1YmxpY2F0aW9uVGFibGUg Y2Fubm90IGJlIHVzZWQgdG8gZW1pdAotCQkgKiB0aGVtLCBiZWNhdXNlIHRoZXJlIGlzIG5vIEFM VEVSIFBVQkxJQ0FUSU9OIC4uLiBBREQgY29tbWFuZCB0byBhZGQKLQkJICogaW5kaXZpZHVhbCB0 YWJsZSBlbnRyaWVzIHRvIHRoZSBFWENFUFQgbGlzdC4KKwkJICogQWx0aG91Z2ggaW5kaXZpZHVh bCB0YWJsZS9zZXF1ZW5jZSBlbnRyaWVzIGluIEVYQ0VQVCBsaXN0IGNvdWxkIGJlCisJCSAqIHN0 b3JlZCBpbiBQdWJsaWNhdGlvblJlbEluZm8sIGR1bXBQdWJsaWNhdGlvblRhYmxlIGNhbm5vdCBi ZSB1c2VkCisJCSAqIHRvIGVtaXQgdGhlbSwgYmVjYXVzZSB0aGVyZSBpcyBubyBBTFRFUiBQVUJM SUNBVElPTiAuLi4gQUREIGNvbW1hbmQKKwkJICogdG8gYWRkIGluZGl2aWR1YWwgdGFibGUgZW50 cmllcyB0byB0aGUgRVhDRVBUIGxpc3QuCiAJCSAqCiAJCSAqIFRoZXJlZm9yZSwgdGhlIGFwcHJv YWNoIGlzIHRvIGR1bXAgdGhlIGNvbXBsZXRlIEVYQ0VQVCBsaXN0IGluIGEKIAkJICogc2luZ2xl IENSRUFURSBQVUJMSUNBVElPTiBzdGF0ZW1lbnQuIFB1YmxpY2F0aW9uSW5mbyBpcyB1c2VkIHRv CiAJCSAqIGNvbGxlY3QgdGhpcyBpbmZvcm1hdGlvbiwgd2hpY2ggaXMgdGhlbiBlbWl0dGVkIGJ5 CiAJCSAqIGR1bXBQdWJsaWNhdGlvbigpLgorCQkgKgorCQkgKiBOb3RlOiBFWENFUFQgKFRBQkxF IC4uLikgd2FzIGludHJvZHVjZWQgaW4gUEcxOSwgd2hlcmVhcyBFWENFUFQKKwkJICogKFNFUVVF TkNFIC4uLikgd2FzIGludHJvZHVjZWQgaW4gUEcyMC4gSGVuY2UsIHRoZSB2ZXJzaW9uIGNoZWNr cworCQkgKiBiZWxvdyBkaWZmZXIuCiAJCSAqLwogCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+ PSAxOTAwMDApCiAJCXsKQEAgLTQ1OTYsOSArNDYwNCwxMCBAQCBnZXRQdWJsaWNhdGlvbnMoQXJj aGl2ZSAqZm91dCkKIAogCQkJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CiAJCQlhcHBlbmRQUUV4 cEJ1ZmZlcihxdWVyeSwKLQkJCQkJCQkgICJTRUxFQ1QgcHJyZWxpZFxuIgotCQkJCQkJCSAgIkZS T00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWxcbiIKLQkJCQkJCQkgICJXSEVSRSBwcnB1 YmlkID0gJXUgQU5EIHByZXhjZXB0IiwKKwkJCQkJCQkgICJTRUxFQ1QgcHIucHJyZWxpZCwgcGMu cmVsa2luZFxuIgorCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwg cHJcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgcGMgT04gcHIucHJyZWxp ZCA9IHBjLm9pZFxuIgorCQkJCQkJCSAgIldIRVJFIHByLnBycHViaWQgPSAldSBBTkQgcHIucHJl eGNlcHQiLAogCQkJCQkJCSAgcHViaW5mb1tpXS5kb2JqLmNhdElkLm9pZCk7CiAKIAkJCXJlc190 YmxzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0sp OwpAQCAtNDYwOCwxNCArNDYxNywyNiBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCkK IAkJCWZvciAoaW50IGogPSAwOyBqIDwgbnRibHM7IGorKykKIAkJCXsKIAkJCQlPaWQJCQlwcnJl bGlkOworCQkJCWNoYXIJCXJlbGtpbmQ7CiAJCQkJVGFibGVJbmZvICAqdGJpbmZvOwogCiAJCQkJ cHJyZWxpZCA9IGF0b29pZChQUWdldHZhbHVlKHJlc190YmxzLCBqLCAwKSk7CisJCQkJcmVsa2lu ZCA9ICpQUWdldHZhbHVlKHJlc190YmxzLCBqLCAxKTsKIAogCQkJCXRiaW5mbyA9IGZpbmRUYWJs ZUJ5T2lkKHBycmVsaWQpOwogCiAJCQkJaWYgKHRiaW5mbyAhPSBOVUxMKQotCQkJCQlzaW1wbGVf cHRyX2xpc3RfYXBwZW5kKCZwdWJpbmZvW2ldLmV4Y2VwdF90YWJsZXMsIHRiaW5mbyk7CisJCQkJ eworCQkJCQkvKiBFWENFUFQgKFNFUVVFTkNFIC4uLikgaXMgc3VwcG9ydGVkIGZyb20gUEcyMCBv bndhcmRzLiAqLworCQkJCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAyMDAwMDAgJiYKKwkJ CQkJCXJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkKKwkJCQkJCXNpbXBsZV9wdHJfbGlzdF9h cHBlbmQoJnB1YmluZm9baV0uZXhjZXB0X3NlcXVlbmNlcywgdGJpbmZvKTsKKwkJCQkJZWxzZSBp ZiAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8CisJCQkJCQkJIHJlbGtpbmQgPT0gUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJCQkJCXNpbXBsZV9wdHJfbGlzdF9hcHBlbmQoJnB1 YmluZm9baV0uZXhjZXB0X3RhYmxlcywgdGJpbmZvKTsKKwkJCQkJZWxzZQorCQkJCQkJQXNzZXJ0 KGZhbHNlKTsKKwkJCQl9CiAJCQl9CiAKIAkJCVBRY2xlYXIocmVzX3RibHMpOwpAQCAtNDY3NSwx MiArNDY5NiwzMCBAQCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGlj YXRpb25JbmZvICpwdWJpbmZvKQogCQl9CiAJCWlmIChuX2V4Y2VwdCA+IDApCiAJCQlhcHBlbmRQ UUV4cEJ1ZmZlckNoYXIocXVlcnksICcpJyk7CisJfQorCWlmIChwdWJpbmZvLT5wdWJhbGxzZXF1 ZW5jZXMpCisJeworCQlpbnQJCQluX2V4Y2VwdCA9IDA7CiAKLQkJaWYgKHB1YmluZm8tPnB1YmFs bHNlcXVlbmNlcykKKwkJaWYgKHB1YmluZm8tPnB1YmFsbHRhYmxlcykKIAkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiLCBBTEwgU0VRVUVOQ0VTIik7CisJCWVsc2UKKwkJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgU0VRVUVOQ0VTIik7CisKKwkJLyogSW5jbHVk ZSBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UgaWYgdGhlcmUgYXJlIGV4Y2VwdF9zZXF1ZW5jZXMu ICovCisJCWZvciAoU2ltcGxlUHRyTGlzdENlbGwgKmNlbGwgPSBwdWJpbmZvLT5leGNlcHRfc2Vx dWVuY2VzLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQorCQl7CisJCQlUYWJsZUluZm8g ICp0YmluZm8gPSAoVGFibGVJbmZvICopIGNlbGwtPnB0cjsKKwkJCWNvbnN0IGNoYXIgKnNlcW5h bWUgPSBmbXRRdWFsaWZpZWREdW1wYWJsZSh0YmluZm8pOworCisJCQlpZiAoKytuX2V4Y2VwdCA9 PSAxKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIEVYQ0VQVCAoU0VRVUVOQ0UgJXMi LCBzZXFuYW1lKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiwgJXMi LCBzZXFuYW1lKTsKKwkJfQorCQlpZiAobl9leGNlcHQgPiAwKQorCQkJYXBwZW5kUFFFeHBCdWZm ZXJDaGFyKHF1ZXJ5LCAnKScpOwogCX0KLQllbHNlIGlmIChwdWJpbmZvLT5wdWJhbGxzZXF1ZW5j ZXMpCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgU0VRVUVOQ0VTIik7 CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBXSVRIIChwdWJsaXNoID0gJyIpOwog CWlmIChwdWJpbmZvLT5wdWJpbnNlcnQpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA1YTY3MjZkOGIxMi4uOGU4 NjlmZTc5MWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjc5LDYgKzY3OSw3IEBAIHR5cGVkZWYgc3RydWN0 IF9QdWJsaWNhdGlvbkluZm8KIAlib29sCQlwdWJ2aWFyb290OwogCVB1Ymxpc2hHZW5jb2xzVHlw ZSBwdWJnZW5jb2xzX3R5cGU7CiAJU2ltcGxlUHRyTGlzdCBleGNlcHRfdGFibGVzOworCVNpbXBs ZVB0ckxpc3QgZXhjZXB0X3NlcXVlbmNlczsKIH0gUHVibGljYXRpb25JbmZvOwogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1 bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCA5MjU4OTQ4YjU4My4uOWEwNjczNTc1ZDIgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0zMjgzLDYgKzMyODMsMjYgQEAgbXkgJXRlc3RzID0g KAogCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKIAl9 LAogCisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMScgPT4geworCQljcmVhdGVfb3JkZXIgPT4g OTIsCisJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBTRVFVRU5DRSB0ZXN0X2V4Y2VwdF9zZXE7CisJ CSAgIENSRUFURSBQVUJMSUNBVElPTiBwdWIxMSBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNF UVVFTkNFIHB1YmxpYy50ZXN0X3RhYmxlX2NvbDFfc2VxLCBwdWJsaWMudGVzdF9leGNlcHRfc2Vx KTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViMTEgRk9S IEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBwdWJsaWMudGVzdF90YWJsZV9jb2wxX3Nl cSwgcHVibGljLnRlc3RfZXhjZXB0X3NlcSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0 ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5z LCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9O IHB1YjEyJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA5MiwKKwkJY3JlYXRlX3NxbCA9PgorCQkg ICdDUkVBVEUgUFVCTElDQVRJT04gcHViMTIgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSBk dW1wX3Rlc3QudGVzdF90YWJsZSksIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBwdWJs aWMudGVzdF90YWJsZV9jb2wxX3NlcSk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRF IFBVQkxJQ0FUSU9OIHB1YjEyIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgT05MWSBkdW1w X3Rlc3QudGVzdF90YWJsZSksIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBwdWJsaWMu dGVzdF90YWJsZV9jb2wxX3NlcSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVs ZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0 aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKIAknQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIx JyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA1MCwKIAkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFNV QlNDUklQVElPTiBzdWIxCkBAIC00MDgyLDYgKzQxMDIsOCBAQCBteSAldGVzdHMgPSAoCiAJfSwK IAogCSdDUkVBVEUgU0VRVUVOQ0UgdGVzdF90YWJsZV9jb2wxX3NlcScgPT4geworCQljcmVhdGVf b3JkZXIgPT4gOTAsCisJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBTRVFVRU5DRSB0ZXN0X3RhYmxl X2NvbDFfc2VxJywKIAkJcmVnZXhwID0+IHFyL14KIAkJCVxRQ1JFQVRFIFNFUVVFTkNFIGR1bXBf dGVzdC50ZXN0X3RhYmxlX2NvbDFfc2VxXEUKIAkJCVxuXHMrXFFBUyBpbnRlZ2VyXEUKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK aW5kZXggZmVmODZiNGNjYTMuLjYzY2I2YTM5NGVmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMTY3Miw3ICsxNjcy LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAl7 CiAJCVBHcmVzdWx0ICAgKnJlc3VsdCA9IE5VTEw7CiAJCXByaW50UXVlcnlPcHQgbXlvcHQgPSBw c2V0LnBvcHQ7Ci0JCWNoYXIJICAgKmZvb3RlcnNbM10gPSB7TlVMTCwgTlVMTCwgTlVMTH07CisJ CWNoYXIJICAgKmZvb3RlcnNbNF0gPSB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH07CiAKIAkJcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgc2VxdWVuY2UgaW5mb3Jt YXRpb24iKSk7CiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCkBAIC0xNzUwLDEyICsxNzUwLDI4 IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCXsK IAkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwKIAkJCQkJCQkgIF8oIkdl dCBwdWJsaWNhdGlvbnMgY29udGFpbmluZyB0aGlzIHNlcXVlbmNlIikpOwotCQkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBwdWJuYW1lIEZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNh dGlvbiBwIgorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBwLnB1Ym5hbWUgRlJP TSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHAiCiAJCQkJCQkJICAiXG5XSEVSRSBwLnB1YmFs bHNlcXVlbmNlcyIKLQkJCQkJCQkgICJcbiBBTkQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19w dWJsaXNoYWJsZSgnJXMnKSIKLQkJCQkJCQkgICJcbk9SREVSIEJZIDEiLAorCQkJCQkJCSAgIlxu IEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpIiwKIAkJCQkJ CQkgIG9pZCk7CiAKKwkJCS8qCisJCQkgKiBTa2lwIGVudHJpZXMgd2hlcmUgdGhpcyBzZXF1ZW5j ZSBhcHBlYXJzIGluIHRoZSBwdWJsaWNhdGlvbidzCisJCQkgKiBFWENFUFQgbGlzdC4KKwkJCSAq LworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMjAwMDAwKQorCQkJeworCQkJCWFwcGVuZFBRRXhw QnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIlxuIEFORCBOT1QgRVhJU1RTICgiCisJCQkJCQkJCSAg IlxuIAlTRUxFQ1QgMSIKKwkJCQkJCQkJICAiXG4gCUZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNh dGlvbl9yZWwgcHIiCisJCQkJCQkJCSAgIlxuIAlXSEVSRSBwci5wcnB1YmlkID0gcC5vaWQgQU5E IgorCQkJCQkJCQkgICJcbiAJcHIucHJyZWxpZCA9ICclcycgQU5EIHByLnByZXhjZXB0KSIsCisJ CQkJCQkJCSAgb2lkKTsKKwkJCX0KKworCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlxuT1JE RVIgQlkgMSIpOworCiAJCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0YSk7CiAJCQlpZiAocmVz dWx0KQogCQkJewpAQCAtMTc4MCw2ICsxNzk2LDQyIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxz KGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQl9CiAJCX0KIAorCQkvKiBQcmludCBwdWJsaWNh dGlvbnMgd2hlcmUgdGhlIHNlcXVlbmNlIGlzIGluIHRoZSBFWENFUFQgY2xhdXNlICovCisJCWlm IChwc2V0LnN2ZXJzaW9uID49IDIwMDAwMCkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1 ZiwKKwkJCQkJCQkgICJTRUxFQ1QgcC5wdWJuYW1lXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRh bG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfcHVi bGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgorCQkJCQkJCSAgIldIRVJF IHByLnBycmVsaWQgPSAnJXMnIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCSAgIk9SREVSIEJZ IDE7Iiwgb2lkKTsKKworCQkJcmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCQkJaWYgKHJl c3VsdCkKKwkJCXsKKwkJCQlpbnQJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsKKworCQkJ CWlmICh0dXBsZXMgPiAwKQorCQkJCXsKKwkJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRtcGJ1Ziwg XygiRXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbnM6IikpOworCisJCQkJCS8qIE1pZ2h0IGJlIGFu IGVtcHR5IHNldCAtIHRoYXQncyBvayAqLworCQkJCQlmb3IgKGkgPSAwOyBpIDwgdHVwbGVzOyBp KyspCisJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmdG1wYnVmLCAiXG4gICAgXCIlc1wiIiwgUFFn ZXR2YWx1ZShyZXN1bHQsIGksIDApKTsKKworCQkJCQlpZiAoZm9vdGVyc1swXSA9PSBOVUxMKQor CQkJCQkJZm9vdGVyc1swXSA9IHBnX3N0cmR1cCh0bXBidWYuZGF0YSk7CisJCQkJCWVsc2UgaWYg KGZvb3RlcnNbMV0gPT0gTlVMTCkKKwkJCQkJCWZvb3RlcnNbMV0gPSBwZ19zdHJkdXAodG1wYnVm LmRhdGEpOworCQkJCQllbHNlCisJCQkJCQlmb290ZXJzWzJdID0gcGdfc3RyZHVwKHRtcGJ1Zi5k YXRhKTsKKwkJCQkJcmVzZXRQUUV4cEJ1ZmZlcigmdG1wYnVmKTsKKwkJCQl9CisKKwkJCQlQUWNs ZWFyKHJlc3VsdCk7CisJCQl9CisJCX0KKwogCQlpZiAodGFibGVpbmZvLnJlbHBlcnNpc3RlbmNl ID09IFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEKQogCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxl LCBfKCJVbmxvZ2dlZCBzZXF1ZW5jZSBcIiVzLiVzXCIiKSwKIAkJCQkJCQkgIHNjaGVtYW5hbWUs IHJlbGF0aW9ubmFtZSk7CkBAIC0xNzk2LDYgKzE4NDgsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0 YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCiAJCXBnX2ZyZWUoZm9vdGVyc1swXSk7CiAJ CXBnX2ZyZWUoZm9vdGVyc1sxXSk7CisJCXBnX2ZyZWUoZm9vdGVyc1syXSk7CiAKIAkJcmV0dmFs ID0gdHJ1ZTsKIAkJZ290byBlcnJvcl9yZXR1cm47CQkvKiBub3QgYW4gZXJyb3IsIGp1c3QgcmV0 dXJuIGVhcmx5ICovCkBAIC02NzI3LDYgKzY3ODAsNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhj b25zdCBjaGFyICpwYXR0ZXJuKQogCQljaGFyCSAgICpwdWJpZCA9IFBRZ2V0dmFsdWUocmVzLCBp LCAwKTsKIAkJY2hhcgkgICAqcHVibmFtZSA9IFBRZ2V0dmFsdWUocmVzLCBpLCAxKTsKIAkJYm9v bAkJcHViYWxsdGFibGVzID0gc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCAzKSwgInQiKSA9PSAw OworCQlib29sCQlwdWJhbGxzZXF1ZW5jZXMgPSBzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIDQp LCAidCIpID09IDA7CiAJCXByaW50VGFibGVPcHQgbXlvcHQgPSBwc2V0LnBvcHQudG9wdDsKIAog CQlpbml0UFFFeHBCdWZmZXIoJnRpdGxlKTsKQEAgLTY3NjMsNyArNjgxNyw3IEBAIGRlc2NyaWJl UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQlwcmludFRhYmxlQWRkQ2VsbCgm Y29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDEwKSwgZmFsc2UsIGZhbHNlKTsKIAkJcHJpbnRUYWJs ZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAxMSksIGZhbHNlLCBmYWxzZSk7CiAK LQkJaWYgKCFwdWJhbGx0YWJsZXMpCisJCWlmICghcHViYWxsdGFibGVzICYmICFwdWJhbGxzZXF1 ZW5jZXMpCiAJCXsKIAkJCS8qIEdldCB0aGUgdGFibGVzIGZvciB0aGUgc3BlY2lmaWVkIHB1Ymxp Y2F0aW9uICovCiAJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsCkBAIC02 ODE3LDcgKzY4NzEsOCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJu KQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCX0KIAkJfQotCQllbHNlCisKKwkJaWYgKHB1 YmFsbHRhYmxlcykKIAkJewogCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQogCQkJewpA QCAtNjgyOSw3ICs2ODg0LDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0 dGVybikKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKIAkJCQkJCQkJ ICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5h bWVzcGFjZVxuIgogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlv bl9yZWwgcHIgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCi0JCQkJCQkJCSAgIldIRVJFIHByLnBy cHViaWQgPSAnJXMnIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCQkgICJXSEVSRSBwci5wcnB1 YmlkID0gJyVzJyBBTkQgcHIucHJleGNlcHQgQU5EIGMucmVsa2luZCBJTiAoJ3InLCdwJylcbiIK IAkJCQkJCQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKIAkJCQlpZiAoIWFkZEZvb3RlclRvUHVi bGljYXRpb25EZXNjKCZidWYsIF8oIkV4Y2VwdCB0YWJsZXM6IiksCiAJCQkJCQkJCQkJCQl0cnVl LCAmY29udCkpCkBAIC02ODM3LDYgKzY4OTIsMjYgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29u c3QgY2hhciAqcGF0dGVybikKIAkJCX0KIAkJfQogCisJCWlmIChwdWJhbGxzZXF1ZW5jZXMpCisJ CXsKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDIwMDAwMCkKKwkJCXsKKwkJCQkvKiBHZXQgc2Vx dWVuY2VzIGluIHRoZSBFWENFUFQgY2xhdXNlIGZvciB0aGlzIHB1YmxpY2F0aW9uICovCisJCQkJ cHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLAorCQkJCQkJCQkgIF8oIkdldCBz ZXF1ZW5jZXMgZXhjbHVkZWQgYnkgdGhpcyBwdWJsaWNhdGlvbiIpKTsKKwkJCQlhcHBlbmRQUUV4 cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lIHx8ICcuJyB8fCBjLnJl bG5hbWVcbiIKKwkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKKwkJCQkJ CQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJl bG5hbWVzcGFjZVxuIgorCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNh dGlvbl9yZWwgcHIgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHBy LnBycHViaWQgPSAnJXMnIEFORCBwci5wcmV4Y2VwdCBBTkQgYy5yZWxraW5kID0gJ1MnXG4iCisJ CQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CisJCQkJaWYgKCFhZGRGb290ZXJUb1B1Ymxp Y2F0aW9uRGVzYygmYnVmLCBfKCJFeGNlcHQgc2VxdWVuY2VzOiIpLAorCQkJCQkJCQkJCQkJdHJ1 ZSwgJmNvbnQpKQorCQkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCX0KKwkJfQorCiAJCXByaW50 VGFibGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKIAkJcHJp bnRUYWJsZUNsZWFudXAoJmNvbnQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggZTRiYzJj OTMxNDUuLjc3YjAzZDdiNTBiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0zNzQ4LDYgKzM3 NDgsMTggQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRF X1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CiAJZWxzZSBpZiAo TWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwg IlRBQkxFUyIsICJFWENFUFQiLCAiKCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0 aChwcmV2X3dkLCAnLCcpKQogCQlDT01QTEVURV9XSVRIKCIpIik7CisJZWxzZSBpZiAoTWF0Y2hl cygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlNFUVVF TkNFUyIpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCBTRVFVRU5DRSIsICJXSVRIICgiKTsK KwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZP UiIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIpKQorCQlDT01QTEVURV9XSVRIKCIoIFNF UVVFTkNFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJGT1IiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIpKQorCQlDT01Q TEVURV9XSVRIKCJTRVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJM SUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIiwg IigiLCAiU0VRVUVOQ0UiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2Zfc2VxdWVuY2VzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElD QVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIsICIo IiwgIlNFUVVFTkNFIiwgTWF0Y2hBbnlOKSAmJiBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJ Q09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zfc2VxdWVuY2VzKTsK KwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZP UiIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIsICIoIiwgIlNFUVVFTkNFIiwgTWF0Y2hB bnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsK IAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZP UiIsICJUQUJMRVMiKSkKIAkJQ09NUExFVEVfV0lUSCgiSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAo TWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEUi LCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5oCmluZGV4IDg5YjRiYjE0ZjYyLi40OWMyOWE4NzYzMCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTc3LDggKzE3Nyw4IEBAIHR5cGVkZWYgZW51 bSBQdWJsaWNhdGlvblBhcnRPcHQKIAogZXh0ZXJuIExpc3QgKkdldEluY2x1ZGVkUHVibGljYXRp b25SZWxhdGlvbnMoT2lkIHB1YmlkLAogCQkJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1 Yl9wYXJ0b3B0KTsKLWV4dGVybiBMaXN0ICpHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKE9p ZCBwdWJpZCwKLQkJCQkJCQkJCQkgIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7Citl eHRlcm4gTGlzdCAqR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsCisJ CQkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwogZXh0ZXJuIExpc3Qg KkdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKIGV4dGVybiBMaXN0ICpHZXRBbGxQdWJs aWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290 KTsKIGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKTsKQEAgLTIw MCw3ICsyMDAsOCBAQCBleHRlcm4gYm9vbCBjaGVja19hbmRfZmV0Y2hfY29sdW1uX2xpc3QoUHVi bGljYXRpb24gKnB1YiwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCU1lbW9yeUNvbnRleHQgbWN4dCwg Qml0bWFwc2V0ICoqY29scyk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRf cmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkJCQkJCQkJCQkJ ICBib29sIGlmX25vdF9leGlzdHMsCi0JCQkJCQkJCQkJCSAgQWx0ZXJQdWJsaWNhdGlvblN0bXQg KmFsdGVyX3N0bXQpOworCQkJCQkJCQkJCQkgIEFsdGVyUHVibGljYXRpb25TdG10ICphbHRlcl9z dG10LAorCQkJCQkJCQkJCQkgIGNoYXIgcHVicmVsa2luZCk7CiBleHRlcm4gQml0bWFwc2V0ICpw dWJfY29sbGlzdF92YWxpZGF0ZShSZWxhdGlvbiB0YXJnZXRyZWwsIExpc3QgKmNvbHVtbnMpOwog ZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9p ZCBzY2hlbWFpZCwKIAkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaAppbmRleCBlMDM1NTYzOTlhYi4uMjQ2YmQ0NGU2YWMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKQEAgLTQ0NjEsMTQgKzQ0NjEsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJUU0NvbmZp Z3VyYXRpb25TdG10CiAJYm9vbAkJbWlzc2luZ19vazsJCS8qIGZvciBEUk9QIC0gc2tpcCBlcnJv ciBpZiBtaXNzaW5nPyAqLwogfSBBbHRlclRTQ29uZmlndXJhdGlvblN0bXQ7CiAKLXR5cGVkZWYg c3RydWN0IFB1YmxpY2F0aW9uVGFibGUKK3R5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uUmVsYXRp b24KIHsKIAlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcHVibGlj YXRpb24gcmVsYXRpb24gKi8KLQlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlv bnMgKi8KKwlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHB1YmxpY2F0aW9uIHRhYmxlL3NlcXVl bmNlICovCisJTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zIGZvciBwdWJs aWNhdGlvbiB0YWJsZSAqLwogCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBMaXN0IG9mIGNvbHVtbnMg aW4gYSBwdWJsaWNhdGlvbiB0YWJsZSAqLwogCWJvb2wJCWV4Y2VwdDsJCQkvKiBUcnVlIGlmIGxp c3RlZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSAqLwotfSBQdWJsaWNhdGlvblRhYmxlOworfSBQdWJs aWNhdGlvblJlbGF0aW9uOwogCiAvKgogICogUHVibGljYXRpb24gb2JqZWN0IHR5cGUKQEAgLTQ0 NzcsNiArNDQ3Nyw3IEBAIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlCiB7CiAJ UFVCTElDQVRJT05PQkpfVEFCTEUsCQkvKiBBIHRhYmxlICovCiAJUFVCTElDQVRJT05PQkpfRVhD RVBUX1RBQkxFLAkvKiBBIHRhYmxlIGluIHRoZSBFWENFUFQgY2xhdXNlICovCisJUFVCTElDQVRJ T05PQkpfRVhDRVBUX1NFUVVFTkNFLCAvKiBBIHNlcXVlbmNlIGluIHRoZSBFWENFUFQgY2xhdXNl ICovCiAJUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSwJLyogQWxsIHRhYmxlcyBpbiBz Y2hlbWEgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVNQSwJLyogQWxsIHRh YmxlcyBpbiBmaXJzdCBlbGVtZW50IG9mCiAJCQkJCQkJCQkJCSAqIHNlYXJjaF9wYXRoICovCkBA IC00NDg4LDcgKzQ0ODksNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbk9ialNwZWMKIAlO b2RlVGFnCQl0eXBlOwogCVB1YmxpY2F0aW9uT2JqU3BlY1R5cGUgcHVib2JqdHlwZTsJLyogdHlw ZSBvZiB0aGlzIHB1YmxpY2F0aW9uIG9iamVjdCAqLwogCWNoYXIJICAgKm5hbWU7Ci0JUHVibGlj YXRpb25UYWJsZSAqcHVidGFibGU7CisJUHVibGljYXRpb25SZWxhdGlvbiAqcHVicmVsYXRpb247 CiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93 biAqLwogfSBQdWJsaWNhdGlvbk9ialNwZWM7CiAKQEAgLTQ1MDUsNyArNDUwNiw5IEBAIHR5cGVk ZWYgc3RydWN0IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogewogCU5vZGVUYWcJCXR5cGU7CiAJUHVi bGljYXRpb25BbGxPYmpUeXBlIHB1Ym9ianR5cGU7CS8qIHR5cGUgb2YgdGhpcyBwdWJsaWNhdGlv biBvYmplY3QgKi8KLQlMaXN0CSAgICpleGNlcHRfdGFibGVzOwkvKiB0YWJsZXMgc3BlY2lmaWVk IGluIHRoZSBFWENFUFQgY2xhdXNlICovCisJTGlzdAkgICAqZXhjZXB0X3JlbGF0aW9uczsJLyog ZGVwZW5kaW5nIG9uIHRoZSAncHVib2JqdHlwZScsIHRoaXMgaXMKKwkJCQkJCQkJCSAqIGEgbGlz dCBvZiBlaXRoZXIgdGFibGVzIG9yIHNlcXVlbmNlcworCQkJCQkJCQkJICogc3BlY2lmaWVkIGlu IHRoZSBFWENFUFQgY2xhdXNlICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2Nh dGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQdWJsaWNhdGlvbkFsbE9ialNwZWM7CiAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggMjllNTRiMjE0YTAu LjY0NDJiODdkMDM4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1Ymxp Y2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91 dApAQCAtNDU4LDcgKzQ1OCw3IEBAIEV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb25zOgogTnVtYmVy IG9mIHBhcnRpdGlvbnM6IDEgKFVzZSBcZCsgdG8gbGlzdCB0aGVtLikKIAogQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRlc3RwdWI5IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl9wYXJ0 MSk7Ci1FUlJPUjogIGNhbm5vdCBzcGVjaWZ5IHJlbGF0aW9uICJwdWJsaWMudGVzdHB1Yl9wYXJ0 MSIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UKK0VSUk9SOiAgY2Fubm90IHNwZWNp ZnkgInB1YmxpYy50ZXN0cHViX3BhcnQxIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIChUQUJM RSkgY2xhdXNlCiBERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBp bmRpdmlkdWFsIHBhcnRpdGlvbnMuCiBDUkVBVEUgVEFCTEUgdGFiX21haW4gKGEgaW50KSBQQVJU SVRJT04gQlkgUkFOR0UoYSk7CiAtLSBBdHRhY2hpbmcgYSBwYXJ0aXRpb24gaXMgbm90IGFsbG93 ZWQgaWYgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGFwcGVhcnMgaW4gYQpAQCAtNDcxLDggKzQ3MSw5 IEBAIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwg dGVzdHB1Yl9wYXJ0MSwgdGFiX21haW47CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4OwogLS0t IFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKLUNSRUFURSBTRVFVRU5DRSBy ZWdyZXNzX3B1Yl9zZXEwOwotQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3Nl cTE7CitDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19zZXEwOworQ1JFQVRFIFNFUVVFTkNFIHB1Yl90 ZXN0LnJlZ3Jlc3Nfc2VxMTsKK0NSRUFURSBTRVFVRU5DRSByZWdyZXNzX3NlcTI7CiAtLSBGT1Ig QUxMIFNFUVVFTkNFUwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRF IFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczEgRk9SIEFMTCBTRVFVRU5D RVM7CkBAIC00ODMsOCArNDg0LDggQEAgU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcywgcHVi YWxsc2VxdWVuY2VzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZQogIHJlZ3Jlc3Nf cHViX2ZvcmFsbHNlcXVlbmNlczEgfCBmICAgICAgICAgICAgfCB0CiAoMSByb3cpCiAKLVxkKyBy ZWdyZXNzX3B1Yl9zZXEwCi0gICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1YmxpYy5y ZWdyZXNzX3B1Yl9zZXEwIgorXGQrIHJlZ3Jlc3Nfc2VxMAorICAgICAgICAgICAgICAgICAgICAg ICAgU2VxdWVuY2UgInB1YmxpYy5yZWdyZXNzX3NlcTAiCiAgIFR5cGUgIHwgU3RhcnQgfCBNaW5p bXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAK IC0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLQogIGJpZ2ludCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMz NzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKQEAgLTUwMiw4ICs1 MDMsOCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElD QVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMiBGT1IgQUxMIFNFUVVFTkNFUzsKIFJF U0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAtLSBjaGVjayB0aGF0IGRlc2NyaWJlIHNlcXVlbmNl IGxpc3RzIGJvdGggcHVibGljYXRpb25zIHRoZSBzZXF1ZW5jZSBiZWxvbmdzIHRvCi1cZCsgcHVi X3Rlc3QucmVncmVzc19wdWJfc2VxMQotICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1 Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTEiCitcZCsgcHViX3Rlc3QucmVncmVzc19zZXExCisgICAg ICAgICAgICAgICAgICAgICAgIFNlcXVlbmNlICJwdWJfdGVzdC5yZWdyZXNzX3NlcTEiCiAgIFR5 cGUgIHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8 IEN5Y2xlcz8gfCBDYWNoZSAKIC0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQogIGJpZ2ludCB8ICAgICAx IHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwg ICAgIDEKQEAgLTUzNCwxMCArNTM1LDkyIEBAIFNFTEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMs IHB1YmFsbHNlcXVlbmNlcyBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWUKICByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQgICAg ICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IHN0b3JlZCAgICAgICAgICAgIHwg ZiAgICAgICAgfCAKICgxIHJvdykKIAotRFJPUCBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwLCBw dWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExOworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgY2xhdXNlIHRlc3RzIGZvciBzZXF1ZW5jZXMKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zv cmFsbHNlcXVlbmNlc19leGNlcHQgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBy ZWdyZXNzX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3Nfc2VxMSwgU0VRVUVOQ0UgcmVncmVzc19zZXEy KTsKK1xkUnArIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHJlZ3Jlc3Nf cHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK0V4Y2VwdCBz ZXF1ZW5jZXM6CisgICAgInB1Yl90ZXN0LnJlZ3Jlc3Nfc2VxMSIKKyAgICAicHVibGljLnJlZ3Jl c3Nfc2VxMCIKKyAgICAicHVibGljLnJlZ3Jlc3Nfc2VxMiIKKworLS0gQ2hlY2sgdGhhdCB0aGUg c2VxdWVuY2UgZGVzY3JpcHRpb24gc2hvd3MgdGhlIHB1YmxpY2F0aW9ucyB3aGVyZSBpdCBpcyBs aXN0ZWQKKy0tIGluIHRoZSBFWENFUFQgY2xhdXNlCitcZCsgcmVncmVzc19zZXEwCisgICAgICAg ICAgICAgICAgICAgICAgICBTZXF1ZW5jZSAicHVibGljLnJlZ3Jlc3Nfc2VxMCIKKyAgVHlwZSAg fCBTdGFydCB8IE1pbmltdW0gfCAgICAgICBNYXhpbXVtICAgICAgIHwgSW5jcmVtZW50IHwgQ3lj bGVzPyB8IENhY2hlIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEgfCAg ICAgICAxIHwgOTIyMzM3MjAzNjg1NDc3NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAg MQorSW5jbHVkZWQgaW4gcHVibGljYXRpb25zOgorICAgICJyZWdyZXNzX3B1Yl9mb3JfYWxsc2Vx dWVuY2VzX2FsbHRhYmxlcyIKKyAgICAicmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMSIKKyAg ICAicmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMiIKK0V4Y2x1ZGVkIGZyb20gcHVibGljYXRp b25zOgorICAgICJyZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0IgorCistLSBWZXJp ZnkgdGhhdCBhbiBleGNsdWRlZCBzZXF1ZW5jZSByZW1haW5zIGV4Y2x1ZGVkIGFmdGVyIGJlaW5n IG1vdmVkIHRvCistLSBhbm90aGVyIHNjaGVtYS4KK0FMVEVSIFNFUVVFTkNFIHJlZ3Jlc3Nfc2Vx MiBTRVQgU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2Vz X2V4Y2VwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2VwdAorICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEg cm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBm ICAgICAgICB8IAorRXhjZXB0IHNlcXVlbmNlczoKKyAgICAicHViX3Rlc3QucmVncmVzc19zZXEx IgorICAgICJwdWJfdGVzdC5yZWdyZXNzX3NlcTIiCisgICAgInB1YmxpYy5yZWdyZXNzX3NlcTAi CisKKy0tIFRlc3QgY29tYmluYXRpb24gb2YgQUxMIFNFUVVFTkNFUyBhbmQgQUxMIFRBQkxFUyB3 aXRoIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RhYjEoYSBpbnQpOworQ1JF QVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzX2V4 Y2VwdCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3NfdGFiMSksIEFMTCBTRVFV RU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3NlcTApOworXGRScCsgcmVncmVzc19wdWJf Zm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXNfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVu Y2VzX2FsbHRhYmxlc19leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAg ICAgICAgIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK0V4Y2VwdCB0YWJsZXM6 CisgICAgInB1YmxpYy5yZWdyZXNzX3RhYjEiCitFeGNlcHQgc2VxdWVuY2VzOgorICAgICJwdWJs aWMucmVncmVzc19zZXEwIgorCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworLS0gZmFpbCAt IGZpcnN0IHNlcXVlbmNlIGluIHRoZSBFWENFUFQgbGlzdCBzaG91bGQgdXNlIFNFUVVFTkNFIGtl eXdvcmQKK0NSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9zaG91bGRfZmFpbCBGT1IgQUxM IFRBQkxFUyBFWENFUFQgKHJlZ3Jlc3Nfc2VxMCwgcHViX3Rlc3QucmVncmVzc19zZXExKTsKK0VS Uk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgInJlZ3Jlc3Nfc2VxMCIKK0xJTkUgMTogLi4u T04gcmVncmVzc19wdWJfc2hvdWxkX2ZhaWwgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChyZWdyZXNz X3NlLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS0gZmFpbCAtIHVubG9nZ2VkIHNlcXVlbmNlIGlzIHNwZWNpZmllZCBp biBFWENFUFQgc2VxdWVuY2UgbGlzdAorQ1JFQVRFIFVOTE9HR0VEIFNFUVVFTkNFIHJlZ3Jlc3Nf c2VxX3VubG9nZ2VkOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWls IEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19zZXFfdW5sb2dnZWQp OworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnJlZ3Jlc3Nfc2VxX3VubG9nZ2VkIiBp biB0aGUgcHVibGljYXRpb24gRVhDRVBUIChTRVFVRU5DRSkgY2xhdXNlCitERVRBSUw6ICBUaGlz IG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB1bmxvZ2dlZCBzZXF1ZW5jZXMuCistLSBm YWlsIC0gdGVtcG9yYXJ5IHNlcXVlbmNlIGlzIHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2Ug bGlzdAorQ1JFQVRFIFRFTVBPUkFSWSBTRVFVRU5DRSByZWdyZXNzX3NlcV90ZW1wOworQ1JFQVRF IFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWlsIEZPUiBBTEwgU0VRVUVOQ0VTIEVY Q0VQVCAoU0VRVUVOQ0UgcmVncmVzc19zZXFfdGVtcCk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5 ICJwZ190ZW1wLnJlZ3Jlc3Nfc2VxX3RlbXAiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNF UVVFTkNFKSBjbGF1c2UKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQg Zm9yIHRlbXBvcmFyeSBzZXF1ZW5jZXMuCistLSBmYWlsIC0gc2VxdWVuY2Ugb2JqZWN0IGlzIHNw ZWNpZmllZCBpbiBFWENFUFQgdGFibGUgbGlzdAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3Nf cHViX3Nob3VsZF9mYWlsIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgcmVncmVzc19zZXEw KTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1YmxpYy5yZWdyZXNzX3NlcTAiIGluIHRoZSBw dWJsaWNhdGlvbiBFWENFUFQgKFRBQkxFKSBjbGF1c2UKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9u IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHNlcXVlbmNlcy4KKy0tIGZhaWwgLSB0YWJsZSBvYmplY3Qg aXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5jZSBsaXN0CitDUkVBVEUgUFVCTElDQVRJT04g cmVncmVzc19wdWJfc2hvdWxkX2ZhaWwgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5D RSByZWdyZXNzX3RhYjEpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnJlZ3Jlc3Nf dGFiMSIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoU0VRVUVOQ0UpIGNsYXVzZQorREVUQUlM OiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGVzLgorRFJPUCBTRVFV RU5DRSByZWdyZXNzX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3Nfc2VxMSwgcHViX3Rlc3QucmVncmVz c19zZXEyLCByZWdyZXNzX3NlcV91bmxvZ2dlZCwgcmVncmVzc19zZXFfdGVtcDsKIERST1AgUFVC TElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMTsKIERST1AgUFVCTElDQVRJT04g cmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMjsKK0RST1AgUFVCTElDQVRJT04gcmVncmVzc19w dWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2VwdDsKIERST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJf Zm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXM7CitEUk9QIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHVi X2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzX2V4Y2VwdDsKK0RST1AgVEFCTEUgcmVncmVzc190 YWIxOwogLS0gZmFpbCAtIFNwZWNpZnlpbmcgQUxMIFRBQkxFUyBtb3JlIHRoYW4gb25jZQogQ1JF QVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzIEZP UiBBTEwgU0VRVUVOQ0VTLCBBTEwgVEFCTEVTLCBBTEwgVEFCTEVTOwogRVJST1I6ICBpbnZhbGlk IHB1YmxpY2F0aW9uIG9iamVjdCBsaXN0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwK aW5kZXggMDQxZTE0YTRkZTYuLjExYzIwZTY1MTQzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGlj YXRpb24uc3FsCkBAIC0yMjEsOCArMjIxLDkgQEAgRFJPUCBUQUJMRSB0ZXN0cHViX3Jvb3QsIHRl c3RwdWJfcGFydDEsIHRhYl9tYWluOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViODsKIAogLS0t IFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKLUNSRUFURSBTRVFVRU5DRSBy ZWdyZXNzX3B1Yl9zZXEwOwotQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3Nl cTE7CitDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19zZXEwOworQ1JFQVRFIFNFUVVFTkNFIHB1Yl90 ZXN0LnJlZ3Jlc3Nfc2VxMTsKK0NSRUFURSBTRVFVRU5DRSByZWdyZXNzX3NlcTI7CiAKIC0tIEZP UiBBTEwgU0VRVUVOQ0VTCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CkBAIC0y MzAsNyArMjMxLDcgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVl bmNlczEgRk9SIEFMTCBTRVFVRU5DRVM7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogCiBT RUxFQ1QgcHVibmFtZSwgcHViYWxsdGFibGVzLCBwdWJhbGxzZXF1ZW5jZXMgRlJPTSBwZ19wdWJs aWNhdGlvbiBXSEVSRSBwdWJuYW1lID0gJ3JlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczEnOwot XGQrIHJlZ3Jlc3NfcHViX3NlcTAKK1xkKyByZWdyZXNzX3NlcTAKIFxkUnArIHJlZ3Jlc3NfcHVi X2ZvcmFsbHNlcXVlbmNlczEKIAogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwpA QCAtMjM4LDcgKzIzOSw3IEBAIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxz ZXF1ZW5jZXMyIEZPUiBBTEwgU0VRVUVOQ0VTOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsK IAogLS0gY2hlY2sgdGhhdCBkZXNjcmliZSBzZXF1ZW5jZSBsaXN0cyBib3RoIHB1YmxpY2F0aW9u cyB0aGUgc2VxdWVuY2UgYmVsb25ncyB0bwotXGQrIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTEK K1xkKyBwdWJfdGVzdC5yZWdyZXNzX3NlcTEKIAogLS0tIFNwZWNpZnlpbmcgYm90aCBBTEwgVEFC TEVTIGFuZCBBTEwgU0VRVUVOQ0VTCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7 CkBAIC0yNTMsMTAgKzI1NCw1MSBAQCBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogU0VMRUNU IHB1Ym5hbWUsIHB1YmFsbHRhYmxlcywgcHViYWxsc2VxdWVuY2VzIEZST00gcGdfcHVibGljYXRp b24gV0hFUkUgcHVibmFtZSA9ICdyZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxl cyc7CiBcZFJwKyByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlcwogCi1EUk9Q IFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7Cist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIEVYQ0VQVCBj bGF1c2UgdGVzdHMgZm9yIHNlcXVlbmNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVB VEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2VwdCBGT1IgQUxM IFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxMCwgcHViX3Rlc3QucmVncmVz c19zZXExLCBTRVFVRU5DRSByZWdyZXNzX3NlcTIpOworXGRScCsgcmVncmVzc19wdWJfZm9yYWxs c2VxdWVuY2VzX2V4Y2VwdAorLS0gQ2hlY2sgdGhhdCB0aGUgc2VxdWVuY2UgZGVzY3JpcHRpb24g c2hvd3MgdGhlIHB1YmxpY2F0aW9ucyB3aGVyZSBpdCBpcyBsaXN0ZWQKKy0tIGluIHRoZSBFWENF UFQgY2xhdXNlCitcZCsgcmVncmVzc19zZXEwCisKKy0tIFZlcmlmeSB0aGF0IGFuIGV4Y2x1ZGVk IHNlcXVlbmNlIHJlbWFpbnMgZXhjbHVkZWQgYWZ0ZXIgYmVpbmcgbW92ZWQgdG8KKy0tIGFub3Ro ZXIgc2NoZW1hLgorQUxURVIgU0VRVUVOQ0UgcmVncmVzc19zZXEyIFNFVCBTQ0hFTUEgcHViX3Rl c3Q7CitcZFJwKyByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0CisKKy0tIFRlc3Qg Y29tYmluYXRpb24gb2YgQUxMIFNFUVVFTkNFUyBhbmQgQUxMIFRBQkxFUyB3aXRoIEVYQ0VQVCBj bGF1c2UKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RhYjEoYSBpbnQpOworQ1JFQVRFIFBVQkxJQ0FU SU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzX2V4Y2VwdCBGT1IgQUxM IFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3NfdGFiMSksIEFMTCBTRVFVRU5DRVMgRVhDRVBU IChTRVFVRU5DRSByZWdyZXNzX3NlcTApOworXGRScCsgcmVncmVzc19wdWJfZm9yX2FsbHNlcXVl bmNlc19hbGx0YWJsZXNfZXhjZXB0CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworCistLSBm YWlsIC0gZmlyc3Qgc2VxdWVuY2UgaW4gdGhlIEVYQ0VQVCBsaXN0IHNob3VsZCB1c2UgU0VRVUVO Q0Uga2V5d29yZAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWlsIEZP UiBBTEwgVEFCTEVTIEVYQ0VQVCAocmVncmVzc19zZXEwLCBwdWJfdGVzdC5yZWdyZXNzX3NlcTEp OworCistLSBmYWlsIC0gdW5sb2dnZWQgc2VxdWVuY2UgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBz ZXF1ZW5jZSBsaXN0CitDUkVBVEUgVU5MT0dHRUQgU0VRVUVOQ0UgcmVncmVzc19zZXFfdW5sb2dn ZWQ7CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfc2hvdWxkX2ZhaWwgRk9SIEFMTCBT RVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3NlcV91bmxvZ2dlZCk7CisKKy0tIGZh aWwgLSB0ZW1wb3Jhcnkgc2VxdWVuY2UgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5jZSBs aXN0CitDUkVBVEUgVEVNUE9SQVJZIFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxX3RlbXA7CitDUkVBVEUg UFVCTElDQVRJT04gcmVncmVzc19wdWJfc2hvdWxkX2ZhaWwgRk9SIEFMTCBTRVFVRU5DRVMgRVhD RVBUIChTRVFVRU5DRSByZWdyZXNzX3NlcV90ZW1wKTsKKworLS0gZmFpbCAtIHNlcXVlbmNlIG9i amVjdCBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIHRhYmxlIGxpc3QKK0NSRUFURSBQVUJMSUNBVElP TiByZWdyZXNzX3B1Yl9zaG91bGRfZmFpbCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJl Z3Jlc3Nfc2VxMCk7CisKKy0tIGZhaWwgLSB0YWJsZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVY Q0VQVCBzZXF1ZW5jZSBsaXN0CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfc2hvdWxk X2ZhaWwgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3RhYjEpOwor CitEUk9QIFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxMCwgcHViX3Rlc3QucmVncmVzc19zZXExLCBwdWJf dGVzdC5yZWdyZXNzX3NlcTIsIHJlZ3Jlc3Nfc2VxX3VubG9nZ2VkLCByZWdyZXNzX3NlcV90ZW1w OwogRFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMxOwogRFJPUCBQ VUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMyOworRFJPUCBQVUJMSUNBVElP TiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0OwogRFJPUCBQVUJMSUNBVElPTiBy ZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczsKK0RST1AgUFVCTElDQVRJT04g cmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXNfZXhjZXB0OworRFJPUCBUQUJM RSByZWdyZXNzX3RhYjE7CiAKIC0tIGZhaWwgLSBTcGVjaWZ5aW5nIEFMTCBUQUJMRVMgbW9yZSB0 aGFuIG9uY2UKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2Vz X2FsbHRhYmxlcyBGT1IgQUxMIFNFUVVFTkNFUywgQUxMIFRBQkxFUywgQUxMIFRBQkxFUzsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCmluZGV4IDhjNThkMjgyZWVlLi5jMzVlZjk0 MDNlZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCkBAIC0yODIsNiArMjgy LDg1IEBAICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJT Q1JJUFRJT04gdGFwX3N1YicpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjEnKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CiAKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhDRVBUIGNsYXVzZSB0 ZXN0IGNhc2VzIGZvciBzZXF1ZW5jZXMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxICgKKwlDUkVBVEUgVEFCTEUgc2VxX3Rlc3QgKHYgQklHSU5UKTsKKwlDUkVBVEUgU0VRVUVO Q0Ugc2VxX2V4Y2x1ZGVkX2luX3B1YjE7CisJQ1JFQVRFIFNFUVVFTkNFIHNlcV9leGNsdWRlZF9p bl9wdWIyOworCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdzZXFfZXhjbHVk ZWRfaW5fcHViMScpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlJTlNFUlQgSU5UTyBz ZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgnc2VxX2V4Y2x1ZGVkX2luX3B1YjInKSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLDEwMCk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfYWxsX3NlcV9l eGNlcHQxIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ugc2VxX2V4Y2x1ZGVkX2lu X3B1YjEpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXEoCisJQ1JFQVRFIFNFUVVFTkNFIHNlcV9leGNsdWRlZF9pbl9wdWIxOworCUNSRUFURSBTRVFV RU5DRSBzZXFfZXhjbHVkZWRfaW5fcHViMjsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJf YWxsX3NlcV9leGNlcHQgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElP TiB0YXBfcHViX2FsbF9zZXFfZXhjZXB0MTsKKykpOworCisjIFdhaXQgZm9yIGluaXRpYWwgc3lu YyB0byBmaW5pc2gKK215ICRzeW5jZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEpID0gMCBG Uk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdyJyk7IjsK KyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9x dWVyeSkKKyAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0 byBzeW5jaHJvbml6ZSBkYXRhIjsKKworIyBDaGVjayB0aGUgaW5pdGlhbCBkYXRhIG9uIHN1YnNj cmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHNlcV9leGNsdWRlZF9pbl9wdWIx Iik7CitpcygkcmVzdWx0LCAnMXxmJywgJ3NlcXVlbmNlcyBpbiB0aGUgRVhDRVBUIGxpc3QgYXJl IGV4Y2x1ZGVkJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHNlcV9leGNsdWRl ZF9pbl9wdWIyIik7CitpcygkcmVzdWx0LCAnMTAwfHQnLCAnaW5pdGlhbCB0ZXN0IGRhdGEgcmVw bGljYXRlZCBmb3Igc2VxX2V4Y2x1ZGVkX2luX3B1YjInKTsKKworIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0IHdoZW4gYSBzdWJzY3JpcHRpb24g aXMgc3Vic2NyaWJpbmcgdG8gbXVsdGlwbGUgcHVibGljYXRpb25zCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZh bCgnc2VxX2V4Y2x1ZGVkX2luX3B1YjEnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJ SU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3NlcV9leGNsdWRlZF9pbl9wdWIy JykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworCUNSRUFURSBQVUJMSUNBVElPTiB0YXBf cHViX2FsbF9zZXFfZXhjZXB0MiBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHNl cV9leGNsdWRlZF9pbl9wdWIyKTsKKykpOworCisjIFN1YnNjcmliZSB0byBtdWx0aXBsZSBwdWJs aWNhdGlvbnMgd2l0aCBkaWZmZXJlbnQgRVhDRVBUIHNlcXVlbmNlIGxpc3RzCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgU1VCU0NSSVBUSU9O IHRhcF9zdWJfYWxsX3NlcV9leGNlcHQgU0VUIFBVQkxJQ0FUSU9OIHRhcF9wdWJfYWxsX3NlcV9l eGNlcHQxLCB0YXBfcHViX2FsbF9zZXFfZXhjZXB0MjsKKwlBTFRFUiBTVUJTQ1JJUFRJT04gdGFw X3N1Yl9hbGxfc2VxX2V4Y2VwdCBSRUZSRVNIIFNFUVVFTkNFUzsKKykpOworJHN5bmNlZF9xdWVy eSA9CisgICJTRUxFQ1QgY291bnQoMSkgPSAwIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBXSEVS RSBzcnN1YnN0YXRlIE5PVCBJTiAoJ3InKTsiOworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVy eV91bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBvciBkaWUgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOworCisjIHNl cV9leGNsdWRlZF9pbl9wdWIxIGlzIGV4Y2x1ZGVkIGluIHRhcF9wdWJfYWxsX3NlcV9leGNlcHQx IGJ1dCBpbmNsdWRlZCBpbgorIyB0YXBfcHViX2FsbF9zZXFfZXhjZXB0Miwgc28gb3ZlcmFsbCB0 aGUgc3Vic2NyaXB0aW9uIHRyZWF0cyBpdCBhcyBpbmNsdWRlZC4KKyRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGxhc3RfdmFsdWUsIGlz X2NhbGxlZCBGUk9NIHNlcV9leGNsdWRlZF9pbl9wdWIxIik7CitpcygkcmVzdWx0LCAnMjAwfHQn LAorCSdjaGVjayByZXBsaWNhdGlvbiBvZiBhIHNlcXVlbmNlIGluIHRoZSBFWENFUFQgY2xhdXNl IG9mIG9uZSBwdWJsaWNhdGlvbiBidXQgaW5jbHVkZWQgYnkgYW5vdGhlcicKKyk7CisKKyMgc2Vx X2V4Y2x1ZGVkX2luX3B1YjIgaXMgZXhjbHVkZWQgaW4gdGFwX3B1Yl9hbGxfc2VxX2V4Y2VwdDIg YnV0IGluY2x1ZGVkIGluCisjIHRhcF9wdWJfYWxsX3NlcV9leGNlcHQxLCBzbyBvdmVyYWxsIHRo ZSBzdWJzY3JpcHRpb24gdHJlYXRzIGl0IGFzIGluY2x1ZGVkLgorJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgbGFzdF92YWx1ZSwgaXNf Y2FsbGVkIEZST00gc2VxX2V4Y2x1ZGVkX2luX3B1YjIiKTsKK2lzKCRyZXN1bHQsICcyMDB8dCcs CisJJ2NoZWNrIHJlcGxpY2F0aW9uIG9mIGEgc2VxdWVuY2UgaW4gdGhlIEVYQ0VQVCBjbGF1c2Ug b2Ygb25lIHB1YmxpY2F0aW9uIGJ1dCBpbmNsdWRlZCBieSBhbm90aGVyJworKTsKKworIyBDbGVh bnVwCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwknRFJPUCBTVUJT Q1JJUFRJT04gdGFwX3N1Yl9hbGxfc2VxX2V4Y2VwdCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwknRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX2FsbF9zZXFfZXhj ZXB0MScpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwknRFJPUCBQ VUJMSUNBVElPTiB0YXBfcHViX2FsbF9zZXFfZXhjZXB0MicpOworCiAkbm9kZV9wdWJsaXNoZXIt PnN0b3AoJ2Zhc3QnKTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CmluZGV4IDExN2U3Mzc5ZjEwLi4wOGFlZTRiNDkzMyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKQEAgLTI0NzUsOCArMjQ3NSw4IEBAIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUKIFB1YmxpY2F0 aW9uUGFydE9wdAogUHVibGljYXRpb25SZWxJbmZvCiBQdWJsaWNhdGlvblJlbEtpbmQKK1B1Ymxp Y2F0aW9uUmVsYXRpb24KIFB1YmxpY2F0aW9uU2NoZW1hSW5mbwotUHVibGljYXRpb25UYWJsZQog UHVibGlzaEdlbmNvbHNUeXBlCiBQdWxsRmlsdGVyCiBQdWxsRmlsdGVyT3BzCi0tIAoyLjM0LjEK Cg== --000000000000e9ccfc0655b1d2bd Content-Type: application/octet-stream; name="v18-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLIC.patch" Content-Disposition: attachment; filename="v18-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLIC.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr4r0z2w1 RnJvbSAwOTRmZGJmNDU5OGM3NGU2NzU0OTI5YWQ2ODZkYzk4ZGE5MTQ3YTRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMSBKdWwgMjAyNiAxMjoxMjo0NyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjE4 IDIvMl0gU3VwcG9ydCBFWENFUFQgZm9yIEFMTCBTRVFVRU5DRVMgaW4gQUxURVIgUFVCTElDQVRJ T04KCkV4dGVuZCBBTFRFUiBQVUJMSUNBVElPTiB0byBzdXBwb3J0IGFuIEVYQ0VQVCBjbGF1c2Ug d2hlbiB1c2luZwpBTEwgU0VRVUVOQ0VTLCBhbGxvd2luZyBzcGVjaWZpYyBzZXF1ZW5jZXMgdG8g YmUgZXhjbHVkZWQgZnJvbSB0aGUKcHVibGljYXRpb24uCgpJZiB0aGUgRVhDRVBUIGNsYXVzZSBp cyBzcGVjaWZpZWQsIHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlzdCBmb3IgdGhlCnB1YmxpY2F0 aW9uIGlzIHJlcGxhY2VkIHdpdGggdGhlIHByb3ZpZGVkIHNlcXVlbmNlcy4gSWYgdGhlIEVYQ0VQ VApjbGF1c2UgaXMgb21pdHRlZCwgYW55IGV4aXN0aW5nIGV4Y2x1c2lvbnMgZm9yIHNlcXVlbmNl cyBhcmUgY2xlYXJlZC4KCkV4YW1wbGU6CgogIEFMVEVSIFBVQkxJQ0FUSU9OIHB1YjEgU0VUIEFM TCBTRVFVRU5DRVM7CgpUaGlzIGNsZWFycyBhbnkgZXhpc3Rpbmcgc2VxdWVuY2UgZXhjbHVzaW9u cyBmb3IgdGhlIHB1YmxpY2F0aW9uLgoKICBBTFRFUiBQVUJMSUNBVElPTiBwdWIxIFNFVCBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgczEsIHMyKTsKClRoaXMgc2V0cyB0aGUgZXhjbHVz aW9uIGxpc3QgdG8gdGhlIHNwZWNpZmllZCBzZXF1ZW5jZXMuCi0tLQogZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sICAgfCAgNTEgKysrLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgMzYgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYyAgICB8IDI2OCArKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgfCAgMTQgKysKIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHVibGljYXRpb24uaCAgICAgIHwgICA2ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3B1YmxpY2F0aW9uLm91dCB8ICAzNSArKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbCAgICAgIHwgIDEzICsrCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhj ZXB0LnBsICAgICB8ICAxNCArKwogOSBmaWxlcyBjaGFuZ2VkLCAyODYgaW5zZXJ0aW9ucygrKSwg MTUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVi bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbApp bmRleCA1MjExNGExNmEzOS4uZDgyZmYzMDc5ZGIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1 YmxpY2F0aW9uLnNnbWwKQEAgLTM2LDcgKzM2LDcgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIK IDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9h bGxfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgQUxMIFRB QkxFUyBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFi bGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCi0gICAgQUxMIFNFUVVFTkNFUwor ICAgIEFMTCBTRVFVRU5DRVMgWyBFWENFUFQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZXhjZXB0X3NlcXVlbmNlX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQogCiA8 cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fZHJv cF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAgLTU0LDYgKzU0 LDEwIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u YW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+ CiAKICAgIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAqIF0KKworPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmV4Y2VwdF9zZXF1ZW5jZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFz ZT4KKworICAgIFNFUVVFTkNFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXF1ZW5j ZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNp c2Rpdj4KIApAQCAtNzMsOSArNzcsOSBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogCiAgIDxw YXJhPgogICAgVGhlIHRoaXJkIHZhcmlhbnQgZWl0aGVyIG1vZGlmaWVzIHRoZSBpbmNsdWRlZCB0 YWJsZXMvc2NoZW1hcwotICAgb3IgbWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIDxsaXRlcmFsPkZP UiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiBvcgotICAgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8 L2xpdGVyYWw+LCBvcHRpb25hbGx5IHVzaW5nCi0gICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+ IHRvIGV4Y2x1ZGUgc3BlY2lmaWMgdGFibGVzLiBUaGUKKyAgIG9yIG1hcmtzIHRoZSBwdWJsaWNh dGlvbiBhcyA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gb3IKKyAgIDxsaXRlcmFs PkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiwgb3B0aW9uYWxseSB1c2luZworICAgPGxpdGVy YWw+RVhDRVBUPC9saXRlcmFsPiB0byBleGNsdWRlIHNwZWNpZmljIHRhYmxlcyBvciBzZXF1ZW5j ZXMuIFRoZQogICAgPGxpdGVyYWw+U0VUIEFMTCBUQUJMRVM8L2xpdGVyYWw+IGNsYXVzZSBjYW4g dHJhbnNmb3JtIGFuIGVtcHR5IHB1YmxpY2F0aW9uLAogICAgb3Igb25lIGRlZmluZWQgZm9yIDxs aXRlcmFsPkFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+IChvciBib3RoCiAgICA8bGl0ZXJhbD5BTEwg VEFCTEVTPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+QUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4pLCBp bnRvCkBAIC04NiwxMSArOTAsMTUgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgIHB1Ymxp Y2F0aW9uIGRlZmluZWQgZm9yIDxsaXRlcmFsPkFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+LiBJbiBh ZGRpdGlvbiwKICAgIDxsaXRlcmFsPlNFVCBBTEwgVEFCTEVTPC9saXRlcmFsPiBjYW4gYmUgdXNl ZCB0byB1cGRhdGUgdGhlIHRhYmxlcyBzcGVjaWZpZWQKICAgIGluIHRoZSA8bGl0ZXJhbD5FWENF UFQ8L2xpdGVyYWw+IGNsYXVzZSBvZiBhCi0gICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0 ZXJhbD4gcHVibGljYXRpb24uIElmIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KLSAgIGlzIHNw ZWNpZmllZCB3aXRoIGEgbGlzdCBvZiB0YWJsZXMsIHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlz dCBpcyByZXBsYWNlZAotICAgd2l0aCB0aGUgc3BlY2lmaWVkIHRhYmxlcy4gSWYgPGxpdGVyYWw+ RVhDRVBUPC9saXRlcmFsPiBpcyBvbWl0dGVkLCB0aGUKLSAgIGV4aXN0aW5nIGV4Y2x1c2lvbiBs aXN0IGlzIGNsZWFyZWQuIFRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVzZSwgd2hlbgot ICAgdXNlZCB3aXRoIGEgcHVibGljYXRpb24gZGVmaW5lZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJM RTwvbGl0ZXJhbD4gb3IKKyAgIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiBwdWJs aWNhdGlvbiBhbmQKKyAgIDxsaXRlcmFsPlNFVCBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiBjYW4g YmUgdXNlZCB0byB1cGRhdGUgdGhlIHNlcXVlbmNlcworICAgc3BlY2lmaWVkIGluIHRoZSA8bGl0 ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBvZiBhCisgICA8bGl0ZXJhbD5GT1IgQUxMIFNF UVVFTkNFUzwvbGl0ZXJhbD4gcHVibGljYXRpb24uIElmCisgICA8bGl0ZXJhbD5FWENFUFQ8L2xp dGVyYWw+IGlzIHNwZWNpZmllZCB3aXRoIGEgbGlzdCBvZiB0YWJsZXMgb3Igc2VxdWVuY2VzLAor ICAgdGhlIGV4aXN0aW5nIGV4Y2x1c2lvbiBsaXN0IGlzIHJlcGxhY2VkIHdpdGggdGhlIHNwZWNp ZmllZCB0YWJsZXMgb3IKKyAgIHNlcXVlbmNlcy4gSWYgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFs PiBpcyBvbWl0dGVkLCB0aGUgZXhpc3RpbmcgZXhjbHVzaW9uCisgICBsaXN0IGlzIGNsZWFyZWQu IFRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVzZSwgd2hlbiB1c2VkIHdpdGggYQorICAg cHVibGljYXRpb24gZGVmaW5lZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IK ICAgIDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgcmVwbGFjZXMgdGhl IGxpc3Qgb2YgdGFibGVzL3NjaGVtYXMKICAgIGluIHRoZSBwdWJsaWNhdGlvbiB3aXRoIHRoZSBz cGVjaWZpZWQgbGlzdDsgdGhlIGV4aXN0aW5nIHRhYmxlcyBvciBzY2hlbWFzCiAgICB0aGF0IHdl cmUgcHJlc2VudCBpbiB0aGUgcHVibGljYXRpb24gd2lsbCBiZSByZW1vdmVkLgpAQCAtMjczLDEw ICsyODEsMzEgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBTRVQgQUxMIFRBQkxF UyBFWENFUFQgKFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50cykKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9w YXJhPgogCiAgIDxwYXJhPgotICAgUmVzZXQgdGhlIHB1YmxpY2F0aW9uIHRvIGJlIGEgPGxpdGVy YWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+IHB1YmxpY2F0aW9uCi0gICB3aXRoIG5vIGV4Y2x1 ZGVkIHRhYmxlczoKKyAgIFJlc2V0IHRoZSBwdWJsaWNhdGlvbiB0byBiZSA8bGl0ZXJhbD5GT1Ig QUxMIFRBQkxFUzwvbGl0ZXJhbD4gd2l0aCBubworICAgZXhjbHVzaW9uczoKIDxwcm9ncmFtbGlz dGluZz4KIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gU0VUIEFMTCBUQUJMRVM7Cis8 L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKworICA8cGFyYT4KKyAgIFJlc2V0IHRoZSBwdWJsaWNh dGlvbiB0byBiZSA8bGl0ZXJhbD5BTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiB3aXRoIG5vCisgICBl eGNsdXNpb25zOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElDQVRJT04gbXlwdWJsaWNh dGlvbiBTRVQgQUxMIFNFUVVFTkNFUzsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisgIDxw YXJhPgorICAgUmVwbGFjZSB0aGUgc2VxdWVuY2UgbGlzdCBpbiB0aGUgcHVibGljYXRpb24ncyA8 bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+CisgICBjbGF1c2U6Cis8cHJvZ3JhbWxpc3Rpbmc+CitB TFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAo U0VRVUVOQ0Ugc2VxMSwgc2VxMik7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKworICA8cGFy YT4KKyAgIFJlcGxhY2UgdGhlIHRhYmxlIGFuZCBzZXF1ZW5jZSBsaXN0IGluIHRoZSBwdWJsaWNh dGlvbidzCisgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZXM6Cis8cHJvZ3JhbWxp c3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgVEFCTEVTIEVY Q0VQVCAoVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzKSwgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNF UVVFTkNFIHNlcTEsIHNlcTIpOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKICAgPHBhcmE+ CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNWViNGRlNzQ0ZGUuLjMyODUw MDAyZTU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC05NTYsNyArOTU2 LDcgQEAgR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCiAgKi8KIHN0 YXRpYyBMaXN0ICoKIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNh dGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCi0JCQkJCQkgIGJvb2wgZXhjZXB0X2ZsYWcpCisJCQkJ CQkgIGJvb2wgZXhjZXB0X2ZsYWcsIGNoYXIgcHVicmVsa2luZCkKIHsKIAlMaXN0CSAgICpyZXN1 bHQ7CiAJUmVsYXRpb24JcHVicmVsc3JlbDsKQEAgLTk2NCw2ICs5NjQsOCBAQCBnZXRfcHVibGlj YXRpb25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 LAogCVN5c1NjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cDsKIAorCUFzc2VydChwdWJyZWxr aW5kID09IFJFTEtJTkRfUkVMQVRJT04gfHwgcHVicmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNF KTsKKwogCS8qIEZpbmQgYWxsIHJlbGF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0 aW9uLiAqLwogCXB1YnJlbHNyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25J ZCwgQWNjZXNzU2hhcmVMb2NrKTsKIApAQCAtOTgzLDggKzk4NSwxNSBAQCBnZXRfcHVibGljYXRp b25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAog CQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOwogCiAJ CWlmIChleGNlcHRfZmxhZyA9PSBwdWJyZWwtPnByZXhjZXB0KQotCQkJcmVzdWx0ID0gR2V0UHVi UGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCi0JCQkJCQkJCQkJ CQkJcHVicmVsLT5wcnJlbGlkKTsKKwkJeworCQkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVs a2luZChwdWJyZWwtPnBycmVsaWQpOworCisJCQlpZiAoKHB1YnJlbGtpbmQgPT0gUkVMS0lORF9S RUxBVElPTiAmJgorCQkJCSAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8IHJlbGtpbmQg PT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkpIHx8CisJCQkJKHB1YnJlbGtpbmQgPT0gUkVM S0lORF9TRVFVRU5DRSAmJiByZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UpKQorCQkJCXJlc3Vs dCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAor CQkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOworCQl9CiAJfQogCiAJc3lzdGFibGVfZW5k c2NhbihzY2FuKTsKQEAgLTEwMDAsMTUgKzEwMDksMTYgQEAgZ2V0X3B1YmxpY2F0aW9uX3JlbGF0 aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKIC8qCiAgKiBH ZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggYSBwdWJs aWNhdGlvbi4KICAqCi0gKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIFRBQkxFIHB1Ymxp Y2F0aW9ucywgdGhlIEZPUiBBTEwgVEFCTEVTL1NFUVVFTkNFUwotICogc2hvdWxkIHVzZSBHZXRB bGxQdWJsaWNhdGlvblJlbGF0aW9ucygpLgorICogVGhpcyBpcyBtYWlubHkgdXNlZCBmb3IgRk9S IFRBQkxFIHB1YmxpY2F0aW9ucyBhbmQgbXVzdCBub3QgYmUgY2FsbGVkIGZvcgorICogQUxMIFRB QkxFUyBwdWJsaWNhdGlvbnMuIEZvciBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucywgdGhlIHJl c3VsdCBpcyBhbgorICogZW1wdHkgbGlzdC4KICAqLwogTGlzdCAqCiBHZXRJbmNsdWRlZFB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 KQogewogCUFzc2VydCghR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMpOwogCi0JcmV0 dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCBmYWxzZSk7 CisJcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCBm YWxzZSwgUkVMS0lORF9SRUxBVElPTik7CiB9CiAKIC8qCkBAIC0xMDE2LDcgKzEwMjYsOCBAQCBH ZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0 T3B0IHB1Yl9wYXJ0b3B0KQogICogJ0ZPUiBBTEwgVEFCTEVTJyBvciBhICdGT1IgQUxMIFNFUVVF TkNFUycgcHVibGljYXRpb24uCiAgKi8KIExpc3QgKgotR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJl bGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKK0dldEV4 Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQg cHViX3BhcnRvcHQsCisJCQkJCQkJCWNoYXIgcHVicmVsa2luZCkKIHsKICNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HCiAJUHVibGljYXRpb24gKnB1YiA9IEdldFB1YmxpY2F0aW9uKHB1YmlkKTsK QEAgLTEwMjQsNyArMTAzNSw3IEBAIEdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lk IHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAJQXNzZXJ0KHB1Yi0+YWxs dGFibGVzIHx8IHB1Yi0+YWxsc2VxdWVuY2VzKTsKICNlbmRpZgogCi0JcmV0dXJuIGdldF9wdWJs aWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVlKTsKKwlyZXR1cm4gZ2V0 X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIHRydWUsIHB1YnJlbGtp bmQpOwogfQogCiAvKgpAQCAtMTA3OCw3ICsxMDg5LDcgQEAgR2V0QWxsVGFibGVzUHVibGljYXRp b25zKHZvaWQpCiAgKiBpdCBleGNsdWRlcyBzZXF1ZW5jZXMgc3BlY2lmaWVkIGluIHRoZSBFWENF UFQgY2xhdXNlLgogICovCiBMaXN0ICoKLUdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBw dWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCitHZXRBbGxQdWJsaWNhdGlvblJl bGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcHVicmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogewog CVJlbGF0aW9uCWNsYXNzUmVsOwogCVNjYW5LZXlEYXRhIGtleVsxXTsKQEAgLTEwODcsMTggKzEw OTgsMTkgQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJlbGtp bmQsIGJvb2wgcHVidmlhcm9vdCkKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CiAJTGlzdAkgICAq ZXhjZXB0bGlzdCA9IE5JTDsKIAotCUFzc2VydCghKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5D RSAmJiBwdWJ2aWFyb290KSk7CisJQXNzZXJ0KCEocHVicmVsa2luZCA9PSBSRUxLSU5EX1NFUVVF TkNFICYmIHB1YnZpYXJvb3QpKTsKIAogCWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1YmxpY2F0 aW9uUmVsYXRpb25zKHB1YmlkLCBwdWJ2aWFyb290ID8KIAkJCQkJCQkJCQkJCSBQVUJMSUNBVElP Tl9QQVJUX1JPT1QgOgotCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJCQkJ CQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGLAorCQkJCQkJCQkJCQkJIHB1YnJlbGtpbmQp OwogCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hh cmVMb2NrKTsKIAogCVNjYW5LZXlJbml0KCZrZXlbMF0sCiAJCQkJQW51bV9wZ19jbGFzc19yZWxr aW5kLAogCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9DSEFSRVEsCi0JCQkJQ2hhckdldERh dHVtKHJlbGtpbmQpKTsKKwkJCQlDaGFyR2V0RGF0dW0ocHVicmVsa2luZCkpOwogCiAJc2NhbiA9 IHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKGNsYXNzUmVsLCAxLCBrZXkpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IGJkMTcxZjllNDhlLi45NTE2MGM4ZDg0NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTY2LDcgKzY2LDcgQEAg c3RhdGljIHZvaWQgQ2xvc2VSZWxhdGlvbkxpc3QoTGlzdCAqcmVscyk7CiBzdGF0aWMgdm9pZCBM b2NrU2NoZW1hTGlzdChMaXN0ICpzY2hlbWFsaXN0KTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0aW9u QWRkUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAog CQkJCQkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIGNoYXIgcHVicmVsa2luZCk7Ci1z dGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBi b29sIG1pc3Npbmdfb2spOworc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wUmVsYXRpb25zKE9p ZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyB2b2lkIFB1Ymxp Y2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgaWZfbm90X2V4 aXN0cywKIAkJCQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CiBzdGF0aWMgdm9p ZCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBt aXNzaW5nX29rKTsKQEAgLTEyNTMsMjYgKzEyNTMsMTMxIEBAIEludmFsaWRhdGVQdWJsaWNhdGlv blJlbHMoTGlzdCAqcmVsaWRzKQogfQogCiAvKgotICogQWRkIG9yIHJlbW92ZSB0YWJsZSB0by9m cm9tIHB1YmxpY2F0aW9uLgorICogUmV0dXJuIHRoZSBsaXN0IG9mIHRhYmxlcy9zZXF1ZW5jZXMg dG8gYmUgcmVtb3ZlZCBmcm9tIGEgcHVibGljYXRpb24gZHVyaW5nCisgKiBBTFRFUiBQVUJMSUNB VElPTiAuLi4gU0VULgorICoKKyAqICdyZWxzJyBjb250YWlucyB0aGUgcmVsYXRpb25zIHNwZWNp ZmllZCBieSB0aGUgU0VUIGNvbW1hbmQsIGFuZCAnb2xkcmVsaWRzJworICogY29udGFpbnMgdGhl IGV4aXN0aW5nIHJlbGF0aW9ucyBpbiB0aGUgcHVibGljYXRpb24uIFRoZSBmdW5jdGlvbiByZXR1 cm5zIHRoZQorICogZXhpc3RpbmcgcmVsYXRpb25zIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluICdy ZWxzJyBhbmQgdGhlcmVmb3JlIG5lZWQgdG8gYmUKKyAqIHJlbW92ZWQuCisgKi8KK3N0YXRpYyBM aXN0ICoKK2dldF9kZWxldGVfcmVscyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIExpc3QgKm9sZHJl bGlkcykKK3sKKwlMaXN0CSAgICpkZWxyZWxzID0gTklMOworCisJZm9yZWFjaF9vaWQob2xkcmVs aWQsIG9sZHJlbGlkcykKKwl7CisJCUxpc3RDZWxsICAgKm5ld2xjOworCQlQdWJsaWNhdGlvblJl bEluZm8gKm9sZHJlbDsKKwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJSGVhcFR1cGxlCXJmdHVw bGU7CisJCU5vZGUJICAgKm9sZHJlbHdoZXJlY2xhdXNlID0gTlVMTDsKKwkJQml0bWFwc2V0ICAq b2xkY29sdW1ucyA9IE5VTEw7CisKKwkJLyogTG9vayB1cCB0aGUgY2FjaGUgZm9yIHRoZSBvbGQg cmVsbWFwICovCisJCXJmdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxNQVAs CisJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShvbGRyZWxpZCksCisJCQkJCQkJCSAgT2JqZWN0 SWRHZXREYXR1bShwdWJpZCkpOworCisJCS8qCisJCSAqIFNlZSBpZiB0aGUgZXhpc3RpbmcgcmVs YXRpb24gY3VycmVudGx5IGhhcyBhIFdIRVJFIGNsYXVzZSBvciBhCisJCSAqIGNvbHVtbiBsaXN0 LiBXZSBuZWVkIHRvIGNvbXBhcmUgdGhvc2UgdG9vLgorCQkgKi8KKwkJaWYgKEhlYXBUdXBsZUlz VmFsaWQocmZ0dXBsZSkpCisJCXsKKwkJCWJvb2wJCWlzbnVsbCA9IHRydWU7CisJCQlEYXR1bQkJ d2hlcmVDbGF1c2VEYXR1bTsKKwkJCURhdHVtCQljb2x1bW5MaXN0RGF0dW07CisKKwkJCS8qIExv YWQgdGhlIFdIRVJFIGNsYXVzZSBmb3IgdGhpcyB0YWJsZS4gKi8KKwkJCXdoZXJlQ2xhdXNlRGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHJmdHVwbGUsCisJCQkJCQkJ CQkJCSAgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3BycXVhbCwKKwkJCQkJCQkJCQkJICAgJmlz bnVsbCk7CisJCQlpZiAoIWlzbnVsbCkKKwkJCQlvbGRyZWx3aGVyZWNsYXVzZSA9IHN0cmluZ1Rv Tm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKHdoZXJlQ2xhdXNlRGF0dW0pKTsKKworCQkJLyogVHJh bnNmb3JtIHRoZSBpbnQydmVjdG9yIGNvbHVtbiBsaXN0IHRvIGEgYml0bWFwLiAqLworCQkJY29s dW1uTGlzdERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxl LAorCQkJCQkJCQkJCQkgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3ByYXR0cnMsCisJCQkJCQkJ CQkJCSAgJmlzbnVsbCk7CisKKwkJCWlmICghaXNudWxsKQorCQkJCW9sZGNvbHVtbnMgPSBwdWJf Y29sbGlzdF90b19iaXRtYXBzZXQoTlVMTCwgY29sdW1uTGlzdERhdHVtLCBOVUxMKTsKKworCQkJ UmVsZWFzZVN5c0NhY2hlKHJmdHVwbGUpOworCQl9CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgYW55 IG9mIHRoZSBuZXcgc2V0IG9mIHJlbGF0aW9ucyBtYXRjaGVzIHdpdGggdGhlIGV4aXN0aW5nCisJ CSAqIHJlbGF0aW9ucyBpbiB0aGUgcHVibGljYXRpb24uIEFkZGl0aW9uYWxseSwgaWYgdGhlIHJl bGF0aW9uIGhhcyBhbgorCQkgKiBhc3NvY2lhdGVkIFdIRVJFIGNsYXVzZSwgY2hlY2sgdGhlIFdI RVJFIGV4cHJlc3Npb25zIGFsc28gbWF0Y2guCisJCSAqIFNhbWUgZm9yIHRoZSBjb2x1bW4gbGlz dC4gRHJvcCB0aGUgcmVzdC4KKwkJICovCisJCWZvcmVhY2gobmV3bGMsIHJlbHMpCisJCXsKKwkJ CVB1YmxpY2F0aW9uUmVsSW5mbyAqbmV3cHVicmVsOworCQkJT2lkCQkJbmV3cmVsaWQ7CisJCQlC aXRtYXBzZXQgICpuZXdjb2x1bW5zID0gTlVMTDsKKworCQkJbmV3cHVicmVsID0gKFB1YmxpY2F0 aW9uUmVsSW5mbyAqKSBsZmlyc3QobmV3bGMpOworCQkJbmV3cmVsaWQgPSBSZWxhdGlvbkdldFJl bGlkKG5ld3B1YnJlbC0+cmVsYXRpb24pOworCisJCQkvKgorCQkJICogVmFsaWRhdGUgdGhlIGNv bHVtbiBsaXN0LiAgSWYgdGhlIGNvbHVtbiBsaXN0IG9yIFdIRVJFIGNsYXVzZQorCQkJICogY2hh bmdlcywgdGhlbiB0aGUgdmFsaWRhdGlvbiBkb25lIGhlcmUgd2lsbCBiZSBkdXBsaWNhdGVkCisJ CQkgKiBpbnNpZGUgUHVibGljYXRpb25BZGRSZWxhdGlvbnMoKS4gIFRoZSB2YWxpZGF0aW9uIGlz IGNoZWFwCisJCQkgKiBlbm91Z2ggdGhhdCB0aGF0IHNlZW1zIGhhcm1sZXNzLgorCQkJICovCisJ CQluZXdjb2x1bW5zID0gcHViX2NvbGxpc3RfdmFsaWRhdGUobmV3cHVicmVsLT5yZWxhdGlvbiwK KwkJCQkJCQkJCQkJICBuZXdwdWJyZWwtPmNvbHVtbnMpOworCisJCQlmb3VuZCA9IChuZXdyZWxp ZCA9PSBvbGRyZWxpZCkgJiYKKwkJCQllcXVhbChvbGRyZWx3aGVyZWNsYXVzZSwgbmV3cHVicmVs LT53aGVyZUNsYXVzZSkgJiYKKwkJCQlibXNfZXF1YWwob2xkY29sdW1ucywgbmV3Y29sdW1ucyk7 CisKKwkJCWlmIChmb3VuZCkKKwkJCQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIEFkZCBub24t bWF0Y2hpbmcgcmVsYXRpb25zIHRvIHRoZSBkcm9wIGxpc3QuIFRoZSByZWxhdGlvbiB3aWxsIGJl CisJCSAqIGRyb3BwZWQgaXJyZXNwZWN0aXZlIG9mIHRoZSBjb2x1bW4gbGlzdCBhbmQgV0hFUkUg Y2xhdXNlLgorCQkgKi8KKwkJaWYgKCFmb3VuZCkKKwkJeworCQkJb2xkcmVsID0gcGFsbG9jMF9v YmplY3QoUHVibGljYXRpb25SZWxJbmZvKTsKKwkJCW9sZHJlbC0+cmVsYXRpb24gPSB0YWJsZV9v cGVuKG9sZHJlbGlkLAorCQkJCQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJ CWRlbHJlbHMgPSBsYXBwZW5kKGRlbHJlbHMsIG9sZHJlbCk7CisJCX0KKwl9CisKKwlyZXR1cm4g ZGVscmVsczsKK30KKworLyoKKyAqIEFkZCBvciByZW1vdmUgdGFibGUgb3Igc2VxdWVuY2UgdG8v ZnJvbSBwdWJsaWNhdGlvbi4KICAqLwogc3RhdGljIHZvaWQKLUFsdGVyUHVibGljYXRpb25UYWJs ZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCi0JCQkJCSAgIExp c3QgKnRhYmxlcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCi0JCQkJCSAgIGJvb2wgcHVibGlz aF9zY2hlbWEpCitBbHRlclB1YmxpY2F0aW9uUmVsYXRpb25zKEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10LCBIZWFwVHVwbGUgdHVwLAorCQkJCQkJICBMaXN0ICp0YWJsZXMsIExpc3QgKnNlcXVl bmNlcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCisJCQkJCQkgIGJvb2wgcHVibGlzaF9zY2hl bWEpCiB7CiAJTGlzdAkgICAqcmVscyA9IE5JTDsKKwlMaXN0CSAgICpzZXFzID0gTklMOwogCUZv cm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJV Q1QodHVwKTsKIAlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKIAogCS8qCi0JICogTm90aGlu ZyB0byBkbyBpZiBubyBvYmplY3RzLCBleGNlcHQgaW4gU0VUOiBmb3IgdGhhdCBpdCBpcyBxdWl0 ZQotCSAqIHBvc3NpYmxlIHRoYXQgdXNlciBoYXMgbm90IHNwZWNpZmllZCBhbnkgdGFibGVzIGlu IHdoaWNoIGNhc2Ugd2UgbmVlZAotCSAqIHRvIHJlbW92ZSBhbGwgdGhlIGV4aXN0aW5nIHRhYmxl cy4KKwkgKiBOb3RoaW5nIHRvIGRvIGlmIG5vIG9iamVjdHMgd2VyZSBzcGVjaWZpZWQsIHVubGVz cyB0aGlzIGlzIGEgU0VUCisJICogY29tbWFuZCwgd2hpY2ggbWF5IG5lZWQgdG8gcmVtb3ZlIGFs bCBleGlzdGluZyB0YWJsZXMgYW5kIHNlcXVlbmNlcy4KIAkgKi8KLQlpZiAoIXRhYmxlcyAmJiBz dG10LT5hY3Rpb24gIT0gQVBfU2V0T2JqZWN0cykKKwlpZiAoIXRhYmxlcyAmJiAhc2VxdWVuY2Vz ICYmIHN0bXQtPmFjdGlvbiAhPSBBUF9TZXRPYmplY3RzKQogCQlyZXR1cm47CiAKIAlyZWxzID0g T3BlblJlbGF0aW9uTGlzdCh0YWJsZXMpOworCXNlcXMgPSBPcGVuUmVsYXRpb25MaXN0KHNlcXVl bmNlcyk7CiAKIAlpZiAoc3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVjdHMpCiAJewpAQCAtMTI4 NiwyOSArMTM5MSwzMyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJp ZCwgcmVscywgZmFsc2UsIHN0bXQsIFJFTEtJTkRfUkVMQVRJT04pOwogCX0KIAllbHNlIGlmIChz dG10LT5hY3Rpb24gPT0gQVBfRHJvcE9iamVjdHMpCi0JCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhw dWJpZCwgcmVscywgZmFsc2UpOworCQlQdWJsaWNhdGlvbkRyb3BSZWxhdGlvbnMocHViaWQsIHJl bHMsIGZhbHNlKTsKIAllbHNlCQkJCQkJLyogQVBfU2V0T2JqZWN0cyAqLwogCXsKIAkJTGlzdAkg ICAqb2xkcmVsaWRzID0gTklMOworCQlMaXN0CSAgICpvbGRzZXFpZHMgPSBOSUw7CiAJCUxpc3QJ ICAgKmRlbHJlbHMgPSBOSUw7Ci0JCUxpc3RDZWxsICAgKm9sZGxjOwogCiAJCWlmIChzdG10LT5m b3JfYWxsX3RhYmxlcyB8fCBzdG10LT5mb3JfYWxsX3NlcXVlbmNlcykKIAkJewogCQkJLyoKLQkJ CSAqIEluIEZPUiBBTEwgVEFCTEVTIG1vZGUsIHJlbGF0aW9ucyBhcmUgdHJhY2tlZCBhcyBleGNs dXNpb25zCi0JCQkgKiAoRVhDRVBUIGNsYXVzZSkuIEZldGNoIHRoZSBjdXJyZW50IGV4Y2x1ZGVk IHJlbGF0aW9ucyBzbyB0aGV5Ci0JCQkgKiBjYW4gYmUgcmVjb25jaWxlZCB3aXRoIHRoZSBzcGVj aWZpZWQgRVhDRVBUIGxpc3QuCisJCQkgKiBJbiBGT1IgQUxMIFRBQkxFUy8gRk9SIEFMTCBTRVFV RU5DRVMgbW9kZSwgcmVsYXRpb25zIGFyZQorCQkJICogdHJhY2tlZCBhcyBleGNsdXNpb25zIChF WENFUFQgY2xhdXNlKS4gRmV0Y2ggdGhlIGN1cnJlbnQKKwkJCSAqIGV4Y2x1ZGVkIHJlbGF0aW9u cyBzbyB0aGV5IGNhbiBiZSByZWNvbmNpbGVkIHdpdGggdGhlIHNwZWNpZmllZAorCQkJICogRVhD RVBUIGxpc3QuCiAJCQkgKgogCQkJICogVGhpcyBhcHBsaWVzIG9ubHkgaWYgdGhlIGV4aXN0aW5n IHB1YmxpY2F0aW9uIGlzIGFscmVhZHkKLQkJCSAqIGRlZmluZWQgYXMgRk9SIEFMTCBUQUJMRVM7 IG90aGVyd2lzZSwgdGhlcmUgYXJlIG5vIGV4Y2x1c2lvbgotCQkJICogZW50cmllcyB0byBwcm9j ZXNzLgorCQkJICogZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUy8gRk9SIEFMTCBTRVFVRU5DRVM7 IG90aGVyd2lzZSwgdGhlcmUKKwkJCSAqIGFyZSBubyBleGNsdXNpb24gZW50cmllcyB0byBwcm9j ZXNzLgogCQkJICovCiAJCQlpZiAocHViZm9ybS0+cHViYWxsdGFibGVzKQotCQkJewogCQkJCW9s ZHJlbGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCi0JCQkJCQkJ CQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwotCQkJfQorCQkJCQkJCQkJCQkJCQkJUFVC TElDQVRJT05fUEFSVF9ST09ULAorCQkJCQkJCQkJCQkJCQkJUkVMS0lORF9SRUxBVElPTik7CisJ CQlpZiAocHViZm9ybS0+cHViYWxsc2VxdWVuY2VzKQorCQkJCW9sZHNlcWlkcyA9IEdldEV4Y2x1 ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElP Tl9QQVJUX1JPT1QsCisJCQkJCQkJCQkJCQkJCQlSRUxLSU5EX1NFUVVFTkNFKTsKIAkJfQogCQll bHNlCiAJCXsKQEAgLTEzMjEsMTE4ICsxNDMwLDI1IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMo QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJCQkJCQkgICBw dWJmb3JtLT5wdWJ2aWFyb290KTsKIAkJfQogCi0JCS8qCi0JCSAqIFRvIHJlY3JlYXRlIHRoZSBy ZWxhdGlvbiBsaXN0IGZvciB0aGUgcHVibGljYXRpb24sIGxvb2sgZm9yCi0JCSAqIGV4aXN0aW5n IHJlbGF0aW9ucyB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIGRyb3BwZWQuCi0JCSAqLwotCQlmb3Jl YWNoKG9sZGxjLCBvbGRyZWxpZHMpCi0JCXsKLQkJCU9pZAkJCW9sZHJlbGlkID0gbGZpcnN0X29p ZChvbGRsYyk7Ci0JCQlMaXN0Q2VsbCAgICpuZXdsYzsKLQkJCVB1YmxpY2F0aW9uUmVsSW5mbyAq b2xkcmVsOwotCQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKLQkJCUhlYXBUdXBsZQlyZnR1cGxlOwot CQkJTm9kZQkgICAqb2xkcmVsd2hlcmVjbGF1c2UgPSBOVUxMOwotCQkJQml0bWFwc2V0ICAqb2xk Y29sdW1ucyA9IE5VTEw7Ci0KLQkJCS8qIGxvb2sgdXAgdGhlIGNhY2hlIGZvciB0aGUgb2xkIHJl bG1hcCAqLwotCQkJcmZ0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1BUCwK LQkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShvbGRyZWxpZCksCi0JCQkJCQkJCQkgIE9iamVj dElkR2V0RGF0dW0ocHViaWQpKTsKLQotCQkJLyoKLQkJCSAqIFNlZSBpZiB0aGUgZXhpc3Rpbmcg cmVsYXRpb24gY3VycmVudGx5IGhhcyBhIFdIRVJFIGNsYXVzZSBvciBhCi0JCQkgKiBjb2x1bW4g bGlzdC4gV2UgbmVlZCB0byBjb21wYXJlIHRob3NlIHRvby4KLQkJCSAqLwotCQkJaWYgKEhlYXBU dXBsZUlzVmFsaWQocmZ0dXBsZSkpCi0JCQl7Ci0JCQkJYm9vbAkJaXNudWxsID0gdHJ1ZTsKLQkJ CQlEYXR1bQkJd2hlcmVDbGF1c2VEYXR1bTsKLQkJCQlEYXR1bQkJY29sdW1uTGlzdERhdHVtOwot Ci0JCQkJLyogTG9hZCB0aGUgV0hFUkUgY2xhdXNlIGZvciB0aGlzIHRhYmxlLiAqLwotCQkJCXdo ZXJlQ2xhdXNlRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHJmdHVw bGUsCi0JCQkJCQkJCQkJCQkgICBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnF1YWwsCi0JCQkJ CQkJCQkJCQkgICAmaXNudWxsKTsKLQkJCQlpZiAoIWlzbnVsbCkKLQkJCQkJb2xkcmVsd2hlcmVj bGF1c2UgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyh3aGVyZUNsYXVzZURhdHVt KSk7Ci0KLQkJCQkvKiBUcmFuc2Zvcm0gdGhlIGludDJ2ZWN0b3IgY29sdW1uIGxpc3QgdG8gYSBi aXRtYXAuICovCi0JCQkJY29sdW1uTGlzdERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FU SU9OUkVMTUFQLCByZnR1cGxlLAotCQkJCQkJCQkJCQkJICBBbnVtX3BnX3B1YmxpY2F0aW9uX3Jl bF9wcmF0dHJzLAotCQkJCQkJCQkJCQkJICAmaXNudWxsKTsKLQotCQkJCWlmICghaXNudWxsKQot CQkJCQlvbGRjb2x1bW5zID0gcHViX2NvbGxpc3RfdG9fYml0bWFwc2V0KE5VTEwsIGNvbHVtbkxp c3REYXR1bSwgTlVMTCk7Ci0KLQkJCQlSZWxlYXNlU3lzQ2FjaGUocmZ0dXBsZSk7Ci0JCQl9Ci0K LQkJCWZvcmVhY2gobmV3bGMsIHJlbHMpCi0JCQl7Ci0JCQkJUHVibGljYXRpb25SZWxJbmZvICpu ZXdwdWJyZWw7Ci0JCQkJT2lkCQkJbmV3cmVsaWQ7Ci0JCQkJQml0bWFwc2V0ICAqbmV3Y29sdW1u cyA9IE5VTEw7Ci0KLQkJCQluZXdwdWJyZWwgPSAoUHVibGljYXRpb25SZWxJbmZvICopIGxmaXJz dChuZXdsYyk7Ci0JCQkJbmV3cmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKG5ld3B1YnJlbC0+cmVs YXRpb24pOwotCi0JCQkJLyoKLQkJCQkgKiBWYWxpZGF0ZSB0aGUgY29sdW1uIGxpc3QuICBJZiB0 aGUgY29sdW1uIGxpc3Qgb3IgV0hFUkUKLQkJCQkgKiBjbGF1c2UgY2hhbmdlcywgdGhlbiB0aGUg dmFsaWRhdGlvbiBkb25lIGhlcmUgd2lsbCBiZQotCQkJCSAqIGR1cGxpY2F0ZWQgaW5zaWRlIFB1 YmxpY2F0aW9uQWRkUmVsYXRpb25zKCkuICBUaGUKLQkJCQkgKiB2YWxpZGF0aW9uIGlzIGNoZWFw IGVub3VnaCB0aGF0IHRoYXQgc2VlbXMgaGFybWxlc3MuCi0JCQkJICovCi0JCQkJbmV3Y29sdW1u cyA9IHB1Yl9jb2xsaXN0X3ZhbGlkYXRlKG5ld3B1YnJlbC0+cmVsYXRpb24sCi0JCQkJCQkJCQkJ CQkgIG5ld3B1YnJlbC0+Y29sdW1ucyk7Ci0KLQkJCQkvKgotCQkJCSAqIENoZWNrIGlmIGFueSBv ZiB0aGUgbmV3IHNldCBvZiByZWxhdGlvbnMgbWF0Y2hlcyB3aXRoIHRoZQotCQkJCSAqIGV4aXN0 aW5nIHJlbGF0aW9ucyBpbiB0aGUgcHVibGljYXRpb24uIEFkZGl0aW9uYWxseSwgaWYgdGhlCi0J CQkJICogcmVsYXRpb24gaGFzIGFuIGFzc29jaWF0ZWQgV0hFUkUgY2xhdXNlLCBjaGVjayB0aGUg V0hFUkUKLQkJCQkgKiBleHByZXNzaW9ucyBhbHNvIG1hdGNoLiBTYW1lIGZvciB0aGUgY29sdW1u IGxpc3QuIERyb3AgdGhlCi0JCQkJICogcmVzdC4KLQkJCQkgKi8KLQkJCQlpZiAobmV3cmVsaWQg PT0gb2xkcmVsaWQpCi0JCQkJewotCQkJCQlpZiAoZXF1YWwob2xkcmVsd2hlcmVjbGF1c2UsIG5l d3B1YnJlbC0+d2hlcmVDbGF1c2UpICYmCi0JCQkJCQlibXNfZXF1YWwob2xkY29sdW1ucywgbmV3 Y29sdW1ucykpCi0JCQkJCXsKLQkJCQkJCWZvdW5kID0gdHJ1ZTsKLQkJCQkJCWJyZWFrOwotCQkJ CQl9Ci0JCQkJfQotCQkJfQotCi0JCQkvKgotCQkJICogQWRkIHRoZSBub24tbWF0Y2hlZCByZWxh dGlvbnMgdG8gYSBsaXN0IHNvIHRoYXQgdGhleSBjYW4gYmUKLQkJCSAqIGRyb3BwZWQuCi0JCQkg Ki8KLQkJCWlmICghZm91bmQpCi0JCQl7Ci0JCQkJb2xkcmVsID0gcGFsbG9jX29iamVjdChQdWJs aWNhdGlvblJlbEluZm8pOwotCQkJCW9sZHJlbC0+d2hlcmVDbGF1c2UgPSBOVUxMOwotCQkJCW9s ZHJlbC0+Y29sdW1ucyA9IE5JTDsKLQkJCQlvbGRyZWwtPmV4Y2VwdCA9IGZhbHNlOwotCQkJCW9s ZHJlbC0+cmVsYXRpb24gPSB0YWJsZV9vcGVuKG9sZHJlbGlkLAotCQkJCQkJCQkJCQkgIFNoYXJl VXBkYXRlRXhjbHVzaXZlTG9jayk7Ci0JCQkJZGVscmVscyA9IGxhcHBlbmQoZGVscmVscywgb2xk cmVsKTsKLQkJCX0KLQkJfQorCQkvKiBHZXQgdGFibGVzIGFuZCBzZXF1ZW5jZXMgdG8gYmUgZHJv cHBlZCAqLworCQlkZWxyZWxzID0gZ2V0X2RlbGV0ZV9yZWxzKHB1YmlkLCByZWxzLCBvbGRyZWxp ZHMpOworCQlkZWxyZWxzID0gbGlzdF9jb25jYXQoZGVscmVscywgZ2V0X2RlbGV0ZV9yZWxzKHB1 YmlkLCBzZXFzLCBvbGRzZXFpZHMpKTsKIAogCQkvKiBBbmQgZHJvcCB0aGVtLiAqLwotCQlQdWJs aWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIGRlbHJlbHMsIHRydWUpOworCQlQdWJsaWNhdGlvbkRy b3BSZWxhdGlvbnMocHViaWQsIGRlbHJlbHMsIHRydWUpOwogCiAJCS8qCiAJCSAqIERvbid0IGJv dGhlciBjYWxjdWxhdGluZyB0aGUgZGlmZmVyZW5jZSBmb3IgYWRkaW5nLCB3ZSdsbCBjYXRjaCBh bmQKIAkJICogc2tpcCBleGlzdGluZyBvbmVzIHdoZW4gZG9pbmcgY2F0YWxvZyB1cGRhdGUuCiAJ CSAqLwogCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCwg UkVMS0lORF9SRUxBVElPTik7CisJCVB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKHB1YmlkLCBzZXFz LCB0cnVlLCBzdG10LCBSRUxLSU5EX1NFUVVFTkNFKTsKIAogCQlDbG9zZVJlbGF0aW9uTGlzdChk ZWxyZWxzKTsKIAl9CiAKIAlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKKwlDbG9zZVJlbGF0aW9u TGlzdChzZXFzKTsKIH0KIAogLyoKQEAgLTE3MDgsMTEgKzE3MjQsOSBAQCBBbHRlclB1YmxpY2F0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCU9i amVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0 aW9ucywKIAkJCQkJCQkJICAgJmV4Y2VwdHRibHMsICZleGNlcHRzZXFzLCAmc2NoZW1haWRsaXN0 KTsKIAotCQkvKgotCQkgKiBUT0RPOiBFWENFUFQgKFNFUVVFTkNFIC4uLikgaXMgbm90IHlldCBz dXBwb3J0ZWQgd2l0aCBBTFRFUgotCQkgKiBQVUJMSUNBVElPTi4KLQkJICovCi0JCUFzc2VydChl eGNlcHRzZXFzID09IE5JTCk7CisJCS8qIEVYQ0VQVCBjbGF1c2UgaXMgb25seSBzdXBwb3J0ZWQg Zm9yIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBTRVQgKi8KKwkJQXNzZXJ0KChleGNlcHR0YmxzID09 IE5JTCAmJiBleGNlcHRzZXFzID09IE5JTCkgfHwKKwkJCSAgIHN0bXQtPmFjdGlvbiA9PSBBUF9T ZXRPYmplY3RzKTsKIAogCQlDaGVja0FsdGVyUHVibGljYXRpb24oc3RtdCwgdHVwLCByZWxhdGlv bnMsIHNjaGVtYWlkbGlzdCk7CiAKQEAgLTE3MzYsOCArMTc1MCw4IEBAIEFsdGVyUHVibGljYXRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJCQkJ CSAgIHN0bXQtPnB1Ym5hbWUpKTsKIAogCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChyZWxhdGlv bnMsIGV4Y2VwdHRibHMpOwotCQlBbHRlclB1YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVs YXRpb25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKLQkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0g TklMKTsKKwkJQWx0ZXJQdWJsaWNhdGlvblJlbGF0aW9ucyhzdG10LCB0dXAsIHJlbGF0aW9ucywg ZXhjZXB0c2VxcywKKwkJCQkJCQkJICBwc3RhdGUtPnBfc291cmNldGV4dCwgc2NoZW1haWRsaXN0 ICE9IE5JTCk7CiAJCUFsdGVyUHVibGljYXRpb25TY2hlbWFzKHN0bXQsIHR1cCwgc2NoZW1haWRs aXN0KTsKIAkJQWx0ZXJQdWJsaWNhdGlvbkFsbEZsYWdzKHN0bXQsIHJlbCwgdHVwKTsKIAl9CkBA IC0yMDkyLDEwICsyMTA2LDEwIEBAIFB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKE9pZCBwdWJpZCwg TGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAogfQogCiAvKgotICogUmVtb3ZlIGxpc3Rl ZCB0YWJsZXMgZnJvbSB0aGUgcHVibGljYXRpb24uCisgKiBSZW1vdmUgbGlzdGVkIHJlbGF0aW9u cyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KICAqLwogc3RhdGljIHZvaWQKLVB1YmxpY2F0aW9uRHJv cFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykKK1B1YmxpY2F0 aW9uRHJvcFJlbGF0aW9ucyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykK IHsKIAlPYmplY3RBZGRyZXNzIG9iajsKIAlMaXN0Q2VsbCAgICpsYzsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4 IGYwYmUyMmVkOTQxLi4xODU3NzkwOGRlNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0xMTQ5OSw3ICsxMTQ5 OSw3IEBAIHB1Yl9leGNlcHRfc2VxX2xpc3Q6IFB1YmxpY2F0aW9uRXhjZXB0U2VxU3BlYwogICog cHViX2FsbF9vYmpfdHlwZSBpcyBvbmUgb2Y6CiAgKgogICoJCUFMTCBUQUJMRVMgWyBFWENFUFQg KCBUQUJMRSB0YWJsZV9uYW1lIFssIC4uLl0gKSBdCi0gKgkJQUxMIFNFUVVFTkNFUworICoJCUFM TCBTRVFVRU5DRVMgWyBFWENFUFQgKCBTRVFVRU5DRSBzZXF1ZW5jZV9uYW1lIFssIC4uLl0gKSBd CiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXgg NzdiMDNkN2I1MGIuLjdhOWMwMGUxNTI4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yMzM3 LDYgKzIzMzcsMjAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNP TVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CiAJZWxz ZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJB TEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hBbnlOKSAmJiAhZW5k c193aXRoKHByZXZfd2QsICcsJykpCiAJCUNPTVBMRVRFX1dJVEgoIikiKTsKKwllbHNlIGlmIChN YXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIkFMTCIsICJT RVFVRU5DRVMiLCAiRVhDRVBUIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSCgiU0VRVUVOQ0UiKTsK KwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VU IiwgIkFMTCIsICJTRVFVRU5DRVMiKSkKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUICggU0VRVUVO Q0UiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiU0VUIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgo IiggU0VRVUVOQ0UiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiU0VUIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIiwgIigiKSkKKwkJ Q09NUExFVEVfV0lUSCgiU0VRVUVOQ0UiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBU IiwgIigiLCAiU0VRVUVOQ0UiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlf Zm9yX2xpc3Rfb2Zfc2VxdWVuY2VzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJM SUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIiwg IigiLCAiU0VRVUVOQ0UiLCBNYXRjaEFueU4pICYmIGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQor CQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9zZXF1ZW5jZXMp OworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJT RVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIsICJTRVFVRU5DRSIsIE1hdGNo QW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCIpIik7 CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFE RHxEUk9QfFNFVCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIikpCiAJCUNPTVBMRVRFX1dJVEhf UVVFUllfUExVUyhRdWVyeV9mb3JfbGlzdF9vZl9zY2hlbWFzCiAJCQkJCQkJCSAiIEFORCBuc3Bu YW1lIE5PVCBMSUtFIEUncGdcXFxcXyUlJyIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmgKaW5kZXggNDljMjlhODc2MzAuLjIxYTE1MjdiY2M3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oCkBAIC0xNzgsOSArMTc4LDExIEBAIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlv blBhcnRPcHQKIGV4dGVybiBMaXN0ICpHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9p ZCBwdWJpZCwKIAkJCQkJCQkJCQkJIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CiBl eHRlcm4gTGlzdCAqR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsCi0J CQkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOworCQkJCQkJCQkJCQkg UHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAorCQkJCQkJCQkJCQkgY2hhciBwdWJyZWxr aW5kKTsKIGV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCk7Ci1leHRl cm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJlbGtp bmQsIGJvb2wgcHVidmlhcm9vdCk7CitleHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25SZWxh dGlvbnMoT2lkIHB1YmlkLCBjaGFyIHB1YnJlbGtpbmQsCisJCQkJCQkJCQkJYm9vbCBwdWJ2aWFy b290KTsKIGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKTsKIGV4 dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lkIHNjaGVtYWlkKTsKIGV4dGVybiBM aXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgc2NoZW1haWQsCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDY0NDJiODdkMDM4Li40YTAy NDg4YmZmYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlv bi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAg LTU3Nyw2ICs1NzcsMjUgQEAgRXhjZXB0IHNlcXVlbmNlczoKICAgICAicHViX3Rlc3QucmVncmVz c19zZXEyIgogICAgICJwdWJsaWMucmVncmVzc19zZXEwIgogCistLSBNb2RpZnkgdGhlIHNlcXVl bmNlIGxpc3QgaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3Nf cHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQgU0VUIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFV RU5DRSByZWdyZXNzX3NlcTApOworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4 Y2VwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2VwdAorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9v dCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAg ICAgICB8IAorRXhjZXB0IHNlcXVlbmNlczoKKyAgICAicHVibGljLnJlZ3Jlc3Nfc2VxMCIKKwor LS0gQ2xlYXIgdGhlIHNlcXVlbmNlIGxpc3QgaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBV QkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQgU0VUIEFMTCBTRVFV RU5DRVM7CitcZFJwKyByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiByZWdy ZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRp b24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCisoMSBy b3cpCisKIC0tIFRlc3QgY29tYmluYXRpb24gb2YgQUxMIFNFUVVFTkNFUyBhbmQgQUxMIFRBQkxF UyB3aXRoIEVYQ0VQVCBjbGF1c2UKIENSRUFURSBUQUJMRSByZWdyZXNzX3RhYjEoYSBpbnQpOwog Q1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVz X2V4Y2VwdCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3NfdGFiMSksIEFMTCBT RVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3NlcTApOwpAQCAtNTk2LDI0ICs2MTUs NDAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWlsIEZPUiBBTEwg VEFCTEVTIEVYQ0VQVCAocmVncmVzc19zZXEwLAogRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3Ig bmVhciAicmVncmVzc19zZXEwIgogTElORSAxOiAuLi5PTiByZWdyZXNzX3B1Yl9zaG91bGRfZmFp bCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHJlZ3Jlc3Nfc2UuLi4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitBTFRFUiBQVUJM SUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0IFNFVCBBTEwgU0VRVUVO Q0VTIEVYQ0VQVCAocmVncmVzc19zZXEwLCBwdWJfdGVzdC5yZWdyZXNzX3NlcTEpOworRVJST1I6 ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAicmVncmVzc19zZXEwIgorTElORSAxOiAuLi5fZm9y YWxsc2VxdWVuY2VzX2V4Y2VwdCBTRVQgQUxMIFNFUVVFTkNFUyBFWENFUFQgKHJlZ3Jlc3Nfc2Uu Li4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCiAtLSBmYWlsIC0gdW5sb2dnZWQgc2VxdWVuY2UgaXMgc3BlY2lmaWVkIGluIEVY Q0VQVCBzZXF1ZW5jZSBsaXN0CiBDUkVBVEUgVU5MT0dHRUQgU0VRVUVOQ0UgcmVncmVzc19zZXFf dW5sb2dnZWQ7CiBDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfc2hvdWxkX2ZhaWwgRk9S IEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3NlcV91bmxvZ2dlZCk7CiBF UlJPUjogIGNhbm5vdCBzcGVjaWZ5ICJwdWJsaWMucmVncmVzc19zZXFfdW5sb2dnZWQiIGluIHRo ZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UKIERFVEFJTDogIFRoaXMgb3Bl cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHVubG9nZ2VkIHNlcXVlbmNlcy4KK0FMVEVSIFBV QkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQgU0VUIEFMTCBTRVFV RU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3NlcV91bmxvZ2dlZCk7CitFUlJPUjogIGNh bm5vdCBzcGVjaWZ5ICJwdWJsaWMucmVncmVzc19zZXFfdW5sb2dnZWQiIGluIHRoZSBwdWJsaWNh dGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlz IG5vdCBzdXBwb3J0ZWQgZm9yIHVubG9nZ2VkIHNlcXVlbmNlcy4KIC0tIGZhaWwgLSB0ZW1wb3Jh cnkgc2VxdWVuY2UgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5jZSBsaXN0CiBDUkVBVEUg VEVNUE9SQVJZIFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxX3RlbXA7CiBDUkVBVEUgUFVCTElDQVRJT04g cmVncmVzc19wdWJfc2hvdWxkX2ZhaWwgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5D RSByZWdyZXNzX3NlcV90ZW1wKTsKIEVSUk9SOiAgY2Fubm90IHNwZWNpZnkgInBnX3RlbXAucmVn cmVzc19zZXFfdGVtcCIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoU0VRVUVOQ0UpIGNsYXVz ZQogREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYXJ5 IHNlcXVlbmNlcy4KK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNl c19leGNlcHQgU0VUIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3NlcV90 ZW1wKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgInBnX3RlbXAucmVncmVzc19zZXFfdGVtcCIg aW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoU0VRVUVOQ0UpIGNsYXVzZQorREVUQUlMOiAgVGhp cyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYXJ5IHNlcXVlbmNlcy4KIC0t IGZhaWwgLSBzZXF1ZW5jZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCB0YWJsZSBsaXN0 CiBDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfc2hvdWxkX2ZhaWwgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIChUQUJMRSByZWdyZXNzX3NlcTApOwogRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAi cHVibGljLnJlZ3Jlc3Nfc2VxMCIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoVEFCTEUpIGNs YXVzZQogREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3Igc2VxdWVu Y2VzLgorQUxURVIgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2Vw dCBTRVQgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3Nfc2VxMCk7CitFUlJPUjogIGNh bm5vdCBzcGVjaWZ5ICJwdWJsaWMucmVncmVzc19zZXEwIiBpbiB0aGUgcHVibGljYXRpb24gRVhD RVBUIChUQUJMRSkgY2xhdXNlCitERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9y dGVkIGZvciBzZXF1ZW5jZXMuCiAtLSBmYWlsIC0gdGFibGUgb2JqZWN0IGlzIHNwZWNpZmllZCBp biBFWENFUFQgc2VxdWVuY2UgbGlzdAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3No b3VsZF9mYWlsIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc190YWIx KTsKIEVSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1YmxpYy5yZWdyZXNzX3RhYjEiIGluIHRoZSBw dWJsaWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UKIERFVEFJTDogIFRoaXMgb3BlcmF0 aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jl c3NfcHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQgU0VUIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChT RVFVRU5DRSByZWdyZXNzX3RhYjEpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnJl Z3Jlc3NfdGFiMSIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoU0VRVUVOQ0UpIGNsYXVzZQor REVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGVzLgogRFJP UCBTRVFVRU5DRSByZWdyZXNzX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3Nfc2VxMSwgcHViX3Rlc3Qu cmVncmVzc19zZXEyLCByZWdyZXNzX3NlcV91bmxvZ2dlZCwgcmVncmVzc19zZXFfdGVtcDsKIERS T1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMTsKIERST1AgUFVCTElD QVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbAppbmRleCAxMWMyMGU2NTE0My4uOTJlY2ZjODNhYTIgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTI2OSw2ICsyNjksMTQgQEAgQ1JFQVRFIFBVQkxJQ0FU SU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQgRk9SIEFMTCBTRVFVRU5DRVMg RVhDRVBUICgKIEFMVEVSIFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxMiBTRVQgU0NIRU1BIHB1Yl90ZXN0 OwogXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2VwdAogCistLSBNb2RpZnkg dGhlIHNlcXVlbmNlIGxpc3QgaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9O IHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQgU0VUIEFMTCBTRVFVRU5DRVMgRVhD RVBUIChTRVFVRU5DRSByZWdyZXNzX3NlcTApOworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2Vx dWVuY2VzX2V4Y2VwdAorCistLSBDbGVhciB0aGUgc2VxdWVuY2UgbGlzdCBpbiB0aGUgRVhDRVBU IGNsYXVzZQorQUxURVIgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4 Y2VwdCBTRVQgQUxMIFNFUVVFTkNFUzsKK1xkUnArIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNl c19leGNlcHQKKwogLS0gVGVzdCBjb21iaW5hdGlvbiBvZiBBTEwgU0VRVUVOQ0VTIGFuZCBBTEwg VEFCTEVTIHdpdGggRVhDRVBUIGNsYXVzZQogQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGFiMShhIGlu dCk7CiBDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0 YWJsZXNfZXhjZXB0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgcmVncmVzc190YWIxKSwg QUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxMCk7CkBAIC0yNzcsMjAg KzI4NSwyNSBAQCBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogCiAtLSBmYWlsIC0gZmlyc3Qg c2VxdWVuY2UgaW4gdGhlIEVYQ0VQVCBsaXN0IHNob3VsZCB1c2UgU0VRVUVOQ0Uga2V5d29yZAog Q1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWlsIEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCAocmVncmVzc19zZXEwLCBwdWJfdGVzdC5yZWdyZXNzX3NlcTEpOworQUxURVIgUFVC TElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2VwdCBTRVQgQUxMIFNFUVVF TkNFUyBFWENFUFQgKHJlZ3Jlc3Nfc2VxMCwgcHViX3Rlc3QucmVncmVzc19zZXExKTsKIAogLS0g ZmFpbCAtIHVubG9nZ2VkIHNlcXVlbmNlIGlzIHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2Ug bGlzdAogQ1JFQVRFIFVOTE9HR0VEIFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxX3VubG9nZ2VkOwogQ1JF QVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWlsIEZPUiBBTEwgU0VRVUVOQ0VT IEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19zZXFfdW5sb2dnZWQpOworQUxURVIgUFVCTElDQVRJ T04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2VwdCBTRVQgQUxMIFNFUVVFTkNFUyBF WENFUFQgKFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxX3VubG9nZ2VkKTsKIAogLS0gZmFpbCAtIHRlbXBv cmFyeSBzZXF1ZW5jZSBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIHNlcXVlbmNlIGxpc3QKIENSRUFU RSBURU1QT1JBUlkgU0VRVUVOQ0UgcmVncmVzc19zZXFfdGVtcDsKIENSRUFURSBQVUJMSUNBVElP TiByZWdyZXNzX3B1Yl9zaG91bGRfZmFpbCBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVF TkNFIHJlZ3Jlc3Nfc2VxX3RlbXApOworQUxURVIgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9y YWxsc2VxdWVuY2VzX2V4Y2VwdCBTRVQgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHJl Z3Jlc3Nfc2VxX3RlbXApOwogCiAtLSBmYWlsIC0gc2VxdWVuY2Ugb2JqZWN0IGlzIHNwZWNpZmll ZCBpbiBFWENFUFQgdGFibGUgbGlzdAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3No b3VsZF9mYWlsIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgcmVncmVzc19zZXEwKTsKK0FM VEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQgU0VUIEFM TCBUQUJMRVMgRVhDRVBUIChUQUJMRSByZWdyZXNzX3NlcTApOwogCiAtLSBmYWlsIC0gdGFibGUg b2JqZWN0IGlzIHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlzdAogQ1JFQVRFIFBVQkxJ Q0FUSU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWlsIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAo U0VRVUVOQ0UgcmVncmVzc190YWIxKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zv cmFsbHNlcXVlbmNlc19leGNlcHQgU0VUIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBy ZWdyZXNzX3RhYjEpOwogCiBEUk9QIFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxMCwgcHViX3Rlc3QucmVn cmVzc19zZXExLCBwdWJfdGVzdC5yZWdyZXNzX3NlcTIsIHJlZ3Jlc3Nfc2VxX3VubG9nZ2VkLCBy ZWdyZXNzX3NlcV90ZW1wOwogRFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1 ZW5jZXMxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5w bCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKaW5kZXggYzM1ZWY5NDAz ZWUuLmQzMTY2YjIxM2Y0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdf ZXhjZXB0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKQEAg LTI4OSw2ICsyODksNyBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMn LCBxcSAoCiAJQ1JFQVRFIFRBQkxFIHNlcV90ZXN0ICh2IEJJR0lOVCk7CiAJQ1JFQVRFIFNFUVVF TkNFIHNlcV9leGNsdWRlZF9pbl9wdWIxOworCUNSRUFURSBTRVFVRU5DRSBzZXFfZXhjbHVkZWRf aW5fcHViMV8yOwogCUNSRUFURSBTRVFVRU5DRSBzZXFfZXhjbHVkZWRfaW5fcHViMjsKIAlJTlNF UlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgnc2VxX2V4Y2x1ZGVkX2luX3B1YjEnKSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CiAJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNU IG5leHR2YWwoJ3NlcV9leGNsdWRlZF9pbl9wdWIyJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDApOwpAQCAtMjk3LDYgKzI5OCw3IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAogCUNSRUFURSBTRVFV RU5DRSBzZXFfZXhjbHVkZWRfaW5fcHViMTsKKwlDUkVBVEUgU0VRVUVOQ0Ugc2VxX2V4Y2x1ZGVk X2luX3B1YjFfMjsKIAlDUkVBVEUgU0VRVUVOQ0Ugc2VxX2V4Y2x1ZGVkX2luX3B1YjI7CiAJQ1JF QVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX2FsbF9zZXFfZXhjZXB0IENPTk5FQ1RJT04gJyRwdWJs aXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9hbGxfc2VxX2V4Y2VwdDE7CiApKTsK QEAgLTMxNiw2ICszMTgsMTggQEAgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVkIEZST00gc2VxX2V4 Y2x1ZGVkX2luX3B1YjIiKTsKIGlzKCRyZXN1bHQsICcxMDB8dCcsICdpbml0aWFsIHRlc3QgZGF0 YSByZXBsaWNhdGVkIGZvciBzZXFfZXhjbHVkZWRfaW5fcHViMicpOwogCisjIENoZWNrIEFMVEVS IFBVQkxJQ0FUSU9OIC4uLiBBTEwgU0VRVUVOQ0VTIChFWENFUFQgU0VRVUVOQ0UgLi4uKQorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgUFVCTElD QVRJT04gdGFwX3B1Yl9hbGxfc2VxX2V4Y2VwdDEgU0VUIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChT RVFVRU5DRSBzZXFfZXhjbHVkZWRfaW5fcHViMSwgc2VxX2V4Y2x1ZGVkX2luX3B1YjFfMik7CisJ SU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3NlcV9leGNsdWRlZF9pbl9wdWIx XzInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7KQorKTsKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9hbGxf c2VxX2V4Y2VwdCBSRUZSRVNIIFNFUVVFTkNFUyIpOworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVk IEZST00gc2VxX2V4Y2x1ZGVkX2luX3B1YjFfMiIpOworaXMoJHJlc3VsdCwgJzF8ZicsICdzZXF1 ZW5jZXMgaW4gdGhlIEVYQ0VQVCBsaXN0IGFyZSBleGNsdWRlZCcpOworCiAjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIFRlc3Qgd2hlbiBhIHN1YnNjcmlw dGlvbiBpcyBzdWJzY3JpYmluZyB0byBtdWx0aXBsZSBwdWJsaWNhdGlvbnMKICMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0gCjIuMzQuMQoK --000000000000e9ccfc0655b1d2bd--