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 1vLzst-00G4Z3-1N for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Nov 2025 08:19:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vLzsr-000O5s-2I for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Nov 2025 08:19:18 +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 1vLzsr-000O5j-0m for pgsql-hackers@lists.postgresql.org; Thu, 20 Nov 2025 08:19:17 +0000 Received: from mail-lf1-x12a.google.com ([2a00:1450:4864:20::12a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vLzsp-000VVr-0B for pgsql-hackers@lists.postgresql.org; Thu, 20 Nov 2025 08:19:17 +0000 Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-5958232f806so594952e87.0 for ; Thu, 20 Nov 2025 00:19:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763626753; x=1764231553; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=MHr+36TNgENdaYudgri0uZiPooWP9+sun+DeMYWHYrc=; b=CPjgFIJLoCelNGqHPw/aQQrRP9DWcRjQLrIt2kwxH0aGfOfkXu0vnuO0jGfz9B3alT JyqHXCkA4oysjdVNb65BhP+qt/qk78PeIPPknLtu98lPHtwwFX7e/OaCIpTEhNAs4nvP 9Sq08gvXFJDGgDtYUwpTz/SxB/eXu+fLU8oFBt+vk8S8TIoDyXkuFp0YVOO5XaL3f26a h8iXbiMCWeSxrNml1nX5hvqq906X1ArxjU/ITOnD6BwLjVLDA+RX18EyWjFP2b8cbs40 Y2gJO4DcJalNPkaBaxyTZJDnFtQ428VHzeYh/vspek3dxl1Ed00lMs8L6W5VBwdyVoDL tK8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763626753; x=1764231553; h=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=MHr+36TNgENdaYudgri0uZiPooWP9+sun+DeMYWHYrc=; b=HcmZqQFoYFG8X4cNkF0/c9rj9Pg9SvlDP9eQMQxJ4wKMjqRvRaeJkwDy4WVdDxEPE2 ey6bWQuD2+F+RL/zjP2lHGrR1WoorHzqs6fln/xVbtTg/EefkUNAgAnlb9td4UtPn6ap uBqRPfUC/UHZWFlWlS8kRKC3FBElMeMXGAzHdQpCRxAZTx7f5/vF64KL/IBpJ9LFvd0K JJLQVHHQjWyfg0bIPre+6zmE1LPK6kClSjrVPmHZgcpJ7sv7nh83+JRL3avBztzOmEPI I2AqUBNFPh4fmaH0jY6JoHYQ4Nw4SukVxeHCWRbNJfp0TtuaH9Lq/OLSMV0cCaxzmeGz M93w== X-Gm-Message-State: AOJu0YxUsGPZPsssTAc3gst6PY8zfAVZsSmHXATKxAdriWRw+hi5WJCW ccsagzfDiiWksEktWcbczuGhWxVGtr6M/CyDWeVwjoqAlHt+immNXL/GSrdDdm6G01pjiM291Vu JuZZbbkn8+sT6irQh2jWUZ8lR1mrzlI0qy8l6EGVD+A== X-Gm-Gg: ASbGncvhitjK51vCebNQ6J7pOnMkfJRuWE3rmPZxihLTup2jj7BWab18ZDHnahR0PtB 4fsCfd6JwHU0ZUqeJ6ynvMDT2EfgGK92wKC63iOIpK6oEsWXeetz3C1lkWY9kv1PtE889hQSB75 452XD3kJbhzRFso6DZkjWIe2vccTdBbQmFSNLdR9Iu3jDsc3cQ1h3+RGQm+N9WPxLzVxFM80ksR IRAYS+xD8IMbAHbk/D/gDgC21sd3U4mhGYkbwbWXqZ2MQKz9Gb8zCGeY6ZKp3XN/NCd5qE= X-Google-Smtp-Source: AGHT+IH38qcb5s3JPGsNIOkA3LNUn3IZR2WHAmQ2kqfLbfXPuMOACvc3qHUR4kIH6LrIzc7jXVbCj4IGc0tNGI9K1CU= X-Received: by 2002:a05:6512:33ca:b0:58b:2ad:da89 with SMTP id 2adb3069b0e04-5969f37c903mr388967e87.21.1763626752819; Thu, 20 Nov 2025 00:19:12 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Chao Li Date: Thu, 20 Nov 2025 16:19:00 +0800 X-Gm-Features: AWmQ_bkTl8lOzkudEw2NiFDcmntYBVk8F9VY3RNzjeFLW6i6iPZVia1RKTPkDkY Message-ID: Subject: =?UTF-8?Q?Re=3A_quoteOneName=28=29_inconsistency_with_quote=5Fall=5Fiden?= =?UTF-8?Q?tifiers_=E2=80=94_replacement_API_proposed?= To: Postgres hackers Content-Type: multipart/mixed; boundary="0000000000001e72f30644025a95" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001e72f30644025a95 Content-Type: multipart/alternative; boundary="0000000000001e72f30644025a93" --0000000000001e72f30644025a93 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Nov 17, 2025 at 5:48=E2=80=AFPM Chao Li wr= ote: > Hi Hackers, > > =3D=3D Background =3D=3D > > While reviewing a patch, I noticed that quoteOneName() duplicates the > logic of quote_identifier() for adding double quotes to identifiers. The > main difference is that quoteOneName() does *not* honor the GUC > `quote_all_identifiers`. > > The typical usage pattern of quoteOneName() looks like this: > > ``` > // Define a local buffer with size MAX_QUOTED_NAME_LEN > // MAX_QUOTED_NAME_LEN =3D MAX_NAMELEN * 2 + 3 to ensure no overflow > char attname[MAX_QUOTED_NAME_LEN]; > > // Add quotes and copy into the stack buffer > quoteOneName(attname, RIAttName(pk_rel, > riinfo->pk_attnums[riinfo->nkeys - 1])); > > // Copy the quoted identifier into a StringInfo > appendStringInfoString(&querybuf, attname); > ``` > > This pattern is expensive because: > > * it allocates a larger-than-necessary buffer on the stack > * it incurs two pallocs and two data copies > > Looking further, the common pattern around quote_identifier() is similar: > > ``` > appendStringInfoString(&relations, quote_identifier(relname)); > ``` > > This also incurs two pallocs and two copies: quote_identifier() allocates > a temporary buffer and copies the quoted identifier into it, and then > appendStringInfoString() may allocate and copy again. > > =3D=3D Idea =3D=3D > > I'd like to propose introducing `appendStringInfoIdentifier()`, which add= s > the quoting logic directly to StringInfo. The goals are: > > * eventually deprecate quoteOneName() =E2=80=94 I'm not aware of a reason= why it > should ignore the GUC `quote_all_identifiers` > * simplify the usage patterns for quoting identifiers > * avoid unnecessary intermediate buffers, pallocs, and data copies > > =3D=3D About the attached patch =3D=3D > > Attached v1 is not intended to be the final version =E2=80=94 it is mainl= y to > demonstrate the idea and get feedback on the design direction. > > * 0001 implements `appendStringInfoIdentifier()` and uses it in a few > places > * 0002 switches ri_triggers.c to use it, resolving a complicated usage > pattern and showing a path toward removing quoteOneName() > > Comments and suggestions on the overall direction would be very welcome. > > CF entry added: https://commitfest.postgresql.org/patch/6240/. And here comes the v2 patch set. Best regards, Chao Li (Evan) --------------------- HighGo Software Co., Ltd. https://www.highgo.com/ --0000000000001e72f30644025a93 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Mon, = Nov 17, 2025 at 5:48=E2=80=AFPM Chao Li <li.evan.chao@gmail.com> wrote:
Hi Hackers,

=3D=3D Background =3D=3D
=
While reviewing a patch, I noticed that quoteOneName() dupli= cates the logic of quote_identifier() for adding double quotes to identifie= rs.=C2=A0 The main difference is that quoteOneName() does *not* honor the G= UC `quote_all_identifiers`.

The typical usage patt= ern of quoteOneName() looks like this:

```
=C2=A0 =C2=A0 // Define a local buffer with size MAX_QUOTED_NAME_LEN
=C2=A0 =C2=A0 // MAX_QUOTED_NAME_LEN =3D MAX_NAMELEN * 2 + 3 to ensu= re no overflow
=C2=A0 =C2=A0 char attname[MAX_QUOTED_NAME_LEN];

=C2=A0 =C2=A0 // Add quotes and copy into the stack= buffer
=C2=A0 =C2=A0 quoteOneName(attname, RIAttName(pk_rel, rii= nfo->pk_attnums[riinfo->nkeys - 1]));

=C2=A0= =C2=A0 // Copy the quoted identifier into a StringInfo
=C2=A0 = =C2=A0 appendStringInfoString(&querybuf, attname);
```
<= div>
This pattern is expensive because:

<= div>* it allocates a larger-than-necessary buffer on the stack
* = it incurs two pallocs and two data copies

Looking = further, the common pattern around quote_identifier() is similar:

```
=C2=A0 =C2=A0 appendStringInfoString(&rel= ations, quote_identifier(relname));
```

= This also incurs two pallocs and two copies: quote_identifier() allocates a= temporary buffer and copies the quoted identifier into it, and then append= StringInfoString() may allocate and copy again.

= =3D=3D Idea =3D=3D

I'd like to propose introdu= cing `appendStringInfoIdentifier()`, which adds the quoting logic directly = to StringInfo.=C2=A0 The goals are:

* eventually d= eprecate quoteOneName() =E2=80=94 I'm not aware of a reason why it shou= ld ignore the GUC `quote_all_identifiers`
* simplify the usage pa= tterns for quoting identifiers
* avoid unnecessary intermediate b= uffers, pallocs, and data copies

=3D=3D About the = attached patch =3D=3D

Attached v1 is not intended = to be the final version =E2=80=94 it is mainly to demonstrate the idea and = get feedback on the design direction.

* 0001 imple= ments `appendStringInfoIdentifier()` and uses it in a few places
= * 0002 switches ri_triggers.c to use it, resolving a complicated usage patt= ern and showing a path toward removing quoteOneName()

<= div>Comments and suggestions on the overall direction would be very welcome= .


CF= entry added:=C2=A0https://commitfest.postgresql.org/patch/6240/. And here comes the v2 = patch set.
=C2=A0
Best regards,
Chao Li (Evan)---------------------
HighGo Software Co., Ltd.
https://www.highgo.com/= =C2=A0
--0000000000001e72f30644025a93-- --0000000000001e72f30644025a95 Content-Type: application/octet-stream; name="v2-0001-Add-appendStringInfoIdentifier-to-avoid-intermedi.patch" Content-Disposition: attachment; filename="v2-0001-Add-appendStringInfoIdentifier-to-avoid-intermedi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi75ne2t0 RnJvbSA3MDk3MWQwZTc1YWI2MTQzNmQwMzI4YTg4ZTU0NDFjZjI3NTFhOWI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogRnJpLCAxNCBOb3YgMjAyNSAyMTo0NDoyOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMS80 XSBBZGQgYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoKSB0byBhdm9pZCBpbnRlcm1lZGlhdGUK IHF1b3RpbmcgYnVmZmVycwoKSW50cm9kdWNlIGFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCkg YW5kCmFwcGVuZFN0cmluZ0luZm9RdWFsaWZpZWRJZGVudGlmaWVyKCksIGhlbHBlciBmdW5jdGlv bnMgdGhhdCBhcHBlbmQgYW4gU1FMCmlkZW50aWZpZXIgZGlyZWN0bHkgdG8gYSBTdHJpbmdJbmZv IHdoaWxlIGFwcGx5aW5nIHF1b3RpbmcgcnVsZXMgd2hlbgpuZWNlc3NhcnkuICBUaGlzIGF2b2lk cyBhbGxvY2F0aW5nIGFuZCBjb3B5aW5nIHRocm91Z2ggdGVtcG9yYXJ5IHBhbGxvYwpidWZmZXJz LCBhcyBjdXJyZW50bHkgaGFwcGVucyB3aXRoIHF1b3RlX2lkZW50aWZpZXIoKSB3aGVuIHVzZWQg dG9nZXRoZXIKd2l0aCBhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCkuCgpUaGUgbmV3IGZ1bmN0aW9u cyBpbXByb3ZlIGJvdGggcmVhZGFiaWxpdHkgYW5kIGVmZmljaWVuY3kgb2YgY2FsbCBzaXRlcyB0 aGF0CmNvbnN0cnVjdCBTUUwgZnJhZ21lbnRzLCBlc3BlY2lhbGx5IHRob3NlIHRoYXQgbmVlZCB0 byBidWlsZCBxdWFsaWZpZWQKbmFtZXMgc3VjaCBhcyBzY2hlbWEudGFibGUuCgpDb252ZXJ0IHNl dmVyYWwgZXhpc3RpbmcgY2FsbGVycyBpbiBvYmplY3RhZGRyZXNzLmMsIGV4cGxhaW4uYyBhbmQK cnVsZXV0aWxzLmMgdG8gdXNlIGFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCkgLwphcHBlbmRT dHJpbmdJbmZvUXVhbGlmaWVkSWRlbnRpZmllcigpIGFzIGV4YW1wbGVzLgoKTm8gZnVuY3Rpb25h bCBiZWhhdmlvciBjaGFuZ2UgaXMgaW50ZW5kZWQuCgpBdXRob3I6IENoYW8gTGkgPGxpY0BoaWdo Z28uY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRW9XeDI9ZzJSVmt4WEI9 SnpXcGhnZmc0UUdWK3NwYUEzUFExckJNMmlNZWhyVnZqZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNy Yy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jIHwgIDIwICsrLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYyB8ICAgOCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j ICAgfCAxNDIgKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogc3JjL2luY2x1ZGUvdXRpbHMv YnVpbHRpbnMuaCAgICAgICAgfCAgIDYgKysKIDUgZmlsZXMgY2hhbmdlZCwgMTM2IGluc2VydGlv bnMoKyksIDQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv b2JqZWN0YWRkcmVzcy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5k ZXggYzc1YjcxMzFlZDcuLmZiYjBiNGYzMGYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJl c3MuYwpAQCAtMzYxMSw5ICszNjExLDkgQEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2Jq ZWN0QWRkcmVzcyAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spCiAJCQkJZWxzZQogCQkJCQluc3Bu YW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKGNmZ0Zvcm0tPmNmZ25hbWVzcGFjZSk7CiAKLQkJCQlh cHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInRleHQgc2VhcmNoIGNvbmZpZ3VyYXRpb24gJXMi KSwKLQkJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5hbWUsCi0JCQkJCQkJ CQkJCQkJCQlOYW1lU3RyKGNmZ0Zvcm0tPmNmZ25hbWUpKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5m b1F1YWxpZmllZElkZW50aWZpZXIoJmJ1ZmZlciwKKwkJCQkJCQkJCQkJCQlfKCJ0ZXh0IHNlYXJj aCBjb25maWd1cmF0aW9uICIpLAorCQkJCQkJCQkJCQkJCW5zcG5hbWUsIE5hbWVTdHIoY2ZnRm9y bS0+Y2ZnbmFtZSksIE5VTEwpOwogCQkJCVJlbGVhc2VTeXNDYWNoZSh0dXApOwogCQkJCWJyZWFr OwogCQkJfQpAQCAtNDg4Myw4ICs0ODgzLDcgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25z dCBPYmplY3RBZGRyZXNzICpvYmplY3QsCiAKIAkJCQlpZiAoYXR0cikKIAkJCQl7Ci0JCQkJCWFw cGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIi4lcyIsCi0JCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmll cihhdHRyKSk7CisJCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWZmZXIsICIuIiwg YXR0ciwgTlVMTCk7CiAJCQkJCWlmIChvYmpuYW1lKQogCQkJCQkJKm9iam5hbWUgPSBsYXBwZW5k KCpvYmpuYW1lLCBhdHRyKTsKIAkJCQl9CkBAIC01Mzk1LDggKzUzOTQsNyBAQCBnZXRPYmplY3RJ ZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCQkJCQkgb2JqZWN0 LT5vYmplY3RJZCk7CiAJCQkJCWJyZWFrOwogCQkJCX0KLQkJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZidWZmZXIsCi0JCQkJCQkJCQkgICBxdW90ZV9pZGVudGlmaWVyKG5zcG5hbWUpKTsKKwkJ CQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcigmYnVmZmVyLCBOVUxMLCBuc3BuYW1lLCBOVUxM KTsKIAkJCQlpZiAob2JqbmFtZSkKIAkJCQkJKm9iam5hbWUgPSBsaXN0X21ha2UxKG5zcG5hbWUp OwogCQkJCWJyZWFrOwpAQCAtNTczOSwxNiArNTczNywxMiBAQCBnZXRPYmplY3RJZGVudGl0eVBh cnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCQlkZWZhY2wgPSAoRm9ybV9wZ19k ZWZhdWx0X2FjbCkgR0VUU1RSVUNUKHR1cCk7CiAKIAkJCQl1c2VybmFtZSA9IEdldFVzZXJOYW1l RnJvbUlkKGRlZmFjbC0+ZGVmYWNscm9sZSwgZmFsc2UpOwotCQkJCWFwcGVuZFN0cmluZ0luZm8o JmJ1ZmZlciwKLQkJCQkJCQkJICJmb3Igcm9sZSAlcyIsCi0JCQkJCQkJCSBxdW90ZV9pZGVudGlm aWVyKHVzZXJuYW1lKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwg ImZvciByb2xlICIsIHVzZXJuYW1lLCBOVUxMKTsKIAogCQkJCWlmIChPaWRJc1ZhbGlkKGRlZmFj bC0+ZGVmYWNsbmFtZXNwYWNlKSkKIAkJCQl7CiAJCQkJCXNjaGVtYSA9IGdldF9uYW1lc3BhY2Vf bmFtZV9vcl90ZW1wKGRlZmFjbC0+ZGVmYWNsbmFtZXNwYWNlKTsKLQkJCQkJYXBwZW5kU3RyaW5n SW5mbygmYnVmZmVyLAotCQkJCQkJCQkJICIgaW4gc2NoZW1hICVzIiwKLQkJCQkJCQkJCSBxdW90 ZV9pZGVudGlmaWVyKHNjaGVtYSkpOworCQkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcigm YnVmZmVyLCAiIGluIHNjaGVtYSAiLCBzY2hlbWEsIE5VTEwpOwogCQkJCX0KIAkJCQllbHNlCiAJ CQkJCXNjaGVtYSA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggN2U2OTlmODU5NWUu LmNjOTc5NzM3ODQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0xNzA1LDggKzE3MDUsNyBA QCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJ CQlleHBsYWluX2dldF9pbmRleF9uYW1lKGJpdG1hcGluZGV4c2Nhbi0+aW5kZXhpZCk7CiAKIAkJ CQlpZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQotCQkJCQlhcHBlbmRTdHJp bmdJbmZvKGVzLT5zdHIsICIgb24gJXMiLAotCQkJCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoaW5k ZXhuYW1lKSk7CisJCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGVzLT5zdHIsCSIgb24g IiwgaW5kZXhuYW1lLCBOVUxMKTsKIAkJCQllbHNlCiAJCQkJCUV4cGxhaW5Qcm9wZXJ0eVRleHQo IkluZGV4IE5hbWUiLCBpbmRleG5hbWUsIGVzKTsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3Ry aWdnZXJzLmMKaW5kZXggMDU5ZmM1ZWJmNjAuLjllMTNmNTI2OTk0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcmlfdHJpZ2dlcnMuYwpAQCAtMzk1LDcgKzM5NSw2IEBAIFJJX0ZLZXlfY2hlY2soVHJpZ2dl ckRhdGEgKnRyaWdkYXRhKQogCQl7CiAJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKIAkJCQkJCSBS SUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7 Ci0KIAkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAogCQkJCQkJCSAiU0VMRUNUIDEgRlJP TSAoU0VMRUNUICVzIEFTIHIgRlJPTSAlcyVzIHgiLAogCQkJCQkJCSBhdHRuYW1lLCBwa19vbmx5 LCBwa3JlbG5hbWUpOwpAQCAtMjA5NSw3ICsyMDk0LDYgQEAgcmlfR2VuZXJhdGVRdWFsQ29sbGF0 aW9uKFN0cmluZ0luZm8gYnVmLCBPaWQgY29sbGF0aW9uKQogCUhlYXBUdXBsZQl0cDsKIAlGb3Jt X3BnX2NvbGxhdGlvbiBjb2xsdHVwOwogCWNoYXIJICAgKmNvbGxuYW1lOwotCWNoYXIJCW9uZW5h bWVbTUFYX1FVT1RFRF9OQU1FX0xFTl07CiAKIAkvKiBOb3RoaW5nIHRvIGRvIGlmIGl0J3MgYSBu b25jb2xsYXRhYmxlIGRhdGEgdHlwZSAqLwogCWlmICghT2lkSXNWYWxpZChjb2xsYXRpb24pKQpA QCAtMjExMSwxMCArMjEwOSw4IEBAIHJpX0dlbmVyYXRlUXVhbENvbGxhdGlvbihTdHJpbmdJbmZv IGJ1ZiwgT2lkIGNvbGxhdGlvbikKIAkgKiBXZSBxdWFsaWZ5IHRoZSBuYW1lIGFsd2F5cywgZm9y IHNpbXBsaWNpdHkgYW5kIHRvIGVuc3VyZSB0aGUgcXVlcnkgaXMKIAkgKiBub3Qgc2VhcmNoLXBh dGgtZGVwZW5kZW50LgogCSAqLwotCXF1b3RlT25lTmFtZShvbmVuYW1lLCBnZXRfbmFtZXNwYWNl X25hbWUoY29sbHR1cC0+Y29sbG5hbWVzcGFjZSkpOwotCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAi IENPTExBVEUgJXMiLCBvbmVuYW1lKTsKLQlxdW90ZU9uZU5hbWUob25lbmFtZSwgY29sbG5hbWUp OwotCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLiVzIiwgb25lbmFtZSk7CisJYXBwZW5kU3RyaW5n SW5mb0lkZW50aWZpZXIoYnVmLCAiIENPTExBVEUgIiwgZ2V0X25hbWVzcGFjZV9uYW1lKGNvbGx0 dXAtPmNvbGxuYW1lc3BhY2UpLCBOVUxMKTsKKwlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihi dWYsICIuIiwgY29sbG5hbWUsIE5VTEwpOwogCiAJUmVsZWFzZVN5c0NhY2hlKHRwKTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCA1NTZhYjA1N2U1YS4uMWQ3NjdkZWI2YzQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTEzMDUyLDI1ICsxMzA1MiwxNyBAQCBwcmlu dFN1YnNjcmlwdHMoU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsIGRlcGFyc2VfY29udGV4dCAqY29u dGV4dCkKIAl9CiB9CiAKLS8qCi0gKiBxdW90ZV9pZGVudGlmaWVyCQkJLSBRdW90ZSBhbiBpZGVu dGlmaWVyIG9ubHkgaWYgbmVlZGVkCi0gKgotICogV2hlbiBxdW90ZXMgYXJlIG5lZWRlZCwgd2Ug cGFsbG9jIHRoZSByZXF1aXJlZCBzcGFjZTsgc2xpZ2h0bHkKLSAqIHNwYWNlLXdhc3RlZnVsIGJ1 dCB3ZWxsIHdvcnRoIGl0IGZvciBub3RhdGlvbmFsIHNpbXBsaWNpdHkuCi0gKi8KLWNvbnN0IGNo YXIgKgotcXVvdGVfaWRlbnRpZmllcihjb25zdCBjaGFyICppZGVudCkKK3N0YXRpYyBpbmxpbmUg Ym9vbAoraXNfaWRlbnRpZmllcl9zYWZlKGNvbnN0IGNoYXIgKmlkZW50LCBpbnQgKm5xdW90ZXMp CiB7CiAJLyoKIAkgKiBDYW4gYXZvaWQgcXVvdGluZyBpZiBpZGVudCBzdGFydHMgd2l0aCBhIGxv d2VyY2FzZSBsZXR0ZXIgb3IgdW5kZXJzY29yZQogCSAqIGFuZCBjb250YWlucyBvbmx5IGxvd2Vy Y2FzZSBsZXR0ZXJzLCBkaWdpdHMsIGFuZCB1bmRlcnNjb3JlcywgKmFuZCogaXMKIAkgKiBub3Qg YW55IFNRTCBrZXl3b3JkLiAgT3RoZXJ3aXNlLCBzdXBwbHkgcXVvdGVzLgogCSAqLwotCWludAkJ CW5xdW90ZXMgPSAwOwogCWJvb2wJCXNhZmU7Ci0JY29uc3QgY2hhciAqcHRyOwotCWNoYXIJICAg KnJlc3VsdDsKLQljaGFyCSAgICpvcHRyOworCisJKm5xdW90ZXMgPSAwOwogCiAJLyoKIAkgKiB3 b3VsZCBsaWtlIHRvIHVzZSA8Y3R5cGUuaD4gbWFjcm9zIGhlcmUsIGJ1dCB0aGV5IG1pZ2h0IHlp ZWxkIHVud2FudGVkCkBAIC0xMzA3OCw3ICsxMzA3MCw3IEBAIHF1b3RlX2lkZW50aWZpZXIoY29u c3QgY2hhciAqaWRlbnQpCiAJICovCiAJc2FmZSA9ICgoaWRlbnRbMF0gPj0gJ2EnICYmIGlkZW50 WzBdIDw9ICd6JykgfHwgaWRlbnRbMF0gPT0gJ18nKTsKIAotCWZvciAocHRyID0gaWRlbnQ7ICpw dHI7IHB0cisrKQorCWZvciAoY29uc3QgY2hhciAqcHRyID0gaWRlbnQ7ICpwdHI7IHB0cisrKQog CXsKIAkJY2hhcgkJY2ggPSAqcHRyOwogCkBAIC0xMzA5Miw3ICsxMzA4NCw3IEBAIHF1b3RlX2lk ZW50aWZpZXIoY29uc3QgY2hhciAqaWRlbnQpCiAJCXsKIAkJCXNhZmUgPSBmYWxzZTsKIAkJCWlm IChjaCA9PSAnIicpCi0JCQkJbnF1b3RlcysrOworCQkJCSgqbnF1b3RlcykrKzsKIAkJfQogCX0K IApAQCAtMTMxMTUsMTQgKzEzMTA3LDIwIEBAIHF1b3RlX2lkZW50aWZpZXIoY29uc3QgY2hhciAq aWRlbnQpCiAJCQlzYWZlID0gZmFsc2U7CiAJfQogCi0JaWYgKHNhZmUpCi0JCXJldHVybiBpZGVu dDsJCQkvKiBubyBjaGFuZ2UgbmVlZGVkICovCisJcmV0dXJuIHNhZmU7Cit9CiAKLQlyZXN1bHQg PSAoY2hhciAqKSBwYWxsb2Moc3RybGVuKGlkZW50KSArIG5xdW90ZXMgKyAyICsgMSk7CitzdGF0 aWMgaW5saW5lIGNvbnN0IGNoYXIgKgorcXVvdGVfaWRlbnRpZmllcl9pbnRlcm5hbChjb25zdCBj aGFyICppZGVudCwgaW50IG5xdW90ZXMsIGNoYXIgKipyZXN1bHQpCit7CisJY2hhcgkgICAqb3B0 cjsKIAotCW9wdHIgPSByZXN1bHQ7CisJaWYgKCpyZXN1bHQgPT0gTlVMTCkKKwkJKnJlc3VsdCA9 IChjaGFyICopIHBhbGxvYyhzdHJsZW4oaWRlbnQpICsgbnF1b3RlcyArIDIgKyAxKTsKKworCW9w dHIgPSAqcmVzdWx0OwogCSpvcHRyKysgPSAnIic7Ci0JZm9yIChwdHIgPSBpZGVudDsgKnB0cjsg cHRyKyspCisJZm9yIChjb25zdCBjaGFyICpwdHIgPSBpZGVudDsgKnB0cjsgcHRyKyspCiAJewog CQljaGFyCQljaCA9ICpwdHI7CiAKQEAgLTEzMTMzLDcgKzEzMTMxLDEwNyBAQCBxdW90ZV9pZGVu dGlmaWVyKGNvbnN0IGNoYXIgKmlkZW50KQogCSpvcHRyKysgPSAnIic7CiAJKm9wdHIgPSAnXDAn OwogCi0JcmV0dXJuIHJlc3VsdDsKKwlyZXR1cm4gKnJlc3VsdDsKK30KKworLyoKKyAqIHF1b3Rl X2lkZW50aWZpZXIJCQktIFF1b3RlIGFuIGlkZW50aWZpZXIgb25seSBpZiBuZWVkZWQKKyAqCisg KiBXaGVuIHF1b3RlcyBhcmUgbmVlZGVkLCB3ZSBwYWxsb2MgdGhlIHJlcXVpcmVkIHNwYWNlOyBz bGlnaHRseQorICogc3BhY2Utd2FzdGVmdWwgYnV0IHdlbGwgd29ydGggaXQgZm9yIG5vdGF0aW9u YWwgc2ltcGxpY2l0eS4KKyAqLworY29uc3QgY2hhciAqCitxdW90ZV9pZGVudGlmaWVyKGNvbnN0 IGNoYXIgKmlkZW50KQoreworCWludAkJCW5xdW90ZXM7CisJYm9vbAkJc2FmZTsKKwljaGFyCSAg ICpyZXN1bHQgPSBOVUxMOworCisJc2FmZSA9IGlzX2lkZW50aWZpZXJfc2FmZShpZGVudCwgJm5x dW90ZXMpOworCWlmIChzYWZlKQorCQlyZXR1cm4gaWRlbnQ7CQkJLyogbm8gY2hhbmdlIG5lZWRl ZCAqLworCisJcmV0dXJuIHF1b3RlX2lkZW50aWZpZXJfaW50ZXJuYWwoaWRlbnQsIG5xdW90ZXMs ICZyZXN1bHQpOworfQorCisvKgorICogYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIKKyAqICAg ICAgQXBwZW5kIGFuIFNRTCBpZGVudGlmaWVyIHRvIGEgU3RyaW5nSW5mbywgcXVvdGluZyBpZiBy ZXF1aXJlZC4KKyAqCisgKiBUaGlzIGJlaGF2ZXMgbGlrZSB3cml0aW5nIHByZWZpeCArIHF1b3Rl X2lkZW50aWZpZXIoaWRlbnQpICsgc3VmZml4IGludG8KKyAqIHRoZSBTdHJpbmdJbmZvLCBidXQg ZW1pdHMgdGhlIGlkZW50aWZpZXIgZGlyZWN0bHkgaW50byB0aGUgYnVmZmVyIHRvIGF2b2lkCisg KiBhbiBpbnRlcm1lZGlhdGUgcGFsbG9jLiAgcHJlZml4IGFuZCBzdWZmaXggbWF5IGJlIE5VTEwu CisgKgorICogVGhlIGlkZW50aWZpZXIgaXMgY29waWVkIHZlcmJhdGltIGlmIGl0IGlzIHNhZmUg dG8gbGVhdmUgdW5xdW90ZWQ7IG90aGVyd2lzZQorICogaXQgaXMgd3JpdHRlbiB3aXRoIGRvdWJs ZSBxdW90ZXMgYW5kIGVtYmVkZGVkIGRvdWJsZSBxdW90ZXMgYXJlIGRvdWJsZWQuCisgKiBRdW90 aW5nIHJ1bGVzIGFyZSBsb2NhbCB0byBydWxldXRpbHMsIHNvIHRoaXMgaGVscGVyIGlzIGRlZmlu ZWQgaGVyZSByYXRoZXIKKyAqIHRoYW4gaW4gc3RyaW5naW5mby5jLgorICovCisKK3ZvaWQKK2Fw cGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKFN0cmluZ0luZm8gc3RyLCBjb25zdCBjaGFyICpwcmVm aXgsCisJCQkJCQkgICBjb25zdCBjaGFyICppZGVudCwgY29uc3QgY2hhciAqc3VmZml4KQorewor CWludAkJCW5xdW90ZXM7CisJYm9vbAkJc2FmZTsKKwlpbnQJCQlpZGVudF9sZW47CisJaW50CQkJ cHJlZml4X2xlbiA9IDA7CisJaW50CQkJc3VmZml4X2xlbiA9IDA7CisKKwlzYWZlID0gaXNfaWRl bnRpZmllcl9zYWZlKGlkZW50LCAmbnF1b3Rlcyk7CisJaWYgKHNhZmUpCisJCWlkZW50X2xlbiA9 IHN0cmxlbihpZGVudCk7CisJZWxzZQorCQlpZGVudF9sZW4gPSBzdHJsZW4oaWRlbnQpICsgbnF1 b3RlcyArIDI7CS8qIHF1b3RlcyArIHBvc3NpYmxlCisJCQkJCQkJCQkJCQkJICogZXNjYXBlcyAq LworCisJaWYgKHByZWZpeCAhPSBOVUxMKQorCQlwcmVmaXhfbGVuID0gc3RybGVuKHByZWZpeCk7 CisKKwlpZiAoc3VmZml4ICE9IE5VTEwpCisJCXN1ZmZpeF9sZW4gPSBzdHJsZW4oc3VmZml4KTsK KworCWVubGFyZ2VTdHJpbmdJbmZvKHN0ciwgaWRlbnRfbGVuICsgcHJlZml4X2xlbiArIHN1ZmZp eF9sZW4gKyAxKTsJLyogKzEgZm9yIHRyYWlsaW5nIG51bGwgKi8KKworCWlmIChwcmVmaXggIT0g TlVMTCkKKwkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhzdHIsIHByZWZpeCwgcHJlZml4X2xlbik7 CisKKwlpZiAoc2FmZSkKKwkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhzdHIsIGlkZW50LCBpZGVu dF9sZW4pOworCWVsc2UKKwl7CisJCWNoYXIJICAgKnJlc3VsdCA9IHN0ci0+ZGF0YSArIHN0ci0+ bGVuOworCisJCSh2b2lkKSBxdW90ZV9pZGVudGlmaWVyX2ludGVybmFsKGlkZW50LCBucXVvdGVz LCAmcmVzdWx0KTsKKwkJc3RyLT5sZW4gKz0gaWRlbnRfbGVuOworCQlzdHItPmRhdGFbc3RyLT5s ZW5dID0gJ1wwJzsKKwl9CisKKwlpZiAoc3VmZml4ICE9IE5VTEwpCisJCWFwcGVuZEJpbmFyeVN0 cmluZ0luZm8oc3RyLCBzdWZmaXgsIHN1ZmZpeF9sZW4pOworfQorCisvKgorICogYXBwZW5kU3Ry aW5nSW5mb1F1YWxpZmllZElkZW50aWZpZXIKKyAqICAgICAgQXBwZW5kIGEgKHBvc3NpYmx5KSBx dWFsaWZpZWQgU1FMIGlkZW50aWZpZXIgdG8gYSBTdHJpbmdJbmZvLgorICoKKyAqIFdyaXRlcyBw cmVmaXggKyBxdWFsaWZpZXIgKyAnLicgKyBpZGVudCArIHN1ZmZpeCwgcXVvdGluZyBlYWNoIGlk ZW50aWZpZXIKKyAqIGNvbXBvbmVudCBpZiBuZWVkZWQuICBJZiBubyBxdWFsaWZpZXIgaXMgZ2l2 ZW4sIG9ubHkgaWRlbnQgKHBsdXMgb3B0aW9uYWwKKyAqIHByZWZpeC9zdWZmaXgpIGlzIGFwcGVu ZGVkLiAgcHJlZml4IGFuZCBzdWZmaXggbWF5IGJlIE5VTEwuCisgKgorICogVGhpcyBpcyBhIGNv bnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIGFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCkuCisg Ki8KK3ZvaWQKK2FwcGVuZFN0cmluZ0luZm9RdWFsaWZpZWRJZGVudGlmaWVyKFN0cmluZ0luZm8g c3RyLCBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJCQkJCQljb25zdCBjaGFyICpxdWFsaWZpZXIs IGNvbnN0IGNoYXIgKmlkZW50LAorCQkJCQkJCQkJY29uc3QgY2hhciAqc3VmZml4KQoreworCWlm IChxdWFsaWZpZXIpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihzdHIsIHByZWZp eCwgcXVhbGlmaWVyLCAiLiIpOworCQlwcmVmaXggPSBOVUxMOworCX0KKwlhcHBlbmRTdHJpbmdJ bmZvSWRlbnRpZmllcihzdHIsIHByZWZpeCwgaWRlbnQsIHN1ZmZpeCk7CiB9CiAKIC8qCkBAIC0x MzE1MCw4ICsxMzI0OCw4IEBAIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKGNvbnN0IGNoYXIg KnF1YWxpZmllciwKIAogCWluaXRTdHJpbmdJbmZvKCZidWYpOwogCWlmIChxdWFsaWZpZXIpCi0J CWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIiVzLiIsIHF1b3RlX2lkZW50aWZpZXIocXVhbGlmaWVy KSk7Ci0JYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCBxdW90ZV9pZGVudGlmaWVyKGlkZW50 KSk7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWYsIE5VTEwsIHF1YWxpZmllciwg Ii4iKTsKKwlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcigmYnVmLCBOVUxMLCBpZGVudCwgTlVM TCk7CiAJcmV0dXJuIGJ1Zi5kYXRhOwogfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9idWlsdGlucy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAppbmRleCBjZTYyODVh MmMwMy4uZmY0YmE3MjY1YzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5z LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaApAQCAtODQsNiArODQsMTIgQEAg ZXh0ZXJuIHZvaWQgZ2VuZXJhdGVfb3BlcmF0b3JfY2xhdXNlKFN0cmluZ0luZm8gYnVmLAogCQkJ CQkJCQkJIGNvbnN0IGNoYXIgKmxlZnRvcCwgT2lkIGxlZnRvcHR5cGUsCiAJCQkJCQkJCQkgT2lk IG9wb2lkLAogCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnJpZ2h0b3AsIE9pZCByaWdodG9wdHlwZSk7 CitleHRlcm4gdm9pZCBhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihTdHJpbmdJbmZvIHN0ciwg Y29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICppZGVudCwgY29uc3QgY2hhciAqc3VmZml4 KTsKK2V4dGVybiB2b2lkIGFwcGVuZFN0cmluZ0luZm9RdWFsaWZpZWRJZGVudGlmaWVyKFN0cmlu Z0luZm8gc3RyLAorCQkJCQkJCQkJCQkJY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCQkJCQkJ Y29uc3QgY2hhciAqcXVhbGlmaWVyLAorCQkJCQkJCQkJCQkJY29uc3QgY2hhciAqaWRlbnQsCisJ CQkJCQkJCQkJCQljb25zdCBjaGFyICpzdWZmaXgpOwogCiAvKiB2YXJjaGFyLmMgKi8KIGV4dGVy biBpbnQJYnBjaGFydHJ1ZWxlbihjaGFyICpzLCBpbnQgbGVuKTsKLS0gCjIuMzkuNSAoQXBwbGUg R2l0LTE1NCkKCg== --0000000000001e72f30644025a95 Content-Type: application/octet-stream; name="v2-0004-Use-appendStringInfoIdentifier-in-more-places.patch" Content-Disposition: attachment; filename="v2-0004-Use-appendStringInfoIdentifier-in-more-places.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi75o11p1 RnJvbSAxMmNjNGU2NjE5ZjdjYjI3M2ExZjAyZGMxNzA2Y2FjODQyYzg5YWMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogV2VkLCAxOSBOb3YgMjAyNSAxNTo1NToyMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgNC80 XSBVc2UgYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoKSBpbiBtb3JlIHBsYWNlcy4KCkF1dGhv cjogQ2hhbyBMaSA8bGljQGhpZ2hnby5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0FFb1d4Mj1nMlJWa3hYQj1KeldwaGdmZzRRR1Yrc3BhQTNQUTFyQk0yaU1laHJWdmpnQG1h aWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyAgICAgfCAg IDYgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jIHwgIDY0ICsrKy0tLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jIHwgICA4ICstCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICB8IDI2MCArKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCAxOTEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKaW5kZXggZDIzNDc0ZGE0ZmIuLjdjM2IwYmI3ODUzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKQEAgLTM2OTksMTQgKzM2OTksMTQgQEAgTmFtZUxpc3RU b1F1b3RlZFN0cmluZyhjb25zdCBMaXN0ICpuYW1lcykKIHsKIAlTdHJpbmdJbmZvRGF0YSBzdHJp bmc7CiAJTGlzdENlbGwgICAqbDsKKwljb25zdCBjaGFyICpzZXAgPSAiIjsKIAogCWluaXRTdHJp bmdJbmZvKCZzdHJpbmcpOwogCiAJZm9yZWFjaChsLCBuYW1lcykKIAl7Ci0JCWlmIChsICE9IGxp c3RfaGVhZChuYW1lcykpCi0JCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmc3RyaW5nLCAnLicpOwot CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZzdHJpbmcsIHF1b3RlX2lkZW50aWZpZXIoc3RyVmFs KGxmaXJzdChsKSkpKTsKKwkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJnN0cmluZywgc2Vw LCBzdHJWYWwobGZpcnN0KGwpKSwgTlVMTCk7CisJCXNlcCA9ICIuIjsKIAl9CiAKIAlyZXR1cm4g c3RyaW5nLmRhdGE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJl c3MuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jCmluZGV4IGZiYjBiNGYz MGYzLi5lZTQ5NWZjNTE1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3Rh ZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTUw MDQsOCArNTAwNCw3IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVz cyAqb2JqZWN0LAogCiAJCQkJaWYgKE9pZElzVmFsaWQoY29uLT5jb25yZWxpZCkpCiAJCQkJewot CQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsICIlcyBvbiAiLAotCQkJCQkJCQkJIHF1b3Rl X2lkZW50aWZpZXIoTmFtZVN0cihjb24tPmNvbm5hbWUpKSk7CisJCQkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKCZidWZmZXIsIE5VTEwsIE5hbWVTdHIoY29uLT5jb25uYW1lKSwgIiBvbiAi KTsKIAkJCQkJZ2V0UmVsYXRpb25JZGVudGl0eSgmYnVmZmVyLCBjb24tPmNvbnJlbGlkLCBvYmpu YW1lLAogCQkJCQkJCQkJCWZhbHNlKTsKIAkJCQkJaWYgKG9iam5hbWUpCkBAIC01MDIwLDEwICs1 MDE5LDEwIEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2Jq ZWN0LAogCQkJCQlkb21haW4ub2JqZWN0SWQgPSBjb24tPmNvbnR5cGlkOwogCQkJCQlkb21haW4u b2JqZWN0U3ViSWQgPSAwOwogCi0JCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiVzIG9u ICVzIiwKLQkJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKE5hbWVTdHIoY29uLT5jb25uYW1lKSks Ci0JCQkJCQkJCQkgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cygmZG9tYWluLCBvYmpuYW1lLAotCQkJ CQkJCQkJCQkJCQkJb2JqYXJncywgZmFsc2UpKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50 aWZpZXIoJmJ1ZmZlciwgTlVMTCwgTmFtZVN0cihjb24tPmNvbm5hbWUpLCAiIG9uICIpOworCQkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCisJCQkJCQkJCQkJICAgZ2V0T2JqZWN0 SWRlbnRpdHlQYXJ0cygmZG9tYWluLCBvYmpuYW1lLAorCQkJCQkJCQkJCQkJCQkJCSAgb2JqYXJn cywgZmFsc2UpKTsKIAogCQkJCQlpZiAob2JqbmFtZSkKIAkJCQkJCSpvYmphcmdzID0gbGFwcGVu ZCgqb2JqYXJncywgcHN0cmR1cChOYW1lU3RyKGNvbi0+Y29ubmFtZSkpKTsKQEAgLTUwOTYsOCAr NTA5NSw4IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2Jq ZWN0LAogCQkJCQlicmVhazsKIAkJCQl9CiAJCQkJbGFuZ0Zvcm0gPSAoRm9ybV9wZ19sYW5ndWFn ZSkgR0VUU1RSVUNUKGxhbmdUdXApOwotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZl ciwKLQkJCQkJCQkJCSAgIHF1b3RlX2lkZW50aWZpZXIoTmFtZVN0cihsYW5nRm9ybS0+bGFubmFt ZSkpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcigmYnVmZmVyLCBOVUxMLAorCQkJ CQkJCQkJCSAgIE5hbWVTdHIobGFuZ0Zvcm0tPmxhbm5hbWUpLCBOVUxMKTsKIAkJCQlpZiAob2Jq bmFtZSkKIAkJCQkJKm9iam5hbWUgPSBsaXN0X21ha2UxKHBzdHJkdXAoTmFtZVN0cihsYW5nRm9y bS0+bGFubmFtZSkpKTsKIAkJCQlSZWxlYXNlU3lzQ2FjaGUobGFuZ1R1cCk7CkBAIC01MTU1LDEw ICs1MTU0LDExIEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAq b2JqZWN0LAogCQkJCQkJIG9wY0Zvcm0tPm9wY21ldGhvZCk7CiAJCQkJYW1Gb3JtID0gKEZvcm1f cGdfYW0pIEdFVFNUUlVDVChhbVR1cCk7CiAKLQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIs ICIlcyBVU0lORyAlcyIsCi0JCQkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihzY2hl bWEsCi0JCQkJCQkJCQkJCQkJCQlOYW1lU3RyKG9wY0Zvcm0tPm9wY25hbWUpKSwKLQkJCQkJCQkJ IHF1b3RlX2lkZW50aWZpZXIoTmFtZVN0cihhbUZvcm0tPmFtbmFtZSkpKTsKKwkJCQlhcHBlbmRT dHJpbmdJbmZvUXVhbGlmaWVkSWRlbnRpZmllcigmYnVmZmVyLCBOVUxMLAorCQkJCQkJCQkJCQkJ CXNjaGVtYSwgTmFtZVN0cihvcGNGb3JtLT5vcGNuYW1lKSwKKwkJCQkJCQkJCQkJCQkiIFVTSU5H ICIpOworCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWZmZXIsIE5VTEwsCisJCQkJ CQkJCQkJICAgTmFtZVN0cihhbUZvcm0tPmFtbmFtZSksIE5VTEwpOwogCQkJCWlmIChvYmpuYW1l KQogCQkJCQkqb2JqbmFtZSA9IGxpc3RfbWFrZTMocHN0cmR1cChOYW1lU3RyKGFtRm9ybS0+YW1u YW1lKSksCiAJCQkJCQkJCQkJICBzY2hlbWEsCkBAIC01MTg2LDcgKzUxODYsNyBAQCBnZXRPYmpl Y3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCQkJCQkgb2Jq ZWN0LT5vYmplY3RJZCk7CiAJCQkJCWJyZWFrOwogCQkJCX0KLQkJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZidWZmZXIsIHF1b3RlX2lkZW50aWZpZXIoYW1uYW1lKSk7CisJCQkJYXBwZW5kU3Ry aW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgTlVMTCwgYW1uYW1lLCBOVUxMKTsKIAkJCQlpZiAo b2JqbmFtZSkKIAkJCQkJKm9iam5hbWUgPSBsaXN0X21ha2UxKGFtbmFtZSk7CiAJCQl9CkBAIC01 MzM5LDggKzUzMzksNyBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJl c3MgKm9iamVjdCwKIAogCQkJCXJ1bGUgPSAoRm9ybV9wZ19yZXdyaXRlKSBHRVRTVFJVQ1QodHVw KTsKIAotCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiVzIG9uICIsCi0JCQkJCQkJCSBx dW90ZV9pZGVudGlmaWVyKE5hbWVTdHIocnVsZS0+cnVsZW5hbWUpKSk7CisJCQkJYXBwZW5kU3Ry aW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgTlVMTCwgTmFtZVN0cihydWxlLT5ydWxlbmFtZSks ICIgb24gIik7CiAJCQkJZ2V0UmVsYXRpb25JZGVudGl0eSgmYnVmZmVyLCBydWxlLT5ldl9jbGFz cywgb2JqbmFtZSwgZmFsc2UpOwogCQkJCWlmIChvYmpuYW1lKQogCQkJCQkqb2JqbmFtZSA9IGxh cHBlbmQoKm9iam5hbWUsIHBzdHJkdXAoTmFtZVN0cihydWxlLT5ydWxlbmFtZSkpKTsKQEAgLTUz NzIsOCArNTM3MSw3IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVz cyAqb2JqZWN0LAogCiAJCQkJdHJpZyA9IChGb3JtX3BnX3RyaWdnZXIpIEdFVFNUUlVDVCh0dXAp OwogCi0JCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCAiJXMgb24gIiwKLQkJCQkJCQkJIHF1 b3RlX2lkZW50aWZpZXIoTmFtZVN0cih0cmlnLT50Z25hbWUpKSk7CisJCQkJYXBwZW5kU3RyaW5n SW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgTlVMTCwgTmFtZVN0cih0cmlnLT50Z25hbWUpLCAiIG9u ICIpOwogCQkJCWdldFJlbGF0aW9uSWRlbnRpdHkoJmJ1ZmZlciwgdHJpZy0+dGdyZWxpZCwgb2Jq bmFtZSwgZmFsc2UpOwogCQkJCWlmIChvYmpuYW1lKQogCQkJCQkqb2JqbmFtZSA9IGxhcHBlbmQo Km9iam5hbWUsIHBzdHJkdXAoTmFtZVN0cih0cmlnLT50Z25hbWUpKSk7CkBAIC01NTQ0LDggKzU1 NDIsNyBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVj dCwKIAkJCQkJYnJlYWs7CiAJCQkJaWYgKG9iam5hbWUpCiAJCQkJCSpvYmpuYW1lID0gbGlzdF9t YWtlMSh1c2VybmFtZSk7Ci0JCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAotCQkJ CQkJCQkJICAgcXVvdGVfaWRlbnRpZmllcih1c2VybmFtZSkpOworCQkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKCZidWZmZXIsIE5VTEwsIHVzZXJuYW1lLCBOVUxMKTsKIAkJCQlicmVhazsK IAkJCX0KIApAQCAtNTYwNiw4ICs1NjAzLDcgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25z dCBPYmplY3RBZGRyZXNzICpvYmplY3QsCiAJCQkJfQogCQkJCWlmIChvYmpuYW1lKQogCQkJCQkq b2JqbmFtZSA9IGxpc3RfbWFrZTEoZGF0bmFtZSk7Ci0JCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZygmYnVmZmVyLAotCQkJCQkJCQkJICAgcXVvdGVfaWRlbnRpZmllcihkYXRuYW1lKSk7CisJCQkJ YXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgTlVMTCwgZGF0bmFtZSwgTlVMTCk7 CiAJCQkJYnJlYWs7CiAJCQl9CiAKQEAgLTU2MjUsOCArNTYyMSw3IEBAIGdldE9iamVjdElkZW50 aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCX0KIAkJCQlpZiAob2Jq bmFtZSkKIAkJCQkJKm9iam5hbWUgPSBsaXN0X21ha2UxKHRibHNwYWNlKTsKLQkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCi0JCQkJCQkJCQkgICBxdW90ZV9pZGVudGlmaWVyKHRi bHNwYWNlKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgTlVMTCwg dGJsc3BhY2UsIE5VTEwpOwogCQkJCWJyZWFrOwogCQkJfQogCkBAIC01NjM4LDcgKzU2MzMsNyBA QCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJ CQkJCQkJCQkJCQltaXNzaW5nX29rKTsKIAkJCQlpZiAoZmR3KQogCQkJCXsKLQkJCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLCBxdW90ZV9pZGVudGlmaWVyKGZkdy0+ZmR3bmFtZSkp OworCQkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcigmYnVmZmVyLCBOVUxMLCBmZHctPmZk d25hbWUsIE5VTEwpOwogCQkJCQlpZiAob2JqbmFtZSkKIAkJCQkJCSpvYmpuYW1lID0gbGlzdF9t YWtlMShwc3RyZHVwKGZkdy0+ZmR3bmFtZSkpOwogCQkJCX0KQEAgLTU2NTMsOCArNTY0OCw3IEBA IGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJ CQkJCQkJCQkgICBtaXNzaW5nX29rKTsKIAkJCQlpZiAoc3J2KQogCQkJCXsKLQkJCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAotCQkJCQkJCQkJCSAgIHF1b3RlX2lkZW50aWZpZXIo c3J2LT5zZXJ2ZXJuYW1lKSk7CisJCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWZm ZXIsIE5VTEwsIHNydi0+c2VydmVybmFtZSwgTlVMTCk7CiAJCQkJCWlmIChvYmpuYW1lKQogCQkJ CQkJKm9iam5hbWUgPSBsaXN0X21ha2UxKHBzdHJkdXAoc3J2LT5zZXJ2ZXJuYW1lKSk7CiAJCQkJ fQpAQCAtNTY5NSw5ICs1Njg5LDggQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25zdCBPYmpl Y3RBZGRyZXNzICpvYmplY3QsCiAJCQkJCSpvYmphcmdzID0gbGlzdF9tYWtlMShwc3RyZHVwKHNy di0+c2VydmVybmFtZSkpOwogCQkJCX0KIAotCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwg IiVzIG9uIHNlcnZlciAlcyIsCi0JCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHVzZW5hbWUpLAot CQkJCQkJCQkgc3J2LT5zZXJ2ZXJuYW1lKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmll cigmYnVmZmVyLCBOVUxMLCB1c2VuYW1lLCAiIG9uIHNlcnZlciAiKTsKKwkJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZidWZmZXIsIHNydi0+c2VydmVybmFtZSk7CiAJCQkJYnJlYWs7CiAJCQl9 CiAKQEAgLTU4MDAsNyArNTc5Myw3IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2Jq ZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKIAkJCQkJYnJl YWs7CiAJCQkJfQotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgcXVvdGVfaWRl bnRpZmllcihleHRuYW1lKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZl ciwgTlVMTCwgZXh0bmFtZSwgTlVMTCk7CiAJCQkJaWYgKG9iam5hbWUpCiAJCQkJCSpvYmpuYW1l ID0gbGlzdF9tYWtlMShleHRuYW1lKTsKIAkJCQlicmVhazsKQEAgLTU4MjMsNyArNTgxNiw3IEBA IGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJ CX0KIAkJCQl0cmlnRm9ybSA9IChGb3JtX3BnX2V2ZW50X3RyaWdnZXIpIEdFVFNUUlVDVCh0dXAp OwogCQkJCWV2dG5hbWUgPSBwc3RyZHVwKE5hbWVTdHIodHJpZ0Zvcm0tPmV2dG5hbWUpKTsKLQkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsIHF1b3RlX2lkZW50aWZpZXIoZXZ0bmFt ZSkpOworCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWZmZXIsIE5VTEwsIGV2dG5h bWUsIE5VTEwpOwogCQkJCWlmIChvYmpuYW1lKQogCQkJCQkqb2JqbmFtZSA9IGxpc3RfbWFrZTEo ZXZ0bmFtZSk7CiAJCQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CkBAIC01ODc4LDggKzU4NzEsNyBA QCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAog CQkJCXBvbGljeSA9IChGb3JtX3BnX3BvbGljeSkgR0VUU1RSVUNUKHR1cCk7CiAKLQkJCQlhcHBl bmRTdHJpbmdJbmZvKCZidWZmZXIsICIlcyBvbiAiLAotCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmll cihOYW1lU3RyKHBvbGljeS0+cG9sbmFtZSkpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRp ZmllcigmYnVmZmVyLCBOVUxMLCBOYW1lU3RyKHBvbGljeS0+cG9sbmFtZSksICIgb24gIik7CiAJ CQkJZ2V0UmVsYXRpb25JZGVudGl0eSgmYnVmZmVyLCBwb2xpY3ktPnBvbHJlbGlkLCBvYmpuYW1l LCBmYWxzZSk7CiAJCQkJaWYgKG9iam5hbWUpCiAJCQkJCSpvYmpuYW1lID0gbGFwcGVuZCgqb2Jq bmFtZSwgcHN0cmR1cChOYW1lU3RyKHBvbGljeS0+cG9sbmFtZSkpKTsKQEAgLTU4OTUsOCArNTg4 Nyw3IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0 LAogCQkJCXB1Ym5hbWUgPSBnZXRfcHVibGljYXRpb25fbmFtZShvYmplY3QtPm9iamVjdElkLCBt aXNzaW5nX29rKTsKIAkJCQlpZiAocHVibmFtZSkKIAkJCQl7Ci0JCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmJ1ZmZlciwKLQkJCQkJCQkJCQkgICBxdW90ZV9pZGVudGlmaWVyKHB1Ym5hbWUp KTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZmZlciwgTlVMTCwgcHVibmFt ZSwgTlVMTCk7CiAJCQkJCWlmIChvYmpuYW1lKQogCQkJCQkJKm9iam5hbWUgPSBsaXN0X21ha2Ux KHB1Ym5hbWUpOwogCQkJCX0KQEAgLTU5NjMsOCArNTk1NCw3IEBAIGdldE9iamVjdElkZW50aXR5 UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCXN1Ym5hbWUgPSBnZXRfc3Vi c2NyaXB0aW9uX25hbWUob2JqZWN0LT5vYmplY3RJZCwgbWlzc2luZ19vayk7CiAJCQkJaWYgKHN1 Ym5hbWUpCiAJCQkJewotCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCi0JCQkJ CQkJCQkJICAgcXVvdGVfaWRlbnRpZmllcihzdWJuYW1lKSk7CisJCQkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKCZidWZmZXIsIE5VTEwsIHN1Ym5hbWUsIE5VTEwpOwogCQkJCQlpZiAob2Jq bmFtZSkKIAkJCQkJCSpvYmpuYW1lID0gbGlzdF9tYWtlMShzdWJuYW1lKTsKIAkJCQl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IGQ2NzY5MzBhY2EyLi41YjFjNjU0NzUxOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKQEAgLTgyNSw5ICs4MjUsMTEgQEAgcmlf cmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAogCQkJ LyogRmluZCB0aGUgcmVtYWluaW5nIGhpc3RvcnkgKi8KIAkJCWluaXRTdHJpbmdJbmZvKCZyZXBs YWNlbWVudHNidWYpOwotCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcmVwbGFjZW1lbnRzYnVm LCAiKFNFTEVDVCBwZ19jYXRhbG9nLnJhbmdlX2FnZyhyKSBGUk9NICIpOwogCi0JCQlhcHBlbmRT dHJpbmdJbmZvSWRlbnRpZmllcigmcmVwbGFjZW1lbnRzYnVmLCAiKFNFTEVDVCB5LiIsIFJJQXR0 TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pLCAiIHIg RlJPTSAiKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZyZXBsYWNlbWVudHNidWYs CisJCQkJCQkJCQkgICAiKFNFTEVDVCBwZ19jYXRhbG9nLnJhbmdlX2FnZyhyKSBGUk9NIChTRUxF Q1QgeS4iLAorCQkJCQkJCQkJICAgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1z W3JpaW5mby0+bmtleXMgLSAxXSksCisJCQkJCQkJCQkgICAiIHIgRlJPTSAiKTsKIAkJCWFwcGVu ZFJlbGF0aW9uTmFtZSgmcmVwbGFjZW1lbnRzYnVmLCBwa19yZWwsIHBrX29ubHksICIgeSIpOwog CiAJCQkvKiBSZXN0cmljdCBwayByb3dzIHRvIHdoYXQgbWF0Y2hlcyAqLwpAQCAtMTgyMSw4ICsx ODIzLDYgQEAgUklfUGFydGl0aW9uUmVtb3ZlX0NoZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0 aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogCWFwcGVuZFJlbGF0aW9uTmFtZSgmcXVlcnli dWYsIGZrX3JlbCwgZmtfb25seSwgIiBmayBKT0lOICIpOwogCWFwcGVuZFJlbGF0aW9uTmFtZSgm cXVlcnlidWYsIHBrX3JlbCwgTlVMTCwgIiBwayBPTiIpOwogCi0JLyogc3RyY3B5KHBrYXR0bmFt ZSwgInBrLiIpOyAqLwotCS8qIHN0cmNweShma2F0dG5hbWUsICJmay4iKTsgKi8KIAlzZXAgPSAi KCI7CiAJZm9yIChpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAl7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKaW5kZXggYjIxMmEyOGQ5YmUuLmE4M2NhYzdmMDNhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCkBAIC05NzksMTggKzk3OSwxNyBAQCBwZ19nZXRfdHJpZ2dlcmRl Zl93b3JrZXIoT2lkIHRyaWdpZCwgYm9vbCBwcmV0dHkpCiAJCS8qIHRnYXR0ciBpcyBmaXJzdCB2 YXItd2lkdGggZmllbGQsIHNvIE9LIHRvIGFjY2VzcyBkaXJlY3RseSAqLwogCQlpZiAodHJpZ3Jl Yy0+dGdhdHRyLmRpbTEgPiAwKQogCQl7Ci0JCQlpbnQJCQlpOworCQkJY29uc3QgY2hhciAqc2Vw ID0gIiI7CiAKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIiBPRiAiKTsKLQkJCWZv ciAoaSA9IDA7IGkgPCB0cmlncmVjLT50Z2F0dHIuZGltMTsgaSsrKQorCQkJZm9yIChpbnQgaSA9 IDA7IGkgPCB0cmlncmVjLT50Z2F0dHIuZGltMTsgaSsrKQogCQkJewogCQkJCWNoYXIJICAgKmF0 dG5hbWU7CiAKLQkJCQlpZiAoaSA+IDApCi0JCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1 ZiwgIiwgIik7CiAJCQkJYXR0bmFtZSA9IGdldF9hdHRuYW1lKHRyaWdyZWMtPnRncmVsaWQsCiAJ CQkJCQkJCQkgIHRyaWdyZWMtPnRnYXR0ci52YWx1ZXNbaV0sIGZhbHNlKTsKLQkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZidWYsIHF1b3RlX2lkZW50aWZpZXIoYXR0bmFtZSkpOworCQkJCWFw cGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWYsIHNlcCwgYXR0bmFtZSwgTlVMTCk7CisJCQkJ c2VwID0gIiwgIjsKIAkJCX0KIAkJfQogCX0KQEAgLTEwNDIsMTEgKzEwNDEsOSBAQCBwZ19nZXRf dHJpZ2dlcmRlZl93b3JrZXIoT2lkIHRyaWdpZCwgYm9vbCBwcmV0dHkpCiAJewogCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZidWYsICJSRUZFUkVOQ0lORyAiKTsKIAkJaWYgKHRnb2xkdGFibGUg IT0gTlVMTCkKLQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIk9MRCBUQUJMRSBBUyAlcyAiLAot CQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHRnb2xkdGFibGUpKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKCZidWYsICJPTEQgVEFCTEUgQVMgIiwgdGdvbGR0YWJsZSwgIiAiKTsKIAkJ aWYgKHRnbmV3dGFibGUgIT0gTlVMTCkKLQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIk5FVyBU QUJMRSBBUyAlcyAiLAotCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHRnbmV3dGFibGUpKTsKKwkJ CWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWYsICJORVcgVEFCTEUgQVMgIiwgdGduZXd0 YWJsZSwgIiAiKTsKIAl9CiAKIAlpZiAoVFJJR0dFUl9GT1JfUk9XKHRyaWdyZWMtPnRndHlwZSkp CkBAIC0xMzg3LDggKzEzODQsNyBAQCBwZ19nZXRfaW5kZXhkZWZfd29ya2VyKE9pZCBpbmRleHJl bGlkLCBpbnQgY29sbm8sCiAJCQkJCQkJIGdlbmVyYXRlX3F1YWxpZmllZF9yZWxhdGlvbl9uYW1l KGluZHJlbGlkKSwKIAkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihOYW1lU3RyKGFtcmVjLT5hbW5h bWUpKSk7CiAJCWVsc2UJCQkJCS8qIGN1cnJlbnRseSwgbXVzdCBiZSBFWENMVURFIGNvbnN0cmFp bnQgKi8KLQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkVYQ0xVREUgVVNJTkcgJXMgKCIsCi0J CQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoTmFtZVN0cihhbXJlYy0+YW1uYW1lKSkpOworCQkJYXBw ZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZiwgIkVYQ0xVREUgVVNJTkcgIiwgTmFtZVN0cihh bXJlYy0+YW1uYW1lKSwgIiAoIik7CiAJfQogCiAJLyoKQEAgLTE0MjYsNyArMTQyMiw3IEBAIHBn X2dldF9pbmRleGRlZl93b3JrZXIoT2lkIGluZGV4cmVsaWQsIGludCBjb2xubywKIAogCQkJYXR0 bmFtZSA9IGdldF9hdHRuYW1lKGluZHJlbGlkLCBhdHRudW0sIGZhbHNlKTsKIAkJCWlmICghY29s bm8gfHwgY29sbm8gPT0ga2V5bm8gKyAxKQotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1 ZiwgcXVvdGVfaWRlbnRpZmllcihhdHRuYW1lKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50 aWZpZXIoJmJ1ZiwgTlVMTCwgYXR0bmFtZSwgTlVMTCk7CiAJCQlnZXRfYXR0dHlwZXR5cG1vZGNv bGwoaW5kcmVsaWQsIGF0dG51bSwKIAkJCQkJCQkJICAma2V5Y29sdHlwZSwgJmtleWNvbHR5cG1v ZCwKIAkJCQkJCQkJICAma2V5Y29sY29sbGF0aW9uKTsKQEAgLTE1MzYsOCArMTUzMiw4IEBAIHBn X2dldF9pbmRleGRlZl93b3JrZXIoT2lkIGluZGV4cmVsaWQsIGludCBjb2xubywKIAkJCXsKIAkJ CQlpZiAoaXNDb25zdHJhaW50KQogCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICIg VVNJTkcgSU5ERVgiKTsKLQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICIgVEFCTEVTUEFDRSAl cyIsCi0JCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGdldF90YWJsZXNwYWNlX25hbWUodGJsc3Bj KSkpOworCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWYsICIgVEFCTEVTUEFDRSAi LAorCQkJCQkJCQkJCSAgIGdldF90YWJsZXNwYWNlX25hbWUodGJsc3BjKSwgTlVMTCk7CiAJCQl9 CiAJCX0KIApAQCAtMTc5NCw3ICsxNzkwLDcgQEAgcGdfZ2V0X3N0YXRpc3RpY3NvYmpfd29ya2Vy KE9pZCBzdGF0ZXh0aWQsIGJvb2wgY29sdW1uc19vbmx5LCBib29sIG1pc3Npbmdfb2spCiAKIAkJ YXR0bmFtZSA9IGdldF9hdHRuYW1lKHN0YXRleHRyZWMtPnN0eHJlbGlkLCBhdHRudW0sIGZhbHNl KTsKIAotCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsIHF1b3RlX2lkZW50aWZpZXIoYXR0 bmFtZSkpOworCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcigmYnVmLCBOVUxMLCBhdHRuYW1l LCBOVUxMKTsKIAl9CiAKIAljb250ZXh0ID0gZGVwYXJzZV9jb250ZXh0X2ZvcihnZXRfcmVsYXRp b25fbmFtZShzdGF0ZXh0cmVjLT5zdHhyZWxpZCksCkBAIC0yMDM4LDcgKzIwMzQsNyBAQCBwZ19n ZXRfcGFydGtleWRlZl93b3JrZXIoT2lkIHJlbGlkLCBpbnQgcHJldHR5RmxhZ3MsCiAJCQlpbnQz MgkJa2V5Y29sdHlwbW9kOwogCiAJCQlhdHRuYW1lID0gZ2V0X2F0dG5hbWUocmVsaWQsIGF0dG51 bSwgZmFsc2UpOwotCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCBxdW90ZV9pZGVudGlm aWVyKGF0dG5hbWUpKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWYsIE5VTEws IGF0dG5hbWUsIE5VTEwpOwogCQkJZ2V0X2F0dHR5cGV0eXBtb2Rjb2xsKHJlbGlkLCBhdHRudW0s CiAJCQkJCQkJCSAgJmtleWNvbHR5cGUsICZrZXljb2x0eXBtb2QsCiAJCQkJCQkJCSAgJmtleWNv bGNvbGxhdGlvbik7CkBAIC0yMjQ2LDE3ICsyMjQyLDE5IEBAIHBnX2dldF9jb25zdHJhaW50ZGVm X3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJICogd2UgbWln aHQgbmVlZCB0byBsZXQgY2FsbGVycyBzcGVjaWZ5IHdoZXRoZXIgdG8gcHV0IE9OTFkgaW4gdGhl CiAJCQkgKiBjb21tYW5kLgogCQkJICovCi0JCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJBTFRF UiBUQUJMRSAlcyBBREQgQ09OU1RSQUlOVCAlcyAiLAotCQkJCQkJCSBnZW5lcmF0ZV9xdWFsaWZp ZWRfcmVsYXRpb25fbmFtZShjb25Gb3JtLT5jb25yZWxpZCksCi0JCQkJCQkJIHF1b3RlX2lkZW50 aWZpZXIoTmFtZVN0cihjb25Gb3JtLT5jb25uYW1lKSkpOworCQkJYXBwZW5kU3RyaW5nSW5mbygm YnVmLCAiQUxURVIgVEFCTEUgJXMgIiwKKwkJCQkJCQkgZ2VuZXJhdGVfcXVhbGlmaWVkX3JlbGF0 aW9uX25hbWUoY29uRm9ybS0+Y29ucmVsaWQpKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlm aWVyKCZidWYsICJBREQgQ09OU1RSQUlOVCAiLAorCQkJCQkJCQkJICAgTmFtZVN0cihjb25Gb3Jt LT5jb25uYW1lKSwgIiAiKTsKIAkJfQogCQllbHNlCiAJCXsKIAkJCS8qIE11c3QgYmUgYSBkb21h aW4gY29uc3RyYWludCAqLwogCQkJQXNzZXJ0KE9pZElzVmFsaWQoY29uRm9ybS0+Y29udHlwaWQp KTsKLQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkFMVEVSIERPTUFJTiAlcyBBREQgQ09OU1RS QUlOVCAlcyAiLAotCQkJCQkJCSBnZW5lcmF0ZV9xdWFsaWZpZWRfdHlwZV9uYW1lKGNvbkZvcm0t PmNvbnR5cGlkKSwKLQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihOYW1lU3RyKGNvbkZvcm0tPmNv bm5hbWUpKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJBTFRFUiBET01BSU4gJXMgIiwK KwkJCQkJCQkgZ2VuZXJhdGVfcXVhbGlmaWVkX3R5cGVfbmFtZShjb25Gb3JtLT5jb250eXBpZCkp OworCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZiwgIkFERCBDT05TVFJBSU5UICIs CisJCQkJCQkJCQkgICBOYW1lU3RyKGNvbkZvcm0tPmNvbm5hbWUpLCAiICIpOwogCQl9CiAJfQog CkBAIC0yNDIzLDYgKzI0MjEsNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNv bnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQkJRGF0dW0JICAgKmtleXM7CiAJCQkJ CWludAkJCW5LZXlzOwogCQkJCQlpbnQJCQlqOworCQkJCQljb25zdCBjaGFyICpzZXAgPSAiIjsK IAogCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICIgSU5DTFVERSAoIik7CiAKQEAg LTI0MzgsOSArMjQzNyw4IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3Ry YWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCiAJCQkJCQljb2xOYW1lID0gZ2V0X2F0dG5hbWUo Y29uRm9ybS0+Y29ucmVsaWQsCiAJCQkJCQkJCQkJCSAgRGF0dW1HZXRJbnQxNihrZXlzW2pdKSwg ZmFsc2UpOwotCQkJCQkJaWYgKGogPiBrZXlhdHRzKQotCQkJCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmJ1ZiwgIiwgIik7Ci0JCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsIHF1 b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZp ZXIoJmJ1Ziwgc2VwLCBjb2xOYW1lLCBOVUxMKTsKKwkJCQkJCXNlcCA9ICIsICI7CiAJCQkJCX0K IAogCQkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwpAQCAtMjQ2Nyw4ICsyNDY1 LDggQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wg ZnVsbENvbW1hbmQsCiAJCQkJCSAqLwogCQkJCQl0YmxzcGMgPSBnZXRfcmVsX3RhYmxlc3BhY2Uo aW5kZXhJZCk7CiAJCQkJCWlmIChPaWRJc1ZhbGlkKHRibHNwYykpCi0JCQkJCQlhcHBlbmRTdHJp bmdJbmZvKCZidWYsICIgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSAlcyIsCi0JCQkJCQkJCQkJIHF1 b3RlX2lkZW50aWZpZXIoZ2V0X3RhYmxlc3BhY2VfbmFtZSh0YmxzcGMpKSk7CisJCQkJCQlhcHBl bmRTdHJpbmdJbmZvSWRlbnRpZmllcigmYnVmLCAiIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgIiwK KwkJCQkJCQkJCQkJCSAgIGdldF90YWJsZXNwYWNlX25hbWUodGJsc3BjKSwgTlVMTCk7CiAJCQkJ fQogCiAJCQkJYnJlYWs7CkBAIC0yNTI5LDkgKzI1MjcsOSBAQCBwZ19nZXRfY29uc3RyYWludGRl Zl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAogCQkJCQlhdHRu dW0gPSBleHRyYWN0Tm90TnVsbENvbHVtbih0dXApOwogCi0JCQkJCWFwcGVuZFN0cmluZ0luZm8o JmJ1ZiwgIk5PVCBOVUxMICVzIiwKLQkJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGdldF9hdHRu YW1lKGNvbkZvcm0tPmNvbnJlbGlkLAotCQkJCQkJCQkJCQkJCQkJCSAgYXR0bnVtLCBmYWxzZSkp KTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1ZiwgIk5PVCBOVUxMICIsCisJ CQkJCQkJCQkJCSAgIGdldF9hdHRuYW1lKGNvbkZvcm0tPmNvbnJlbGlkLAorCQkJCQkJCQkJCQkJ CQkgICBhdHRudW0sIGZhbHNlKSwgTlVMTCk7CiAJCQkJCWlmICgoKEZvcm1fcGdfY29uc3RyYWlu dCkgR0VUU1RSVUNUKHR1cCkpLT5jb25ub2luaGVyaXQpCiAJCQkJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZidWYsICIgTk8gSU5IRVJJVCIpOwogCQkJCX0KQEAgLTI2MzUsMTEgKzI2MzMsMTQg QEAgZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXks IE9pZCByZWxJZCwKIAkJY29sTmFtZSA9IGdldF9hdHRuYW1lKHJlbElkLCBEYXR1bUdldEludDE2 KGtleXNbal0pLCBmYWxzZSk7CiAKIAkJaWYgKGogPT0gMCkKLQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKGJ1ZiwgTlVMTCwgY29sTmFtZSwgTlVMTCk7CiAJCWVsc2UKLQkJCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAiLCAlcyVzIiwKLQkJCQkJCQkgKHdpdGhQZXJpb2QgJiYgaiA9PSBu S2V5cyAtIDEpID8gIlBFUklPRCAiIDogIiIsCi0JCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoY29s TmFtZSkpOworCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisJCQlh cHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsCisJCQkJCQkJCQkgICAod2l0aFBlcmlvZCAm JiBqID09IG5LZXlzIC0gMSkgPyAiUEVSSU9EICIgOiAiIiwKKwkJCQkJCQkJCSAgIGNvbE5hbWUs IE5VTEwpOworCQl9CiAJfQogCiAJcmV0dXJuIG5LZXlzOwpAQCAtMjk3NSw4ICsyOTc2LDggQEAg cGdfZ2V0X2Z1bmN0aW9uZGVmKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlwcmludF9mdW5jdGlvbl90 cmZ0eXBlcygmYnVmLCBwcm9jdHVwKTsKIAotCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIiBMQU5H VUFHRSAlc1xuIiwKLQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoZ2V0X2xhbmd1YWdlX25hbWUocHJv Yy0+cHJvbGFuZywgZmFsc2UpKSk7CisJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJmJ1Ziwg IiBMQU5HVUFHRSAiLAorCQkJCQkJCSAgIGdldF9sYW5ndWFnZV9uYW1lKHByb2MtPnByb2xhbmcs IGZhbHNlKSwgIlxuIik7CiAKIAkvKiBFbWl0IHNvbWUgbWlzY2VsbGFuZW91cyBvcHRpb25zIG9u IG9uZSBsaW5lICovCiAJb2xkbGVuID0gYnVmLmxlbjsKQEAgLTMwNzUsOCArMzA3Niw3IEBAIHBn X2dldF9mdW5jdGlvbmRlZihQR19GVU5DVElPTl9BUkdTKQogCQkJCQljb250aW51ZTsKIAkJCQkq cG9zKysgPSAnXDAnOwogCi0JCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiIFNFVCAlcyBUTyAi LAotCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihjb25maWdpdGVtKSk7CisJCQkJYXBwZW5kU3Ry aW5nSW5mb0lkZW50aWZpZXIoJmJ1ZiwgIiBTRVQgIiwgY29uZmlnaXRlbSwgIiBUTyAiKTsKIAog CQkJCS8qCiAJCQkJICogVmFyaWFibGVzIHRoYXQgYXJlIG1hcmtlZCBHVUNfTElTVF9RVU9URSB3 ZXJlIGFscmVhZHkgZnVsbHkKQEAgLTM0MTgsNyArMzQxOCw3IEBAIHByaW50X2Z1bmN0aW9uX2Fy Z3VtZW50cyhTdHJpbmdJbmZvIGJ1ZiwgSGVhcFR1cGxlIHByb2N0dXAsCiAKIAkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhidWYsIG1vZGVuYW1lKTsKIAkJaWYgKGFyZ25hbWUgJiYgYXJnbmFtZVsw XSkKLQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMgIiwgcXVvdGVfaWRlbnRpZmllcihhcmdu YW1lKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsIE5VTEwsIGFyZ25hbWUs ICIgIik7CiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBmb3JtYXRfdHlwZV9iZShhcmd0 eXBlKSk7CiAJCWlmIChwcmludF9kZWZhdWx0cyAmJiBpc2lucHV0ICYmIGlucHV0YXJnbm8gPiBu bGFja2RlZmF1bHRzKQogCQl7CkBAIC01NDAyLDggKzU0MDIsNyBAQCBtYWtlX3J1bGVkZWYoU3Ry aW5nSW5mbyBidWYsIEhlYXBUdXBsZSBydWxldHVwLCBUdXBsZURlc2MgcnVsZXR0YywKIAkvKgog CSAqIEJ1aWxkIHRoZSBydWxlcyBkZWZpbml0aW9uIHRleHQKIAkgKi8KLQlhcHBlbmRTdHJpbmdJ bmZvKGJ1ZiwgIkNSRUFURSBSVUxFICVzIEFTIiwKLQkJCQkJIHF1b3RlX2lkZW50aWZpZXIocnVs ZW5hbWUpKTsKKwlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICJDUkVBVEUgUlVMRSAi LCBydWxlbmFtZSwgIiBBUyIpOwogCiAJaWYgKHByZXR0eUZsYWdzICYgUFJFVFRZRkxBR19JTkRF TlQpCiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiXG4gICAgT04gIik7CkBAIC01Nzkx LDIxICs1NzkwLDE4IEBAIGdldF93aXRoX2NsYXVzZShRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29u dGV4dCAqY29udGV4dCkKIAkJQ29tbW9uVGFibGVFeHByICpjdGUgPSAoQ29tbW9uVGFibGVFeHBy ICopIGxmaXJzdChsKTsKIAogCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwgc2VwKTsKLQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIoY3RlLT5jdGVuYW1l KSk7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1ZiwgTlVMTCwgY3RlLT5jdGVuYW1l LCBOVUxMKTsKIAkJaWYgKGN0ZS0+YWxpYXNjb2xuYW1lcykKIAkJewotCQkJYm9vbAkJZmlyc3Qg PSB0cnVlOwogCQkJTGlzdENlbGwgICAqY29sOworCQkJY29uc3QgY2hhciAqY29sc2VwID0gIiI7 CiAKIAkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJygnKTsKIAkJCWZvcmVhY2goY29sLCBj dGUtPmFsaWFzY29sbmFtZXMpCiAJCQl7Ci0JCQkJaWYgKGZpcnN0KQotCQkJCQlmaXJzdCA9IGZh bHNlOwotCQkJCWVsc2UKLQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOwot CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAotCQkJCQkJCQkJICAgcXVvdGVfaWRlbnRp ZmllcihzdHJWYWwobGZpcnN0KGNvbCkpKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZp ZXIoYnVmLCBjb2xzZXAsCisJCQkJCQkJCQkJICAgc3RyVmFsKGxmaXJzdChjb2wpKSwgTlVMTCk7 CisJCQkJY29sc2VwID0gIiwgIjsKIAkJCX0KIAkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1Ziwg JyknKTsKIAkJfQpAQCAtNTgzNCw0MyArNTgzMCwzNSBAQCBnZXRfd2l0aF9jbGF1c2UoUXVlcnkg KnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAKIAkJaWYgKGN0ZS0+c2VhcmNoX2Ns YXVzZSkKIAkJewotCQkJYm9vbAkJZmlyc3QgPSB0cnVlOwogCQkJTGlzdENlbGwgICAqbGM7CisJ CQljb25zdCBjaGFyICpjb2xzZXAgPSAiIjsKIAogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIg U0VBUkNIICVzIEZJUlNUIEJZICIsCiAJCQkJCQkJIGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNo X2JyZWFkdGhfZmlyc3QgPyAiQlJFQURUSCIgOiAiREVQVEgiKTsKIAogCQkJZm9yZWFjaChsYywg Y3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfY29sX2xpc3QpCiAJCQl7Ci0JCQkJaWYgKGZpcnN0 KQotCQkJCQlmaXJzdCA9IGZhbHNlOwotCQkJCWVsc2UKLQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhidWYsICIsICIpOwotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAotCQkJCQkJ CQkJICAgcXVvdGVfaWRlbnRpZmllcihzdHJWYWwobGZpcnN0KGxjKSkpKTsKKwkJCQlhcHBlbmRT dHJpbmdJbmZvSWRlbnRpZmllcihidWYsIGNvbHNlcCwgc3RyVmFsKGxmaXJzdChsYykpLCBOVUxM KTsKKwkJCQljb2xzZXAgPSAiLCAiOwogCQkJfQogCi0JCQlhcHBlbmRTdHJpbmdJbmZvKGJ1Ziwg IiBTRVQgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNoX3Nl cV9jb2x1bW4pKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1ZiwgIiBTRVQgIiwg Y3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfc2VxX2NvbHVtbiwgTlVMTCk7CiAJCX0KIAogCQlp ZiAoY3RlLT5jeWNsZV9jbGF1c2UpCiAJCXsKLQkJCWJvb2wJCWZpcnN0ID0gdHJ1ZTsKIAkJCUxp c3RDZWxsICAgKmxjOworCQkJY29uc3QgY2hhciAqc2VwID0gIiI7CiAKIAkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoYnVmLCAiIENZQ0xFICIpOwogCiAJCQlmb3JlYWNoKGxjLCBjdGUtPmN5Y2xl X2NsYXVzZS0+Y3ljbGVfY29sX2xpc3QpCiAJCQl7Ci0JCQkJaWYgKGZpcnN0KQotCQkJCQlmaXJz dCA9IGZhbHNlOwotCQkJCWVsc2UKLQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIs ICIpOwotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAotCQkJCQkJCQkJICAgcXVvdGVf aWRlbnRpZmllcihzdHJWYWwobGZpcnN0KGxjKSkpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRl bnRpZmllcihidWYsIHNlcCwgc3RyVmFsKGxmaXJzdChsYykpLCBOVUxMKTsKKwkJCQlzZXAgPSAi LCAiOwogCQkJfQogCi0JCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBTRVQgJXMiLCBxdW90ZV9p ZGVudGlmaWVyKGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX2NvbHVtbikpOworCQkJYXBw ZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCAiIFNFVCAiLCBjdGUtPmN5Y2xlX2NsYXVzZS0+ Y3ljbGVfbWFya19jb2x1bW4sIE5VTEwpOwogCiAJCQl7CiAJCQkJQ29uc3QJICAgKmNtdiA9IGNh c3ROb2RlKENvbnN0LCBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya192YWx1ZSk7CkBAIC01 ODg2LDcgKzU4NzQsNyBAQCBnZXRfd2l0aF9jbGF1c2UoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQpCiAJCQkJfQogCQkJfQogCi0JCQlhcHBlbmRTdHJpbmdJbmZvKGJ1Ziwg IiBVU0lORyAlcyIsIHF1b3RlX2lkZW50aWZpZXIoY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX3Bh dGhfY29sdW1uKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICIgVVNJTkcg IiwgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX3BhdGhfY29sdW1uLCBOVUxMKTsKIAkJfQogCiAJ CXNlcCA9ICIsICI7CkBAIC02MDIyLDkgKzYwMTAsNyBAQCBnZXRfc2VsZWN0X3F1ZXJ5X2RlZihR dWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJCQkJYnJlYWs7CiAJCQl9 CiAKLQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIE9GICVzIiwKLQkJCQkJCQkgcXVvdGVfaWRl bnRpZmllcihnZXRfcnRhYmxlX25hbWUocmMtPnJ0aSwKLQkJCQkJCQkJCQkJCQkJCSAgY29udGV4 dCkpKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1ZiwgIiBPRiAiLCBnZXRfcnRh YmxlX25hbWUocmMtPnJ0aSwgY29udGV4dCksIE5VTEwpOwogCQkJaWYgKHJjLT53YWl0UG9saWN5 ID09IExvY2tXYWl0RXJyb3IpCiAJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgTk9X QUlUIik7CiAJCQllbHNlIGlmIChyYy0+d2FpdFBvbGljeSA9PSBMb2NrV2FpdFNraXApCkBAIC02 MzE3LDcgKzYzMDMsNyBAQCBnZXRfdGFyZ2V0X2xpc3QoTGlzdCAqdGFyZ2V0TGlzdCwgZGVwYXJz ZV9jb250ZXh0ICpjb250ZXh0KQogCQlpZiAoY29sbmFtZSkJCQkvKiByZXNuYW1lIGNvdWxkIGJl IE5VTEwgKi8KIAkJewogCQkJaWYgKGF0dG5hbWUgPT0gTlVMTCB8fCBzdHJjbXAoYXR0bmFtZSwg Y29sbmFtZSkgIT0gMCkKLQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZ0YXJnZXRidWYsICIgQVMgJXMi LCBxdW90ZV9pZGVudGlmaWVyKGNvbG5hbWUpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRp ZmllcigmdGFyZ2V0YnVmLCAiIEFTICIsIGNvbG5hbWUsIE5VTEwpOwogCQl9CiAKIAkJLyogUmVz dG9yZSBjb250ZXh0J3Mgb3V0cHV0IGJ1ZmZlciAqLwpAQCAtNjM5MSwxOSArNjM3NywxNiBAQCBn ZXRfcmV0dXJuaW5nX2NsYXVzZShRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4 dCkKIAkJLyogQWRkIFdJVEggKE9MRC9ORVcpIG9wdGlvbnMsIGlmIHRoZXkncmUgbm90IHRoZSBk ZWZhdWx0cyAqLwogCQlpZiAocXVlcnktPnJldHVybmluZ09sZEFsaWFzICYmIHN0cmNtcChxdWVy eS0+cmV0dXJuaW5nT2xkQWxpYXMsICJvbGQiKSAhPSAwKQogCQl7Ci0JCQlhcHBlbmRTdHJpbmdJ bmZvKGJ1ZiwgIiBXSVRIIChPTEQgQVMgJXMiLAotCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHF1 ZXJ5LT5yZXR1cm5pbmdPbGRBbGlhcykpOworCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIo YnVmLCAiIFdJVEggKE9MRCBBUyAiLCBxdWVyeS0+cmV0dXJuaW5nT2xkQWxpYXMsIE5VTEwpOwog CQkJaGF2ZV93aXRoID0gdHJ1ZTsKIAkJfQogCQlpZiAocXVlcnktPnJldHVybmluZ05ld0FsaWFz ICYmIHN0cmNtcChxdWVyeS0+cmV0dXJuaW5nTmV3QWxpYXMsICJuZXciKSAhPSAwKQogCQl7CiAJ CQlpZiAoaGF2ZV93aXRoKQotCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCBORVcgQVMgJXMi LAotCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihxdWVyeS0+cmV0dXJuaW5nTmV3QWxpYXMpKTsK KwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICIsIE5FVyBBUyAiLCBxdWVyeS0+ cmV0dXJuaW5nTmV3QWxpYXMsIE5VTEwpOwogCQkJZWxzZQogCQkJewotCQkJCWFwcGVuZFN0cmlu Z0luZm8oYnVmLCAiIFdJVEggKE5FVyBBUyAlcyIsCi0JCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVy KHF1ZXJ5LT5yZXR1cm5pbmdOZXdBbGlhcykpOworCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlm aWVyKGJ1ZiwgIiBXSVRIIChORVcgQVMgIiwgcXVlcnktPnJldHVybmluZ05ld0FsaWFzLCBOVUxM KTsKIAkJCQloYXZlX3dpdGggPSB0cnVlOwogCQkJfQogCQl9CkBAIC02NzcxLDcgKzY3NTQsNyBA QCBnZXRfcnVsZV93aW5kb3djbGF1c2UoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNv bnRleHQpCiAJCWVsc2UKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBzZXApOwogCi0J CWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMgQVMgIiwgcXVvdGVfaWRlbnRpZmllcih3Yy0+bmFt ZSkpOworCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsIE5VTEwsIHdjLT5uYW1lLCAi IEFTICIpOwogCiAJCWdldF9ydWxlX3dpbmRvd3NwZWMod2MsIHF1ZXJ5LT50YXJnZXRMaXN0LCBj b250ZXh0KTsKIApAQCAtNjc5NCw3ICs2Nzc3LDcgQEAgZ2V0X3J1bGVfd2luZG93c3BlYyhXaW5k b3dDbGF1c2UgKndjLCBMaXN0ICp0YXJnZXRMaXN0LAogCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1 ZiwgJygnKTsKIAlpZiAod2MtPnJlZm5hbWUpCiAJewotCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KGJ1ZiwgcXVvdGVfaWRlbnRpZmllcih3Yy0+cmVmbmFtZSkpOworCQlhcHBlbmRTdHJpbmdJbmZv SWRlbnRpZmllcihidWYsIE5VTEwsIHdjLT5yZWZuYW1lLCBOVUxMKTsKIAkJbmVlZHNwYWNlID0g dHJ1ZTsKIAl9CiAJLyogcGFydGl0aW9uIGNsYXVzZXMgYXJlIGFsd2F5cyBpbmhlcml0ZWQsIHNv IG9ubHkgcHJpbnQgaWYgbm8gcmVmbmFtZSAqLwpAQCAtNzAyMSwxMCArNzAwNCw4IEBAIGdldF9p bnNlcnRfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQog CQkgKiBQdXQgb3V0IG5hbWUgb2YgdGFyZ2V0IGNvbHVtbjsgbG9vayBpbiB0aGUgY2F0YWxvZ3Ms IG5vdCBhdAogCQkgKiB0bGUtPnJlc25hbWUsIHNpbmNlIHJlc25hbWUgd2lsbCBmYWlsIHRvIHRy YWNrIFJFTkFNRS4KIAkJICovCi0JCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAotCQkJCQkJ CSAgIHF1b3RlX2lkZW50aWZpZXIoZ2V0X2F0dG5hbWUocnRlLT5yZWxpZCwKLQkJCQkJCQkJCQkJ CQkJCXRsZS0+cmVzbm8sCi0JCQkJCQkJCQkJCQkJCQlmYWxzZSkpKTsKKwkJYXBwZW5kU3RyaW5n SW5mb0lkZW50aWZpZXIoYnVmLCBOVUxMLAorCQkJCQkJCQkgICBnZXRfYXR0bmFtZShydGUtPnJl bGlkLCB0bGUtPnJlc25vLCBmYWxzZSksIE5VTEwpOwogCiAJCS8qCiAJCSAqIFByaW50IGFueSBp bmRpcmVjdGlvbiBuZWVkZWQgKHN1YmZpZWxkcyBvciBzdWJzY3JpcHRzKSwgYW5kIHN0cmlwCkBA IC03MTE3LDggKzcwOTgsNyBAQCBnZXRfaW5zZXJ0X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRl cGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJCWlmICghY29uc3RyYWludCkKIAkJCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29uc3RyYWludCAldSIsCiAJCQkJCSBjb25m bC0+Y29uc3RyYWludCk7Ci0JCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBPTiBDT05TVFJBSU5U ICVzIiwKLQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihjb25zdHJhaW50KSk7CisJCQlhcHBlbmRT dHJpbmdJbmZvSWRlbnRpZmllcihidWYsICIgT04gQ09OU1RSQUlOVCAiLCBjb25zdHJhaW50LCBO VUxMKTsKIAkJfQogCiAJCWlmIChjb25mbC0+YWN0aW9uID09IE9OQ09ORkxJQ1RfTk9USElORykK QEAgLTczMjAsMTAgKzczMDAsNyBAQCBnZXRfdXBkYXRlX3F1ZXJ5X3RhcmdldGxpc3RfZGVmKFF1 ZXJ5ICpxdWVyeSwgTGlzdCAqdGFyZ2V0TGlzdCwKIAkJICogUHV0IG91dCBuYW1lIG9mIHRhcmdl dCBjb2x1bW47IGxvb2sgaW4gdGhlIGNhdGFsb2dzLCBub3QgYXQKIAkJICogdGxlLT5yZXNuYW1l LCBzaW5jZSByZXNuYW1lIHdpbGwgZmFpbCB0byB0cmFjayBSRU5BTUUuCiAJCSAqLwotCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwKLQkJCQkJCQkgICBxdW90ZV9pZGVudGlmaWVyKGdldF9h dHRuYW1lKHJ0ZS0+cmVsaWQsCi0JCQkJCQkJCQkJCQkJCQl0bGUtPnJlc25vLAotCQkJCQkJCQkJ CQkJCQkJZmFsc2UpKSk7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1ZiwgTlVMTCwg Z2V0X2F0dG5hbWUocnRlLT5yZWxpZCwgdGxlLT5yZXNubywgZmFsc2UpLCBOVUxMKTsKIAogCQkv KgogCQkgKiBQcmludCBhbnkgaW5kaXJlY3Rpb24gbmVlZGVkIChzdWJmaWVsZHMgb3Igc3Vic2Ny aXB0cyksIGFuZCBzdHJpcApAQCAtNzUxMSwxMCArNzQ4OCwxMCBAQCBnZXRfbWVyZ2VfcXVlcnlf ZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoYnVmLCBzZXApOwogCQkJCXNlcCA9ICIsICI7CiAKLQkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKGJ1ZiwKLQkJCQkJCQkJCSAgIHF1b3RlX2lkZW50aWZpZXIoZ2V0X2F0 dG5hbWUocnRlLT5yZWxpZCwKLQkJCQkJCQkJCQkJCQkJCQkJdGxlLT5yZXNubywKLQkJCQkJCQkJ CQkJCQkJCQkJZmFsc2UpKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCBO VUxMLAorCQkJCQkJCQkJCSAgIGdldF9hdHRuYW1lKHJ0ZS0+cmVsaWQsCisJCQkJCQkJCQkJCQkJ ICAgdGxlLT5yZXNubywKKwkJCQkJCQkJCQkJCQkgICBmYWxzZSksIE5VTEwpOwogCQkJCXN0cmlw cGVkZXhwcnMgPSBsYXBwZW5kKHN0cmlwcGVkZXhwcnMsCiAJCQkJCQkJCQkJcHJvY2Vzc0luZGly ZWN0aW9uKChOb2RlICopIHRsZS0+ZXhwciwKIAkJCQkJCQkJCQkJCQkJICAgY29udGV4dCkpOwpA QCAtNzU3Myw4ICs3NTUwLDggQEAgZ2V0X3V0aWxpdHlfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwg ZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCiAJCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRl eHQsICIiLAogCQkJCQkJCSAwLCBQUkVUVFlJTkRFTlRfU1RELCAxKTsKLQkJYXBwZW5kU3RyaW5n SW5mbyhidWYsICJOT1RJRlkgJXMiLAotCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoc3RtdC0+Y29u ZGl0aW9ubmFtZSkpOworCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICJOT1RJRlkg IiwKKwkJCQkJCQkJICAgc3RtdC0+Y29uZGl0aW9ubmFtZSwgTlVMTCk7CiAJCWlmIChzdG10LT5w YXlsb2FkKQogCQl7CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CkBAIC03 ODY1LDExICs3ODQyLDExIEBAIGdldF92YXJpYWJsZShWYXIgKnZhciwgaW50IGxldmVsc3VwLCBi b29sIGlzdG9wbGV2ZWwsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAogCWlmIChyZWZuYW1l ICYmIG5lZWRfcHJlZml4KQogCXsKLQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3Rl X2lkZW50aWZpZXIocmVmbmFtZSkpOworCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYs IE5VTEwsIHJlZm5hbWUsIE5VTEwpOwogCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcuJyk7 CiAJfQogCWlmIChhdHRuYW1lKQotCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVf aWRlbnRpZmllcihhdHRuYW1lKSk7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1Ziwg TlVMTCwgYXR0bmFtZSwgTlVMTCk7CiAJZWxzZQogCXsKIAkJYXBwZW5kU3RyaW5nSW5mb0NoYXIo YnVmLCAnKicpOwpAQCAtODgwNiwxMSArODc4MywxMCBAQCBnZXRfcGFyYW1ldGVyKFBhcmFtICpw YXJhbSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCQkJCX0KIAkJCQlpZiAoc2hvdWxkX3F1 YWxpZnkpCiAJCQkJewotCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1Ziwg cXVvdGVfaWRlbnRpZmllcihkcG5zLT5mdW5jbmFtZSkpOwotCQkJCQlhcHBlbmRTdHJpbmdJbmZv Q2hhcihjb250ZXh0LT5idWYsICcuJyk7CisJCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVy KGNvbnRleHQtPmJ1ZiwgTlVMTCwgZHBucy0+ZnVuY25hbWUsICIuIik7CiAJCQkJfQogCi0JCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250ZXh0LT5idWYsIHF1b3RlX2lkZW50aWZpZXIoYXJn bmFtZSkpOworCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGNvbnRleHQtPmJ1ZiwgTlVM TCwgYXJnbmFtZSwgTlVMTCk7CiAJCQkJcmV0dXJuOwogCQkJfQogCQl9CkBAIC05MzkxLDcgKzkz NjcsNyBAQCBnZXRfcnVsZV9leHByKE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4 dCwKIAkJCXsKIAkJCQlOYW1lZEFyZ0V4cHIgKm5hID0gKE5hbWVkQXJnRXhwciAqKSBub2RlOwog Ci0JCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyA9PiAiLCBxdW90ZV9pZGVudGlmaWVyKG5h LT5uYW1lKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCBOVUxMLCBuYS0+ bmFtZSwgIiA9PiAiKTsKIAkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIG5hLT5hcmcsIGNvbnRl eHQsIHNob3dpbXBsaWNpdCk7CiAJCQl9CiAJCQlicmVhazsKQEAgLTk2NzksNyArOTY1NSw3IEBA IGdldF9ydWxlX2V4cHIoTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJ CSAqLwogCQkJCWZpZWxkbmFtZSA9IGdldF9uYW1lX2Zvcl92YXJfZmllbGQoKFZhciAqKSBhcmcs IGZubywKIAkJCQkJCQkJCQkJCSAgIDAsIGNvbnRleHQpOwotCQkJCWFwcGVuZFN0cmluZ0luZm8o YnVmLCAiLiVzIiwgcXVvdGVfaWRlbnRpZmllcihmaWVsZG5hbWUpKTsKKwkJCQlhcHBlbmRTdHJp bmdJbmZvSWRlbnRpZmllcihidWYsICIuIiwgZmllbGRuYW1lLCBOVUxMKTsKIAkJCX0KIAkJCWJy ZWFrOwogCkBAIC0xMDEzMSw4ICsxMDEwNyw4IEBAIGdldF9ydWxlX2V4cHIoTm9kZSAqbm9kZSwg ZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCX0KIAkJCQlpZiAoeGV4cHItPm5hbWUpCiAJ CQkJewotCQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIk5BTUUgJXMiLAotCQkJCQkJCQkJIHF1 b3RlX2lkZW50aWZpZXIobWFwX3htbF9uYW1lX3RvX3NxbF9pZGVudGlmaWVyKHhleHByLT5uYW1l KSkpOworCQkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICJOQU1FICIsCisJCQkJ CQkJCQkJCSAgIG1hcF94bWxfbmFtZV90b19zcWxfaWRlbnRpZmllcih4ZXhwci0+bmFtZSksIE5V TEwpOwogCQkJCQluZWVkY29tbWEgPSB0cnVlOwogCQkJCX0KIAkJCQlpZiAoeGV4cHItPm5hbWVk X2FyZ3MpCkBAIC0xMDE1Miw4ICsxMDEyOCw4IEBAIGdldF9ydWxlX2V4cHIoTm9kZSAqbm9kZSwg ZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJaWYgKG5lZWRjb21tYSkKIAkJCQkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CiAJCQkJCQlnZXRfcnVsZV9leHByKChO b2RlICopIGUsIGNvbnRleHQsIHRydWUpOwotCQkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIg QVMgJXMiLAotCQkJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKG1hcF94bWxfbmFtZV90b19zcWxf aWRlbnRpZmllcihhcmduYW1lKSkpOworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIo YnVmLCAiIEFTICIsCisJCQkJCQkJCQkJCQkgICBtYXBfeG1sX25hbWVfdG9fc3FsX2lkZW50aWZp ZXIoYXJnbmFtZSksIE5VTEwpOwogCQkJCQkJbmVlZGNvbW1hID0gdHJ1ZTsKIAkJCQkJfQogCQkJ CQlpZiAoeGV4cHItPm9wICE9IElTX1hNTEZPUkVTVCkKQEAgLTEwMzY5LDggKzEwMzQ1LDggQEAg Z2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJ Q3VycmVudE9mRXhwciAqY2V4cHIgPSAoQ3VycmVudE9mRXhwciAqKSBub2RlOwogCiAJCQkJaWYg KGNleHByLT5jdXJzb3JfbmFtZSkKLQkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJDVVJSRU5U IE9GICVzIiwKLQkJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGNleHByLT5jdXJzb3JfbmFtZSkp OworCQkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICJDVVJSRU5UIE9GICIsCisJ CQkJCQkJCQkJCSAgIGNleHByLT5jdXJzb3JfbmFtZSwgTlVMTCk7CiAJCQkJZWxzZQogCQkJCQlh cHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIkNVUlJFTlQgT0YgJCVkIiwKIAkJCQkJCQkJCSBjZXhwci0+ Y3Vyc29yX3BhcmFtKTsKQEAgLTEwNjA0LDggKzEwNTgwLDggQEAgZ2V0X3J1bGVfZXhwcihOb2Rl ICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQluZWVkY29tbWEgPSB0cnVl OwogCiAJCQkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIGxmaXJzdChsYzIpLCBjb250ZXh0LCBz aG93aW1wbGljaXQpOwotCQkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgQVMgJXMiLAotCQkJ CQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGxmaXJzdF9ub2RlKFN0cmluZywgbGMxKS0+c3ZhbCkp OworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCAiIEFTICIsCisJCQkJCQkJ CQkJCQkgICBsZmlyc3Rfbm9kZShTdHJpbmcsIGxjMSktPnN2YWwsIE5VTEwpOwogCQkJCQl9CiAJ CQkJfQogCkBAIC0xMTEzNSw3ICsxMTExMSw3IEBAIGdldF93aW5kb3dmdW5jX2V4cHJfaGVscGVy KFdpbmRvd0Z1bmMgKndmdW5jLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQlpZiAod2Mt PndpbnJlZiA9PSB3ZnVuYy0+d2lucmVmKQogCQkJewogCQkJCWlmICh3Yy0+bmFtZSkKLQkJCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIod2MtPm5hbWUpKTsK KwkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCBOVUxMLCB3Yy0+bmFtZSwgTlVM TCk7CiAJCQkJZWxzZQogCQkJCQlnZXRfcnVsZV93aW5kb3dzcGVjKHdjLCBjb250ZXh0LT50YXJn ZXRMaXN0LCBjb250ZXh0KTsKIAkJCQlicmVhazsKQEAgLTExMTYxLDcgKzExMTM3LDcgQEAgZ2V0 X3dpbmRvd2Z1bmNfZXhwcl9oZWxwZXIoV2luZG93RnVuYyAqd2Z1bmMsIGRlcGFyc2VfY29udGV4 dCAqY29udGV4dCwKIAogCQkJCWlmICh3YWdnLT53aW5yZWYgPT0gd2Z1bmMtPndpbnJlZikKIAkJ CQl7Ci0JCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKHdh Z2ctPndpbm5hbWUpKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCBOVUxM LCB3YWdnLT53aW5uYW1lLCBOVUxMKTsKIAkJCQkJYnJlYWs7CiAJCQkJfQogCQkJfQpAQCAtMTIw MDEsOCArMTE5NzcsOCBAQCBnZXRfeG1sdGFibGUoVGFibGVGdW5jICp0ZiwgZGVwYXJzZV9jb250 ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKIAkJCWlmIChuc19ub2RlICE9IE5VTEwp CiAJCQl7CiAJCQkJZ2V0X3J1bGVfZXhwcihleHByLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOwot CQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIEFTICVzIiwKLQkJCQkJCQkJIHF1b3RlX2lkZW50 aWZpZXIoc3RyVmFsKG5zX25vZGUpKSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIo YnVmLCAiIEFTICIsCisJCQkJCQkJCQkJICAgc3RyVmFsKG5zX25vZGUpLCBOVUxMKTsKIAkJCX0K IAkJCWVsc2UKIAkJCXsKQEAgLTEyMDg4LDcgKzEyMDY0LDcgQEAgZ2V0X2pzb25fdGFibGVfbmVz dGVkX2NvbHVtbnMoVGFibGVGdW5jICp0ZiwgSnNvblRhYmxlUGxhbiAqcGxhbiwKIAkJYXBwZW5k U3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAnICcpOwogCQlhcHBlbmRDb250ZXh0S2V5d29y ZChjb250ZXh0LCAiTkVTVEVEIFBBVEggIiwgMCwgMCwgMCk7CiAJCWdldF9jb25zdF9leHByKHNj YW4tPnBhdGgtPnZhbHVlLCBjb250ZXh0LCAtMSk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oY29udGV4 dC0+YnVmLCAiIEFTICVzIiwgcXVvdGVfaWRlbnRpZmllcihzY2FuLT5wYXRoLT5uYW1lKSk7CisJ CWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGNvbnRleHQtPmJ1ZiwgIiBBUyAiLCBzY2FuLT5w YXRoLT5uYW1lLCBOVUxMKTsKIAkJZ2V0X2pzb25fdGFibGVfY29sdW1ucyh0Ziwgc2NhbiwgY29u dGV4dCwgc2hvd2ltcGxpY2l0KTsKIAl9CiAJZWxzZSBpZiAoSXNBKHBsYW4sIEpzb25UYWJsZVNp YmxpbmdKb2luKSkKQEAgLTEyMjMxLDcgKzEyMjA3LDcgQEAgZ2V0X2pzb25fdGFibGUoVGFibGVG dW5jICp0ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKIAog CWdldF9jb25zdF9leHByKHJvb3QtPnBhdGgtPnZhbHVlLCBjb250ZXh0LCAtMSk7CiAKLQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIsIHF1b3RlX2lkZW50aWZpZXIocm9vdC0+cGF0aC0+ bmFtZSkpOworCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1ZiwgIiBBUyAiLCByb290LT5w YXRoLT5uYW1lLCBOVUxMKTsKIAogCWlmIChqZXhwci0+cGFzc2luZ192YWx1ZXMpCiAJewpAQCAt MTIyNTUsOSArMTIyMzEsNyBAQCBnZXRfanNvbl90YWJsZShUYWJsZUZ1bmMgKnRmLCBkZXBhcnNl X2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQogCQkJYXBwZW5kQ29udGV4dEtl eXdvcmQoY29udGV4dCwgIiIsIDAsIDAsIDApOwogCiAJCQlnZXRfcnVsZV9leHByKChOb2RlICop IGxmaXJzdChsYzIpLCBjb250ZXh0LCBmYWxzZSk7Ci0JCQlhcHBlbmRTdHJpbmdJbmZvKGJ1Ziwg IiBBUyAlcyIsCi0JCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoKGxmaXJzdF9ub2RlKFN0cmluZywg bGMxKSktPnN2YWwpCi0JCQkJKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1Ziwg IiBBUyAiLCBsZmlyc3Rfbm9kZShTdHJpbmcsIGxjMSktPnN2YWwsIE5VTEwpOwogCQl9CiAKIAkJ aWYgKFBSRVRUWV9JTkRFTlQoY29udGV4dCkpCkBAIC0xMjUzMyw3ICsxMjUwNyw3IEBAIGdldF9m cm9tX2NsYXVzZV9pdGVtKE5vZGUgKmp0bm9kZSwgUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRl eHQgKmNvbnRleHQpCiAJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKScpOwogCQkJCWJy ZWFrOwogCQkJY2FzZSBSVEVfQ1RFOgotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBx dW90ZV9pZGVudGlmaWVyKHJ0ZS0+Y3RlbmFtZSkpOworCQkJCWFwcGVuZFN0cmluZ0luZm9JZGVu dGlmaWVyKGJ1ZiwgTlVMTCwgcnRlLT5jdGVuYW1lLCBOVUxMKTsKIAkJCQlicmVhazsKIAkJCWRl ZmF1bHQ6CiAJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBSVEUga2luZDogJWQiLCAoaW50 KSBydGUtPnJ0ZWtpbmQpOwpAQCAtMTI2MjAsNyArMTI1OTQsNyBAQCBnZXRfZnJvbV9jbGF1c2Vf aXRlbShOb2RlICpqdG5vZGUsIFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0 KQogCQlpZiAoai0+dXNpbmdDbGF1c2UpCiAJCXsKIAkJCUxpc3RDZWxsICAgKmxjOwotCQkJYm9v bAkJZmlyc3QgPSB0cnVlOworCQkJY29uc3QgY2hhciAqc2VwID0gIiI7CiAKIAkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoYnVmLCAiIFVTSU5HICgiKTsKIAkJCS8qIFVzZSB0aGUgYXNzaWduZWQg bmFtZXMsIG5vdCB3aGF0J3MgaW4gdXNpbmdDbGF1c2UgKi8KQEAgLTEyNjI4LDE3ICsxMjYwMiwx MyBAQCBnZXRfZnJvbV9jbGF1c2VfaXRlbShOb2RlICpqdG5vZGUsIFF1ZXJ5ICpxdWVyeSwgZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0KQogCQkJewogCQkJCWNoYXIJICAgKmNvbG5hbWUgPSAoY2hh ciAqKSBsZmlyc3QobGMpOwogCi0JCQkJaWYgKGZpcnN0KQotCQkJCQlmaXJzdCA9IGZhbHNlOwot CQkJCWVsc2UKLQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOwotCQkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKGNvbG5hbWUpKTsKKwkJ CQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsIHNlcCwgY29sbmFtZSwgTlVMTCk7CisJ CQkJc2VwID0gIiwgIjsKIAkJCX0KIAkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsK IAogCQkJaWYgKGotPmpvaW5fdXNpbmdfYWxpYXMpCi0JCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYs ICIgQVMgJXMiLAotCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihqLT5qb2luX3VzaW5nX2FsaWFz LT5hbGlhc25hbWUpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYsICIgQVMg Iiwgai0+am9pbl91c2luZ19hbGlhcy0+YWxpYXNuYW1lLCBOVUxMKTsKIAkJfQogCQllbHNlIGlm IChqLT5xdWFscykKIAkJewpAQCAtMTI2NjgsOSArMTI2MzgsOSBAQCBnZXRfZnJvbV9jbGF1c2Vf aXRlbShOb2RlICpqdG5vZGUsIFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0 KQogCQkJICogc3VidGxldGllcyB3ZSBkb24ndCB3YW50LiAgSG93ZXZlciwgd2UgbWlnaHQgcHJp bnQgYSBkaWZmZXJlbnQKIAkJCSAqIGFsaWFzIG5hbWUgdGhhbiB3YXMgdGhlcmUgb3JpZ2luYWxs eS4KIAkJCSAqLwotCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgJXMiLAotCQkJCQkJCSBxdW90 ZV9pZGVudGlmaWVyKGdldF9ydGFibGVfbmFtZShqLT5ydGluZGV4LAotCQkJCQkJCQkJCQkJCQkJ ICBjb250ZXh0KSkpOworCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCAiICIsCisJ CQkJCQkJCQkgICBnZXRfcnRhYmxlX25hbWUoai0+cnRpbmRleCwKKwkJCQkJCQkJCQkJCQkgICBj b250ZXh0KSwgTlVMTCk7CiAJCQlnZXRfY29sdW1uX2FsaWFzX2xpc3QoY29saW5mbywgY29udGV4 dCk7CiAJCX0KIAl9CkBAIC0xMjc0NSw5ICsxMjcxNSw5IEBAIGdldF9ydGVfYWxpYXMoUmFuZ2VU YmxFbnRyeSAqcnRlLCBpbnQgdmFybm8sIGJvb2wgdXNlX2FzLAogCX0KIAogCWlmIChwcmludGFs aWFzKQotCQlhcHBlbmRTdHJpbmdJbmZvKGNvbnRleHQtPmJ1ZiwgIiVzJXMiLAotCQkJCQkJIHVz ZV9hcyA/ICIgQVMgIiA6ICIgIiwKLQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHJlZm5hbWUpKTsK KwkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoY29udGV4dC0+YnVmLAorCQkJCQkJCQkgICB1 c2VfYXMgPyAiIEFTICIgOiAiICIsCisJCQkJCQkJCSAgIHJlZm5hbWUsIE5VTEwpOwogfQogCiAv KgpAQCAtMTI3NzcsNyArMTI3NDcsNyBAQCBnZXRfY29sdW1uX2FsaWFzX2xpc3QoZGVwYXJzZV9j b2x1bW5zICpjb2xpbmZvLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJCX0KIAkJZWxzZQog CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOwotCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihjb2xuYW1lKSk7CisJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKGJ1ZiwgTlVMTCwgY29sbmFtZSwgTlVMTCk7CiAJfQogCWlmICghZmlyc3Qp CiAJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKQEAgLTEyOTEwLDEzICsxMjg4MCwx MSBAQCBnZXRfb3BjbGFzc19uYW1lKE9pZCBvcGNsYXNzLCBPaWQgYWN0dWFsX2RhdGF0eXBlLAog CQkvKiBPa2F5LCB3ZSBuZWVkIHRoZSBvcGNsYXNzIG5hbWUuICBEbyB3ZSBuZWVkIHRvIHF1YWxp ZnkgaXQ/ICovCiAJCW9wY25hbWUgPSBOYW1lU3RyKG9wY3JlYy0+b3BjbmFtZSk7CiAJCWlmIChP cGNsYXNzSXNWaXNpYmxlKG9wY2xhc3MpKQotCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgJXMi LCBxdW90ZV9pZGVudGlmaWVyKG9wY25hbWUpKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlm aWVyKGJ1ZiwgIiAiLCBvcGNuYW1lLCBOVUxMKTsKIAkJZWxzZQogCQl7CiAJCQluc3BuYW1lID0g Z2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAob3BjcmVjLT5vcGNuYW1lc3BhY2UpOwotCQkJYXBw ZW5kU3RyaW5nSW5mbyhidWYsICIgJXMuJXMiLAotCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKG5z cG5hbWUpLAotCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKG9wY25hbWUpKTsKKwkJCWFwcGVuZFN0 cmluZ0luZm9RdWFsaWZpZWRJZGVudGlmaWVyKGJ1ZiwgTlVMTCwgbnNwbmFtZSwgb3BjbmFtZSwg TlVMTCk7CiAJCX0KIAl9CiAJUmVsZWFzZVN5c0NhY2hlKGh0X29wYyk7CkBAIC0xMjk4MCw3ICsx Mjk0OCw3IEBAIHByb2Nlc3NJbmRpcmVjdGlvbihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQg KmNvbnRleHQpCiAJCQlBc3NlcnQobGlzdF9sZW5ndGgoZnN0b3JlLT5maWVsZG51bXMpID09IDEp OwogCQkJZmllbGRuYW1lID0gZ2V0X2F0dG5hbWUodHlwcmVsaWQsCiAJCQkJCQkJCQlsaW5pdGlh bF9pbnQoZnN0b3JlLT5maWVsZG51bXMpLCBmYWxzZSk7Ci0JCQlhcHBlbmRTdHJpbmdJbmZvKGJ1 ZiwgIi4lcyIsIHF1b3RlX2lkZW50aWZpZXIoZmllbGRuYW1lKSk7CisJCQlhcHBlbmRTdHJpbmdJ bmZvSWRlbnRpZmllcihidWYsICIuIiwgZmllbGRuYW1lLCBOVUxMKTsKIAogCQkJLyoKIAkJCSAq IFdlIGlnbm9yZSBhcmcgc2luY2UgaXQgc2hvdWxkIGJlIGFuIHVuaW50ZXJlc3RpbmcgcmVmZXJl bmNlIHRvCkBAIC0xMzUzNSw3ICsxMzUwMyw3IEBAIGdlbmVyYXRlX29wZXJhdG9yX25hbWUoT2lk IG9wZXJpZCwgT2lkIGFyZzEsIE9pZCBhcmcyKQogCWVsc2UKIAl7CiAJCW5zcG5hbWUgPSBnZXRf bmFtZXNwYWNlX25hbWVfb3JfdGVtcChvcGVyZm9ybS0+b3BybmFtZXNwYWNlKTsKLQkJYXBwZW5k U3RyaW5nSW5mbygmYnVmLCAiT1BFUkFUT1IoJXMuIiwgcXVvdGVfaWRlbnRpZmllcihuc3BuYW1l KSk7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZidWYsICJPUEVSQVRPUigiLCBuc3Bu YW1lLCAiLiIpOwogCX0KIAogCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1Ziwgb3BybmFtZSk7 CkBAIC0xMzY0MSw4ICsxMzYwOSw3IEBAIGFkZF9jYXN0X3RvKFN0cmluZ0luZm8gYnVmLCBPaWQg dHlwaWQpCiAJdHlwbmFtZSA9IE5hbWVTdHIodHlwZm9ybS0+dHlwbmFtZSk7CiAJbnNwbmFtZSA9 IGdldF9uYW1lc3BhY2VfbmFtZV9vcl90ZW1wKHR5cGZvcm0tPnR5cG5hbWVzcGFjZSk7CiAKLQlh cHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIjo6JXMuJXMiLAotCQkJCQkgcXVvdGVfaWRlbnRpZmllcihu c3BuYW1lKSwgcXVvdGVfaWRlbnRpZmllcih0eXBuYW1lKSk7CisJYXBwZW5kU3RyaW5nSW5mb1F1 YWxpZmllZElkZW50aWZpZXIoYnVmLCAiOjoiLCBuc3BuYW1lLCB0eXBuYW1lLCBOVUxMKTsKIAog CVJlbGVhc2VTeXNDYWNoZSh0eXBldHVwKTsKIH0KQEAgLTEzNzM5LDEyICsxMzcwNiwxMiBAQCBn ZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9ucykKIHsKIAlEYXR1 bQkgICAqb3B0aW9uczsKIAlpbnQJCQlub3B0aW9uczsKLQlpbnQJCQlpOworCWNvbnN0IGNoYXIg KnNlcCA9ICIiOwogCiAJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihEYXR1bUdldEFycmF5VHlw ZVAocmVsb3B0aW9ucyksIFRFWFRPSUQsCiAJCQkJCQkJICAmb3B0aW9ucywgTlVMTCwgJm5vcHRp b25zKTsKIAotCWZvciAoaSA9IDA7IGkgPCBub3B0aW9uczsgaSsrKQorCWZvciAoaW50IGkgPSAw OyBpIDwgbm9wdGlvbnM7IGkrKykKIAl7CiAJCWNoYXIJICAgKm9wdGlvbiA9IFRleHREYXR1bUdl dENTdHJpbmcob3B0aW9uc1tpXSk7CiAJCWNoYXIJICAgKm5hbWU7CkBAIC0xMzc2NSw5ICsxMzcz Miw4IEBAIGdldF9yZWxvcHRpb25zKFN0cmluZ0luZm8gYnVmLCBEYXR1bSByZWxvcHRpb25zKQog CQllbHNlCiAJCQl2YWx1ZSA9ICIiOwogCi0JCWlmIChpID4gMCkKLQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiLCAiKTsKLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcz0iLCBxdW90 ZV9pZGVudGlmaWVyKG5hbWUpKTsKKwkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoYnVmLCBz ZXAsIG5hbWUsICI9Iik7CisJCXNlcCA9ICIsICI7CiAKIAkJLyoKIAkJICogSW4gZ2VuZXJhbCB3 ZSBuZWVkIHRvIHF1b3RlIHRoZSB2YWx1ZTsgYnV0IHRvIGF2b2lkIHVubmVjZXNzYXJ5Ci0tIAoy LjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --0000000000001e72f30644025a95 Content-Type: application/octet-stream; name="v2-0003-Remove-quoteOneName-and-related-buffer-sizing-mac.patch" Content-Disposition: attachment; filename="v2-0003-Remove-quoteOneName-and-related-buffer-sizing-mac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi75psjw2 RnJvbSBhMjZjMzJjNWEyZjliNTM4YTJkYjI2NjI0NTc5MGQyOTkwN2I0MmM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogVHVlLCAxOCBOb3YgMjAyNSAxNzoxMzowNyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMy80 XSBSZW1vdmUgcXVvdGVPbmVOYW1lKCkgYW5kIHJlbGF0ZWQgYnVmZmVyLXNpemluZyBtYWNyb3MK IGZyb20gcmlfdHJpZ2dlcnMuYwoKQWZ0ZXIgdGhlIHByZXZpb3VzIHJlZmFjdG9yaW5nLCBxdW90 ZU9uZU5hbWUoKSBhbmQgaXRzIGNhbGxlcnMgYXJlIG5vIGxvbmdlcgpuZWVkZWQuICBSZW1vdmUg dGhlIGZ1bmN0aW9uIGFsb25nIHdpdGggTUFYX1FVT1RFRF9OQU1FX0xFTiwKTUFYX1FVT1RFRF9S RUxfTkFNRV9MRU4sIGFuZCBxdW90ZVJlbGF0aW9uTmFtZSgpLCBhbmQgaW50cm9kdWNlCmFwcGVu ZFJlbGF0aW9uTmFtZSgpIGFzIHRoZSByZW1haW5pbmcgaGVscGVyIGZvciB3cml0aW5nIHF1YWxp ZmllZCByZWxhdGlvbgpuYW1lcyB1c2luZyBhcHBlbmRTdHJpbmdJbmZvUXVhbGlmaWVkSWRlbnRp ZmllcigpLgoKVGhpcyByZWR1Y2VzIHJlZHVuZGFudCBxdW90aW5nIGNvZGUgYW5kIGNlbnRyYWxp emVzIGlkZW50aWZpZXIgaGFuZGxpbmcgaW4KYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoKSAv IGFwcGVuZFN0cmluZ0luZm9RdWFsaWZpZWRJZGVudGlmaWVyKCksIG1ha2luZwpSSSB0cmlnZ2Vy cyBjb25zaXN0ZW50IHdpdGggb3RoZXIgY29kZSB0aGF0IGdlbmVyYXRlcyBTUUwgZnJhZ21lbnRz LgoKTm8gZnVuY3Rpb25hbCBiZWhhdmlvciBjaGFuZ2UgaXMgZXhwZWN0ZWQuCgpBdXRob3I6IENo YW8gTGkgPGxpY0BoaWdoZ28uY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NB RW9XeDI9ZzJSVmt4WEI9SnpXcGhnZmc0UUdWK3NwYUEzUFExckJNMmlNZWhyVnZqZ0BtYWlsLmdt YWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jIHwgMTEyICsr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzMCBpbnNlcnRpb25z KCspLCA4MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4 IDNjYzRkYzJiN2M4Li5kNjc2OTMwYWNhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJz LmMKQEAgLTgwLDkgKzgwLDYgQEAKICNkZWZpbmUgUklfUExBTl9TRVRERUZBVUxUX09OREVMRVRF CQk5CiAjZGVmaW5lIFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURQkJMTAKIAotI2RlZmluZSBN QVhfUVVPVEVEX05BTUVfTEVOICAoTkFNRURBVEFMRU4qMiszKQotI2RlZmluZSBNQVhfUVVPVEVE X1JFTF9OQU1FX0xFTiAgKE1BWF9RVU9URURfTkFNRV9MRU4qMikKLQogI2RlZmluZSBSSUF0dE5h bWUocmVsLCBhdHRudW0pCU5hbWVTdHIoKmF0dG51bUF0dE5hbWUocmVsLCBhdHRudW0pKQogI2Rl ZmluZSBSSUF0dFR5cGUocmVsLCBhdHRudW0pCWF0dG51bVR5cGVJZChyZWwsIGF0dG51bSkKICNk ZWZpbmUgUklBdHRDb2xsYXRpb24ocmVsLCBhdHRudW0pIGF0dG51bUNvbGxhdGlvbklkKHJlbCwg YXR0bnVtKQpAQCAtMTkyLDggKzE4OSw3IEBAIHN0YXRpYyBib29sIHJpX0NoZWNrX1BrX01hdGNo KFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJCQkJCSAgY29uc3QgUklfQ29u c3RyYWludEluZm8gKnJpaW5mbyk7CiBzdGF0aWMgRGF0dW0gcmlfcmVzdHJpY3QoVHJpZ2dlckRh dGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbik7CiBzdGF0aWMgRGF0dW0gcmlfc2V0KFRy aWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCk7Ci1zdGF0 aWMgdm9pZCBxdW90ZU9uZU5hbWUoY2hhciAqYnVmZmVyLCBjb25zdCBjaGFyICpuYW1lKTsKLXN0 YXRpYyB2b2lkIHF1b3RlUmVsYXRpb25OYW1lKGNoYXIgKmJ1ZmZlciwgUmVsYXRpb24gcmVsKTsK K3N0YXRpYyB2b2lkIGFwcGVuZFJlbGF0aW9uTmFtZShTdHJpbmdJbmZvIGJ1ZmZlciwgUmVsYXRp b24gcmVsLCBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKnN1ZmZpeCk7CiBzdGF0aWMg dm9pZCByaV9HZW5lcmF0ZVF1YWwoU3RyaW5nSW5mbyBidWYsCiAJCQkJCQkJY29uc3QgY2hhciAq c2VwLAogCQkJCQkJCWNvbnN0IGNoYXIgKmxlZnRvcHByZWZpeCwgY29uc3QgY2hhciAqbGVmdG9w LCBPaWQgbGVmdG9wdHlwZSwgYm9vbCBxdW90ZWxlZnRvcCwKQEAgLTM1Nyw3ICszNTMsNiBAQCBS SV9GS2V5X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAlpZiAoKHFwbGFuID0gcmlfRmV0 Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxMKQogCXsKIAkJU3RyaW5nSW5mb0RhdGEgcXVl cnlidWY7Ci0JCWNoYXIJCXBrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CiAJCWNv bnN0IGNoYXIgKmF0dG5hbWU7CiAJCWNoYXIJCXBhcmFtbmFtZVsxNl07CiAJCWNvbnN0IGNoYXIg KnF1ZXJ5c2VwOwpAQCAtMzkwLDE5ICszODUsMTYgQEAgUklfRktleV9jaGVjayhUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEpCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CiAJCXBrX29ubHkgPSBw a19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJ CSIiIDogIk9OTFkgIjsKLQkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwpOwog CQlpZiAocmlpbmZvLT5oYXNwZXJpb2QpCiAJCXsKIAkJCWF0dG5hbWUgPSBSSUF0dE5hbWUocGtf cmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsKIAkJCWFwcGVuZFN0 cmluZ0luZm9JZGVudGlmaWVyKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gKFNFTEVDVCAiLCBh dHRuYW1lLCAiIEFTIHIgRlJPTSAiKTsKLQkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAot CQkJCQkJCSAiJXMlcyB4IiwKLQkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJCWFwcGVu ZFJlbGF0aW9uTmFtZSgmcXVlcnlidWYsIHBrX3JlbCwgcGtfb25seSwgIiB4Iik7CiAJCX0KIAkJ ZWxzZQogCQl7Ci0JCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00g JXMlcyB4IiwKLQkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJnF1ZXJ5YnVmLCAiU0VMRUNUIDEgRlJPTSAiKTsKKwkJCWFwcGVuZFJlbGF0aW9u TmFtZSgmcXVlcnlidWYsIHBrX3JlbCwgcGtfb25seSwgIiB4Iik7CiAJCX0KIAkJcXVlcnlzZXAg PSAiV0hFUkUiOwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKQEAg LTUyNiw3ICs1MTgsNiBAQCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0 aW9uIGZrX3JlbCwKIAlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9 PSBOVUxMKQogCXsKIAkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7Ci0JCWNoYXIJCXBrcmVsbmFt ZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CiAJCWNvbnN0IGNoYXIgKmF0dG5hbWU7CiAJCWNo YXIJCXBhcmFtbmFtZVsxNl07CiAJCWNvbnN0IGNoYXIgKnF1ZXJ5c2VwOwpAQCAtNTU5LDE5ICs1 NTAsMTYgQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBma19y ZWwsCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CiAJCXBrX29ubHkgPSBwa19yZWwtPnJk X3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJCSIiIDogIk9O TFkgIjsKLQkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwpOwogCQlpZiAocmlp bmZvLT5oYXNwZXJpb2QpCiAJCXsKIAkJCWF0dG5hbWUgPSBSSUF0dE5hbWUocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsKIAkJCWFwcGVuZFN0cmluZ0luZm9J ZGVudGlmaWVyKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gKFNFTEVDVCAiLCBhdHRuYW1lLCAi IEFTIHIgRlJPTSAiKTsKLQkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAotCQkJCQkJCSAi JXMlcyB4IiwKLQkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJCWFwcGVuZFJlbGF0aW9u TmFtZSgmcXVlcnlidWYsIHBrX3JlbCwgcGtfb25seSwgIiB4Iik7CiAJCX0KIAkJZWxzZQogCQl7 Ci0JCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwK LQkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JnF1ZXJ5YnVmLCAiU0VMRUNUIDEgRlJPTSAiKTsKKwkJCWFwcGVuZFJlbGF0aW9uTmFtZSgmcXVl cnlidWYsIHBrX3JlbCwgcGtfb25seSwgIiB4Iik7CiAJCX0KIAkJcXVlcnlzZXAgPSAiV0hFUkUi OwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKQEAgLTc1MywxMCAr NzQxLDcgQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2Fj dGlvbikKIAlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxM KQogCXsKIAkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7Ci0JCWNoYXIJCXBrcmVsbmFtZVtNQVhf UVVPVEVEX1JFTF9OQU1FX0xFTl07Ci0JCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9O QU1FX0xFTl07CiAJCWNvbnN0IGNoYXIgKmF0dG5hbWU7Ci0JCWNoYXIJCXBlcmlvZGF0dG5hbWVb TUFYX1FVT1RFRF9OQU1FX0xFTl07CiAJCWNoYXIJCXBhcmFtbmFtZVsxNl07CiAJCWNvbnN0IGNo YXIgKnF1ZXJ5c2VwOwogCQlPaWQJCQlxdWVyeW9pZHNbUklfTUFYX05VTUtFWVNdOwpAQCAtNzcz LDkgKzc1OCw4IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19u b19hY3Rpb24pCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CiAJCWZrX29ubHkgPSBma19y ZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJCSIi IDogIk9OTFkgIjsKLQkJcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOwotCQlh cHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwKLQkJCQkJ CSBma19vbmx5LCBma3JlbG5hbWUpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVyeWJ1 ZiwgIlNFTEVDVCAxIEZST00gIik7CisJCWFwcGVuZFJlbGF0aW9uTmFtZSgmcXVlcnlidWYsIGZr X3JlbCwgZmtfb25seSwgIiB4Iik7CiAJCXF1ZXJ5c2VwID0gIldIRVJFIjsKIAkJZm9yIChpbnQg aSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJCXsKQEAgLTg0MywxMCArODI3LDggQEAg cmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJ CWluaXRTdHJpbmdJbmZvKCZyZXBsYWNlbWVudHNidWYpOwogCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmcmVwbGFjZW1lbnRzYnVmLCAiKFNFTEVDVCBwZ19jYXRhbG9nLnJhbmdlX2FnZyhyKSBG Uk9NICIpOwogCi0JCQlxdW90ZU9uZU5hbWUocGVyaW9kYXR0bmFtZSwgUklBdHROYW1lKHBrX3Jl bCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSkpOwotCQkJcXVvdGVSZWxh dGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwpOwotCQkJYXBwZW5kU3RyaW5nSW5mbygmcmVwbGFj ZW1lbnRzYnVmLCAiKFNFTEVDVCB5LiVzIHIgRlJPTSAlcyVzIHkiLAotCQkJCQkJCSBwZXJpb2Rh dHRuYW1lLCBwa19vbmx5LCBwa3JlbG5hbWUpOworCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZp ZXIoJnJlcGxhY2VtZW50c2J1ZiwgIihTRUxFQ1QgeS4iLCBSSUF0dE5hbWUocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSwgIiByIEZST00gIik7CisJCQlhcHBl bmRSZWxhdGlvbk5hbWUoJnJlcGxhY2VtZW50c2J1ZiwgcGtfcmVsLCBwa19vbmx5LCAiIHkiKTsK IAogCQkJLyogUmVzdHJpY3QgcGsgcm93cyB0byB3aGF0IG1hdGNoZXMgKi8KIAkJCXF1ZXJ5c2Vw ID0gIldIRVJFIjsKQEAgLTkzOSw3ICs5MjEsNiBAQCBSSV9GS2V5X2Nhc2NhZGVfZGVsKFBHX0ZV TkNUSU9OX0FSR1MpCiAJaWYgKChxcGxhbiA9IHJpX0ZldGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkg PT0gTlVMTCkKIAl7CiAJCVN0cmluZ0luZm9EYXRhIHF1ZXJ5YnVmOwotCQljaGFyCQlma3JlbG5h bWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwogCQljb25zdCBjaGFyICphdHRuYW1lOwogCQlj aGFyCQlwYXJhbW5hbWVbMTZdOwogCQljb25zdCBjaGFyICpxdWVyeXNlcDsKQEAgLTk1Niw5ICs5 MzcsOCBAQCBSSV9GS2V5X2Nhc2NhZGVfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWluaXRTdHJp bmdJbmZvKCZxdWVyeWJ1Zik7CiAJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJCSIiIDogIk9OTFkgIjsKLQkJcXVvdGVS ZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVy eWJ1ZiwgIkRFTEVURSBGUk9NICVzJXMiLAotCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSk7CisJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCAiREVMRVRFIEZST00gIik7CisJCWFw cGVuZFJlbGF0aW9uTmFtZSgmcXVlcnlidWYsIGZrX3JlbCwgZmtfb25seSwgTlVMTCk7CiAJCXF1 ZXJ5c2VwID0gIldIRVJFIjsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBp KyspCiAJCXsKQEAgLTEwNDQsNyArMTAyNCw2IEBAIFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVO Q1RJT05fQVJHUykKIAl7CiAJCVN0cmluZ0luZm9EYXRhIHF1ZXJ5YnVmOwogCQlTdHJpbmdJbmZv RGF0YSBxdWFsYnVmOwotCQljaGFyCQlma3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5d OwogCQljb25zdCBjaGFyICphdHRuYW1lOwogCQljaGFyCQlwYXJhbW5hbWVbMTZdOwogCQljb25z dCBjaGFyICpxdWVyeXNlcDsKQEAgLTEwNjYsOSArMTA0NSw4IEBAIFJJX0ZLZXlfY2FzY2FkZV91 cGQoUEdfRlVOQ1RJT05fQVJHUykKIAkJaW5pdFN0cmluZ0luZm8oJnF1YWxidWYpOwogCQlma19v bmx5ID0gZmtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJM RSA/CiAJCQkiIiA6ICJPTkxZICI7Ci0JCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtf cmVsKTsKLQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJVUERBVEUgJXMlcyBTRVQiLAot CQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1 ZXJ5YnVmLCAiVVBEQVRFICIpOworCQlhcHBlbmRSZWxhdGlvbk5hbWUoJnF1ZXJ5YnVmLCBma19y ZWwsIGZrX29ubHksICIgU0VUIik7CiAJCXF1ZXJ5c2VwID0gIiI7CiAJCXF1YWxzZXAgPSAiV0hF UkUiOwogCQlmb3IgKGludCBpID0gMCwgaiA9IHJpaW5mby0+bmtleXM7IGkgPCByaWluZm8tPm5r ZXlzOyBpKyssIGorKykKQEAgLTEyMzIsNyArMTIxMCw2IEBAIHJpX3NldChUcmlnZ2VyRGF0YSAq dHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJaWYgKChxcGxhbiA9IHJp X0ZldGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKIAl7CiAJCVN0cmluZ0luZm9EYXRh IHF1ZXJ5YnVmOwotCQljaGFyCQlma3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwog CQljb25zdCBjaGFyICphdHRuYW1lOwogCQljaGFyCQlwYXJhbW5hbWVbMTZdOwogCQljb25zdCBj aGFyICpxdWVyeXNlcDsKQEAgLTEyODEsOSArMTI1OCw4IEBAIHJpX3NldChUcmlnZ2VyRGF0YSAq dHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJCWluaXRTdHJpbmdJbmZv KCZxdWVyeWJ1Zik7CiAJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJCSIiIDogIk9OTFkgIjsKLQkJcXVvdGVSZWxhdGlv bk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1Ziwg IlVQREFURSAlcyVzIFNFVCIsCi0JCQkJCQkgZmtfb25seSwgZmtyZWxuYW1lKTsKKwkJYXBwZW5k U3RyaW5nSW5mbygmcXVlcnlidWYsICJVUERBVEUgIik7CisJCWFwcGVuZFJlbGF0aW9uTmFtZSgm cXVlcnlidWYsIGZrX3JlbCwgZmtfb25seSwgIiBTRVQiKTsKIAogCQkvKgogCQkgKiBBZGQgYXNz aWdubWVudCBjbGF1c2VzCkBAIC0xNTA5LDggKzE0ODUsNiBAQCBSSV9Jbml0aWFsX0NoZWNrKFRy aWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogewogCWNv bnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CiAJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7 Ci0JY2hhcgkJcGtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKLQljaGFyCQlma3Jl bG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwogCWNvbnN0IGNoYXIgKnBrYXR0bmFtZTsK IAljb25zdCBjaGFyICpma2F0dG5hbWU7CiAJUmFuZ2VUYmxFbnRyeSAqcnRlOwpAQCAtMTYxMywx NSArMTU4NywxMyBAQCBSSV9Jbml0aWFsX0NoZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9u IGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogCQlzZXAgPSAiLCAiOwogCX0KIAotCXF1b3RlUmVs YXRpb25OYW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsKLQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5h bWUsIGZrX3JlbCk7CiAJZmtfb25seSA9IGZrX3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUgPwogCQkiIiA6ICJPTkxZICI7CiAJcGtfb25seSA9IHBrX3Jl bC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPwogCQkiIiA6 ICJPTkxZICI7Ci0JYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsCi0JCQkJCSAiIEZST00gJXMl cyBmayBMRUZUIE9VVEVSIEpPSU4gJXMlcyBwayBPTiIsCi0JCQkJCSBma19vbmx5LCBma3JlbG5h bWUsIHBrX29ubHksIHBrcmVsbmFtZSk7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnli dWYsICIgRlJPTSAiKTsKKwlhcHBlbmRSZWxhdGlvbk5hbWUoJnF1ZXJ5YnVmLCBma19yZWwsIGZr X29ubHksICIgZmsgTEVGVCBPVVRFUiBKT0lOICIpOworCWFwcGVuZFJlbGF0aW9uTmFtZSgmcXVl cnlidWYsIHBrX3JlbCwgcGtfb25seSwgIiBwayBPTiIpOwogCiAJc2VwID0gIigiOwogCWZvciAo aW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQpAQCAtMTc5OSw4ICsxNzcxLDYgQEAg UklfUGFydGl0aW9uUmVtb3ZlX0NoZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3Jl bCwgUmVsYXRpb24gcGtfcmVsKQogCWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CiAJ U3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7CiAJY2hhcgkgICAqY29uc3RyYWludERlZjsKLQljaGFy CQlwa3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwotCWNoYXIJCWZrcmVsbmFtZVtN QVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CiAJY29uc3QgY2hhciAqcGthdHRuYW1lOwogCWNvbnN0 IGNoYXIgKmZrYXR0bmFtZTsKIAljb25zdCBjaGFyICpzZXA7CkBAIC0xODQ1LDEzICsxODE1LDEy IEBAIFJJX1BhcnRpdGlvblJlbW92ZV9DaGVjayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBm a19yZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAkJc2VwID0gIiwgIjsKIAl9CiAKLQlxdW90ZVJlbGF0 aW9uTmFtZShwa3JlbG5hbWUsIHBrX3JlbCk7Ci0JcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1l LCBma19yZWwpOwogCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFID8KIAkJIiIgOiAiT05MWSAiOwotCWFwcGVuZFN0cmluZ0luZm8o JnF1ZXJ5YnVmLAotCQkJCQkgIiBGUk9NICVzJXMgZmsgSk9JTiAlcyBwayBPTiIsCi0JCQkJCSBm a19vbmx5LCBma3JlbG5hbWUsIHBrcmVsbmFtZSk7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm cXVlcnlidWYsICIgRlJPTSAiKTsKKwlhcHBlbmRSZWxhdGlvbk5hbWUoJnF1ZXJ5YnVmLCBma19y ZWwsIGZrX29ubHksICIgZmsgSk9JTiAiKTsKKwlhcHBlbmRSZWxhdGlvbk5hbWUoJnF1ZXJ5YnVm LCBwa19yZWwsIE5VTEwsICIgcGsgT04iKTsKKwogCS8qIHN0cmNweShwa2F0dG5hbWUsICJway4i KTsgKi8KIAkvKiBzdHJjcHkoZmthdHRuYW1lLCAiZmsuIik7ICovCiAJc2VwID0gIigiOwpAQCAt MjAwNCwzNyArMTk3MywxNiBAQCBSSV9QYXJ0aXRpb25SZW1vdmVfQ2hlY2soVHJpZ2dlciAqdHJp Z2dlciwgUmVsYXRpb24gZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwpCiAKIAogLyoKLSAqIHF1b3Rl T25lTmFtZSAtLS0gc2FmZWx5IHF1b3RlIGEgc2luZ2xlIFNRTCBuYW1lCi0gKgotICogYnVmZmVy IG11c3QgYmUgTUFYX1FVT1RFRF9OQU1FX0xFTiBsb25nIChpbmNsdWRlcyByb29tIGZvciBcMCkK LSAqLwotc3RhdGljIHZvaWQKLXF1b3RlT25lTmFtZShjaGFyICpidWZmZXIsIGNvbnN0IGNoYXIg Km5hbWUpCi17Ci0JLyogUmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGJlIHNtYXJ0LCBqdXN0IGFsd2F5 cyBxdW90ZSBpdC4gKi8KLQkqYnVmZmVyKysgPSAnIic7Ci0Jd2hpbGUgKCpuYW1lKQotCXsKLQkJ aWYgKCpuYW1lID09ICciJykKLQkJCSpidWZmZXIrKyA9ICciJzsKLQkJKmJ1ZmZlcisrID0gKm5h bWUrKzsKLQl9Ci0JKmJ1ZmZlcisrID0gJyInOwotCSpidWZmZXIgPSAnXDAnOwotfQorICogYXBw ZW5kUmVsYXRpb25OYW1lIC0tLSBzYWZlbHkgYXBwZW5kIGEgcXVvdGVkIGZ1bGx5IHF1YWxpZmll ZCByZWxhdGlvbiBuYW1lCiAKLS8qCi0gKiBxdW90ZVJlbGF0aW9uTmFtZSAtLS0gc2FmZWx5IHF1 b3RlIGEgZnVsbHkgcXVhbGlmaWVkIHJlbGF0aW9uIG5hbWUKLSAqCi0gKiBidWZmZXIgbXVzdCBi ZSBNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTiBsb25nIChpbmNsdWRlcyByb29tIGZvciBcMCkKICAq Lwogc3RhdGljIHZvaWQKLXF1b3RlUmVsYXRpb25OYW1lKGNoYXIgKmJ1ZmZlciwgUmVsYXRpb24g cmVsKQorYXBwZW5kUmVsYXRpb25OYW1lKFN0cmluZ0luZm8gYnVmZmVyLCBSZWxhdGlvbiByZWws CisJCQkJICAgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpzdWZmaXgpCiB7Ci0JcXVv dGVPbmVOYW1lKGJ1ZmZlciwgZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNl KHJlbCkpKTsKLQlidWZmZXIgKz0gc3RybGVuKGJ1ZmZlcik7Ci0JKmJ1ZmZlcisrID0gJy4nOwot CXF1b3RlT25lTmFtZShidWZmZXIsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOworCWFw cGVuZFN0cmluZ0luZm9RdWFsaWZpZWRJZGVudGlmaWVyKGJ1ZmZlciwgcHJlZml4LAorCQkJCQkJ CQkJCWdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKSwKKwkJCQkJ CQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBzdWZmaXgpOwogfQogCiAvKgotLSAK Mi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --0000000000001e72f30644025a95 Content-Type: application/octet-stream; name="v2-0002-Use-appendStringInfoIdentifier-throughout-ri_trig.patch" Content-Disposition: attachment; filename="v2-0002-Use-appendStringInfoIdentifier-throughout-ri_trig.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi75r4kq3 RnJvbSBhNjA3NWQ0ODk3NzhiM2Q4ZTVmNzBkZTM4ZWY1YjViOTcyMjZkOTA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogTW9uLCAxNyBOb3YgMjAyNSAxMjowOToxMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMi80 XSBVc2UgYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoKSB0aHJvdWdob3V0CiByaV90cmlnZ2Vy cy5jCgpSZXBsYWNlIG1vc3QgdXNlcyBvZiBxdW90ZU9uZU5hbWUoKSBhbmQgbWFudWFsIHN0YWNr IGJ1ZmZlcnMgaW4KcmlfdHJpZ2dlcnMuYyB3aXRoIGFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVy KCkgYW5kIHJlbGF0ZWQgaW5mcmFzdHJ1Y3R1cmUuCgpUaGlzIHNpbXBsaWZpZXMgdGhlIGNvbnN0 cnVjdGlvbiBvZiBTUUwgcXVlcmllcyBnZW5lcmF0ZWQgYnkgUkkgdHJpZ2dlcnMgYW5kCmVsaW1p bmF0ZXMgdGhlIG5lZWQgZm9yIE1BWF9RVU9URURfTkFNRV9MRU4gLyBzdGFjay1hbGxvY2F0ZWQg aW50ZXJtZWRpYXRlCmJ1ZmZlcnMuICBJdCBhbHNvIHJlbW92ZXMgc2V2ZXJhbCBjb2RlIHBhdGhz IHdoZXJlIGlkZW50aWZpZXJzIHdlcmUgcXVvdGVkCm1hbnVhbGx5LCBtYWtpbmcgdGhlIHF1b3Rp bmcgcnVsZXMgY29uc2lzdGVudCB3aXRoIHJ1bGV1dGlscy5jIGFuZCB0aGUgR1VDCnF1b3RlX2Fs bF9pZGVudGlmaWVycy4KClRoaXMgY29tbWl0IGFsc28gYWRqdXN0cyBnZW5lcmF0ZV9vcGVyYXRv cl9jbGF1c2UoKSB0byBzdXBwb3J0IHByZWZpeGVkCmFyZ3VtZW50cyBhbmQgaWRlbnRpZmllciBx dW90aW5nIGRpcmVjdGx5LCByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHBsYWNlcwp3aGVyZSBjYWxs ZXJzIG5lZWQgdG8gaW5qZWN0IHN0cmluZyBjb25jYXRlbmF0aW9uIGxvZ2ljLgoKTm8gdXNlci12 aXNpYmxlIGJlaGF2aW9yIGNoYW5nZSBpcyBpbnRlbmRlZDsgdGhlIGdlbmVyYXRlZCBTUUwgc2hv dWxkIGJlCmVxdWl2YWxlbnQgdG8gdGhlIHByZXZpb3VzIHZlcnNpb24uCgpBdXRob3I6IENoYW8g TGkgPGxpY0BoaWdoZ28uY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRW9X eDI9ZzJSVmt4WEI9SnpXcGhnZmc0UUdWK3NwYUEzUFExckJNMmlNZWhyVnZqZ0BtYWlsLmdtYWls LmNvbQotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgIHwgICA0ICstCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyB8IDE4OCArKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICB8ICAzMSAr KystLQogc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaCAgICAgICAgfCAgIDkgKy0KIDQgZmls ZXMgY2hhbmdlZCwgMTIwIGluc2VydGlvbnMoKyksIDExMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9tYXR2aWV3LmMKaW5kZXggZWY3YzBkNjI0ZjEuLmYxYWQ1YThlMDU5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWF0dmlldy5jCkBAIC03OTcsOSArNzk3LDkgQEAgcmVmcmVzaF9ieV9tYXRjaF9tZXJnZShPaWQg bWF0dmlld09pZCwgT2lkIHRlbXBPaWQsIE9pZCByZWxvd25lciwKIAkJCQkJCQkJCQkJCQkgTmFt ZVN0cihhdHRyLT5hdHRuYW1lKSk7CiAKIAkJCQlnZW5lcmF0ZV9vcGVyYXRvcl9jbGF1c2UoJnF1 ZXJ5YnVmLAotCQkJCQkJCQkJCSBsZWZ0b3AsIGF0dHJ0eXBlLAorCQkJCQkJCQkJCSBOVUxMLCBs ZWZ0b3AsIGF0dHJ0eXBlLCBmYWxzZSwKIAkJCQkJCQkJCQkgb3AsCi0JCQkJCQkJCQkJIHJpZ2h0 b3AsIGF0dHJ0eXBlKTsKKwkJCQkJCQkJCQkgTlVMTCwgcmlnaHRvcCwgYXR0cnR5cGUsIGZhbHNl KTsKIAogCQkJCWZvdW5kVW5pcXVlSW5kZXggPSB0cnVlOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYwppbmRleCA5ZTEzZjUyNjk5NC4uM2NjNGRjMmI3YzggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0xOTYsOSArMTk2LDkgQEAgc3RhdGljIHZvaWQgcXVv dGVPbmVOYW1lKGNoYXIgKmJ1ZmZlciwgY29uc3QgY2hhciAqbmFtZSk7CiBzdGF0aWMgdm9pZCBx dW90ZVJlbGF0aW9uTmFtZShjaGFyICpidWZmZXIsIFJlbGF0aW9uIHJlbCk7CiBzdGF0aWMgdm9p ZCByaV9HZW5lcmF0ZVF1YWwoU3RyaW5nSW5mbyBidWYsCiAJCQkJCQkJY29uc3QgY2hhciAqc2Vw LAotCQkJCQkJCWNvbnN0IGNoYXIgKmxlZnRvcCwgT2lkIGxlZnRvcHR5cGUsCisJCQkJCQkJY29u c3QgY2hhciAqbGVmdG9wcHJlZml4LCBjb25zdCBjaGFyICpsZWZ0b3AsIE9pZCBsZWZ0b3B0eXBl LCBib29sIHF1b3RlbGVmdG9wLAogCQkJCQkJCU9pZCBvcG9pZCwKLQkJCQkJCQljb25zdCBjaGFy ICpyaWdodG9wLCBPaWQgcmlnaHRvcHR5cGUpOworCQkJCQkJCWNvbnN0IGNoYXIgKnJpZ2h0b3Bw cmVmaXgsIGNvbnN0IGNoYXIgKnJpZ2h0b3AsIE9pZCByaWdodG9wdHlwZSwgYm9vbCBxdW90ZXJp Z2h0b3ApOwogc3RhdGljIHZvaWQgcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKFN0cmluZ0luZm8g YnVmLCBPaWQgY29sbGF0aW9uKTsKIHN0YXRpYyBpbnQJcmlfTnVsbENoZWNrKFR1cGxlRGVzYyB0 dXBEZXNjLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCSBjb25zdCBSSV9Db25zdHJhaW50 SW5mbyAqcmlpbmZvLCBib29sIHJlbF9pc19wayk7CkBAIC0zNTgsNyArMzU4LDcgQEAgUklfRktl eV9jaGVjayhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAJewogCQlTdHJpbmdJbmZvRGF0YSBxdWVy eWJ1ZjsKIAkJY2hhcgkJcGtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKLQkJY2hh cgkJYXR0bmFtZVtNQVhfUVVPVEVEX05BTUVfTEVOXTsKKwkJY29uc3QgY2hhciAqYXR0bmFtZTsK IAkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKIAkJY29uc3QgY2hhciAqcXVlcnlzZXA7CiAJCU9pZAkJ CXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZU107CkBAIC0zOTMsMTEgKzM5MywxMSBAQCBSSV9GS2V5 X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxu YW1lLCBwa19yZWwpOwogCQlpZiAocmlpbmZvLT5oYXNwZXJpb2QpCiAJCXsKLQkJCXF1b3RlT25l TmFtZShhdHRuYW1lLAotCQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVt c1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKKwkJCWF0dG5hbWUgPSBSSUF0dE5hbWUocGtfcmVsLCBy aWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm9JZGVudGlmaWVyKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gKFNFTEVDVCAiLCBhdHRuYW1l LCAiIEFTIHIgRlJPTSAiKTsKIAkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAotCQkJCQkJ CSAiU0VMRUNUIDEgRlJPTSAoU0VMRUNUICVzIEFTIHIgRlJPTSAlcyVzIHgiLAotCQkJCQkJCSBh dHRuYW1lLCBwa19vbmx5LCBwa3JlbG5hbWUpOworCQkJCQkJCSAiJXMlcyB4IiwKKwkJCQkJCQkg cGtfb25seSwgcGtyZWxuYW1lKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTQxMCwxMyArNDEwLDEy IEBAIFJJX0ZLZXlfY2hlY2soVHJpZ2dlckRhdGEgKnRyaWdkYXRhKQogCQkJT2lkCQkJcGtfdHlw ZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCQlPaWQJCQlm a190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAotCQkJ cXVvdGVPbmVOYW1lKGF0dG5hbWUsCi0JCQkJCQkgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5w a19hdHRudW1zW2ldKSk7CisJCQlhdHRuYW1lID0gUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5w a19hdHRudW1zW2ldKTsKIAkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOwogCQkJ cmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVlcnlzZXAsCi0JCQkJCQkJYXR0bmFtZSwgcGtf dHlwZSwKKwkJCQkJCQlOVUxMLCBhdHRuYW1lLCBwa190eXBlLCB0cnVlLAogCQkJCQkJCXJpaW5m by0+cGZfZXFfb3Byc1tpXSwKLQkJCQkJCQlwYXJhbW5hbWUsIGZrX3R5cGUpOworCQkJCQkJCU5V TEwsIHBhcmFtbmFtZSwgZmtfdHlwZSwgZmFsc2UpOwogCQkJcXVlcnlzZXAgPSAiQU5EIjsKIAkJ CXF1ZXJ5b2lkc1tpXSA9IGZrX3R5cGU7CiAJCX0KQEAgLTQyOCw5ICs0MjcsOSBAQCBSSV9GS2V5 X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgIik7CiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIs IHJpaW5mby0+bmtleXMpOwogCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgIiIsCi0JCQkJ CQkJcGFyYW1uYW1lLCBma190eXBlLAorCQkJCQkJCU5VTEwsIHBhcmFtbmFtZSwgZmtfdHlwZSwg ZmFsc2UsCiAJCQkJCQkJcmlpbmZvLT5hZ2dlZF9wZXJpb2RfY29udGFpbmVkX2J5X29wZXIsCi0J CQkJCQkJInBnX2NhdGFsb2cucmFuZ2VfYWdnIiwgQU5ZTVVMVElSQU5HRU9JRCk7CisJCQkJCQkJ TlVMTCwgInBnX2NhdGFsb2cucmFuZ2VfYWdnIiwgQU5ZTVVMVElSQU5HRU9JRCwgZmFsc2UpOwog CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnlidWYsICIoeDEucikiKTsKIAkJfQogCkBA IC01MjgsNyArNTI3LDcgQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxh dGlvbiBma19yZWwsCiAJewogCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKIAkJY2hhcgkJcGty ZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKLQkJY2hhcgkJYXR0bmFtZVtNQVhfUVVP VEVEX05BTUVfTEVOXTsKKwkJY29uc3QgY2hhciAqYXR0bmFtZTsKIAkJY2hhcgkJcGFyYW1uYW1l WzE2XTsKIAkJY29uc3QgY2hhciAqcXVlcnlzZXA7CiAJCWNvbnN0IGNoYXIgKnBrX29ubHk7CkBA IC01NjMsMTEgKzU2MiwxMSBAQCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJl bGF0aW9uIGZrX3JlbCwKIAkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwpOwog CQlpZiAocmlpbmZvLT5oYXNwZXJpb2QpCiAJCXsKLQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBS SUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7 Ci0KKwkJCWF0dG5hbWUgPSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlp bmZvLT5ua2V5cyAtIDFdKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZxdWVyeWJ1 ZiwgIlNFTEVDVCAxIEZST00gKFNFTEVDVCAiLCBhdHRuYW1lLCAiIEFTIHIgRlJPTSAiKTsKIAkJ CWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAotCQkJCQkJCSAiU0VMRUNUIDEgRlJPTSAoU0VM RUNUICVzIEFTIHIgRlJPTSAlcyVzIHgiLAotCQkJCQkJCSBhdHRuYW1lLCBwa19vbmx5LCBwa3Jl bG5hbWUpOworCQkJCQkJCSAiJXMlcyB4IiwKKwkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsK IAkJfQogCQllbHNlCiAJCXsKQEAgLTU3OSwxMyArNTc4LDEyIEBAIHJpX0NoZWNrX1BrX01hdGNo KFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQl7CiAJCQlPaWQJCQlwa190eXBl ID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKIAotCQkJcXVvdGVP bmVOYW1lKGF0dG5hbWUsCi0JCQkJCQkgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKSk7CisJCQlhdHRuYW1lID0gUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKTsKIAkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOwogCQkJcmlfR2Vu ZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVlcnlzZXAsCi0JCQkJCQkJYXR0bmFtZSwgcGtfdHlwZSwK KwkJCQkJCQlOVUxMLCBhdHRuYW1lLCBwa190eXBlLCB0cnVlLAogCQkJCQkJCXJpaW5mby0+cHBf ZXFfb3Byc1tpXSwKLQkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUpOworCQkJCQkJCU5VTEwsIHBh cmFtbmFtZSwgcGtfdHlwZSwgZmFsc2UpOwogCQkJcXVlcnlzZXAgPSAiQU5EIjsKIAkJCXF1ZXJ5 b2lkc1tpXSA9IHBrX3R5cGU7CiAJCX0KQEAgLTU5Nyw5ICs1OTUsOSBAQCByaV9DaGVja19Qa19N YXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgIik7CiAJCQlzcHJpbnRmKHBhcmFtbmFt ZSwgIiQlZCIsIHJpaW5mby0+bmtleXMpOwogCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1Ziwg IiIsCi0JCQkJCQkJcGFyYW1uYW1lLCBma190eXBlLAorCQkJCQkJCU5VTEwsIHBhcmFtbmFtZSwg ZmtfdHlwZSwgZmFsc2UsCiAJCQkJCQkJcmlpbmZvLT5hZ2dlZF9wZXJpb2RfY29udGFpbmVkX2J5 X29wZXIsCi0JCQkJCQkJInBnX2NhdGFsb2cucmFuZ2VfYWdnIiwgQU5ZTVVMVElSQU5HRU9JRCk7 CisJCQkJCQkJTlVMTCwgInBnX2NhdGFsb2cucmFuZ2VfYWdnIiwgQU5ZTVVMVElSQU5HRU9JRCwg ZmFsc2UpOwogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnlidWYsICIoeDEucikiKTsK IAkJfQogCkBAIC03NTcsNyArNzU1LDcgQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdk YXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7CiAJCWNo YXIJCXBrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CiAJCWNoYXIJCWZrcmVsbmFt ZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07Ci0JCWNoYXIJCWF0dG5hbWVbTUFYX1FVT1RFRF9O QU1FX0xFTl07CisJCWNvbnN0IGNoYXIgKmF0dG5hbWU7CiAJCWNoYXIJCXBlcmlvZGF0dG5hbWVb TUFYX1FVT1RFRF9OQU1FX0xFTl07CiAJCWNoYXIJCXBhcmFtbmFtZVsxNl07CiAJCWNvbnN0IGNo YXIgKnF1ZXJ5c2VwOwpAQCAtNzg0LDEzICs3ODIsMTIgQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRh dGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJCU9pZAkJCXBrX3R5cGUgPSBSSUF0 dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwogCQkJT2lkCQkJZmtfdHlwZSA9 IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAKLQkJCXF1b3RlT25l TmFtZShhdHRuYW1lLAotCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSkpOworCQkJYXR0bmFtZSA9IFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSk7CiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKIAkJCXJpX0dlbmVy YXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAotCQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwK KwkJCQkJCQlOVUxMLCBwYXJhbW5hbWUsIHBrX3R5cGUsIGZhbHNlLAogCQkJCQkJCXJpaW5mby0+ cGZfZXFfb3Byc1tpXSwKLQkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCQkJCQlOVUxMLCBh dHRuYW1lLCBma190eXBlLCB0cnVlKTsKIAkJCXF1ZXJ5c2VwID0gIkFORCI7CiAJCQlxdWVyeW9p ZHNbaV0gPSBwa190eXBlOwogCQl9CkBAIC04MjgsNyArODI1LDcgQEAgcmlfcmVzdHJpY3QoVHJp Z2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJCWNoYXIJICAgKnBrX29u bHkgPSBwa19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF ID8KIAkJCQkiIiA6ICJPTkxZICI7CiAKLQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBSSUF0dE5h bWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7CisJCQlh dHRuYW1lID0gUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+bmtl eXMgLSAxXSk7CiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIHJpaW5mby0+bmtleXMpOwog CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVyeWJ1ZiwgIiBBTkQgTk9UIGNvYWxlc2Nl KCIpOwpAQCAtODM3LDkgKzgzNCw5IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0 YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJCQlpbml0U3RyaW5nSW5mbygmaW50ZXJzZWN0YnVmKTsK IAkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZpbnRlcnNlY3RidWYsICcoJyk7CiAJCQlyaV9HZW5l cmF0ZVF1YWwoJmludGVyc2VjdGJ1ZiwgIiIsCi0JCQkJCQkJYXR0bmFtZSwgZmtfcGVyaW9kX3R5 cGUsCisJCQkJCQkJTlVMTCwgYXR0bmFtZSwgZmtfcGVyaW9kX3R5cGUsIHRydWUsCiAJCQkJCQkJ cmlpbmZvLT5wZXJpb2RfaW50ZXJzZWN0X29wZXIsCi0JCQkJCQkJcGFyYW1uYW1lLCBwa19wZXJp b2RfdHlwZSk7CisJCQkJCQkJTlVMTCwgcGFyYW1uYW1lLCBwa19wZXJpb2RfdHlwZSwgZmFsc2Up OwogCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmludGVyc2VjdGJ1ZiwgJyknKTsKIAogCQkJLyog RmluZCB0aGUgcmVtYWluaW5nIGhpc3RvcnkgKi8KQEAgLTg1NywyMiArODU0LDIxIEBAIHJpX3Jl c3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJCQl7CiAJ CQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tp XSk7CiAKLQkJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKLQkJCQkJCQkgUklBdHROYW1lKHBrX3Jl bCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKSk7CisJCQkJYXR0bmFtZSA9IFJJQXR0TmFtZShwa19y ZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQi LCBpICsgMSk7CiAJCQkJcmlfR2VuZXJhdGVRdWFsKCZyZXBsYWNlbWVudHNidWYsIHF1ZXJ5c2Vw LAotCQkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCisJCQkJCQkJCU5VTEwsIHBhcmFtbmFtZSwg cGtfdHlwZSwgZmFsc2UsCiAJCQkJCQkJCXJpaW5mby0+cHBfZXFfb3Byc1tpXSwKLQkJCQkJCQkJ YXR0bmFtZSwgcGtfdHlwZSk7CisJCQkJCQkJCU5VTEwsIGF0dG5hbWUsIHBrX3R5cGUsIHRydWUp OwogCQkJCXF1ZXJ5c2VwID0gIkFORCI7CiAJCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKIAkJ CX0KIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnJlcGxhY2VtZW50c2J1ZiwgIiBGT1IgS0VZ IFNIQVJFIE9GIHkpIHkyKSIpOwogCiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCAiIiwK LQkJCQkJCQlpbnRlcnNlY3RidWYuZGF0YSwgZmtfcGVyaW9kX3R5cGUsCisJCQkJCQkJTlVMTCwg aW50ZXJzZWN0YnVmLmRhdGEsIGZrX3BlcmlvZF90eXBlLCBmYWxzZSwKIAkJCQkJCQlyaWluZm8t PmFnZ2VkX3BlcmlvZF9jb250YWluZWRfYnlfb3BlciwKLQkJCQkJCQlyZXBsYWNlbWVudHNidWYu ZGF0YSwgQU5ZTVVMVElSQU5HRU9JRCk7CisJCQkJCQkJTlVMTCwgcmVwbGFjZW1lbnRzYnVmLmRh dGEsIEFOWU1VTFRJUkFOR0VPSUQsIGZhbHNlKTsKIAkJCS8qIGVuZCBvZiBjb2FsZXNjZTogKi8K IAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCAiLCBmYWxzZSkiKTsKIAkJfQpA QCAtOTQ0LDcgKzk0MCw3IEBAIFJJX0ZLZXlfY2FzY2FkZV9kZWwoUEdfRlVOQ1RJT05fQVJHUykK IAl7CiAJCVN0cmluZ0luZm9EYXRhIHF1ZXJ5YnVmOwogCQljaGFyCQlma3JlbG5hbWVbTUFYX1FV T1RFRF9SRUxfTkFNRV9MRU5dOwotCQljaGFyCQlhdHRuYW1lW01BWF9RVU9URURfTkFNRV9MRU5d OworCQljb25zdCBjaGFyICphdHRuYW1lOwogCQljaGFyCQlwYXJhbW5hbWVbMTZdOwogCQljb25z dCBjaGFyICpxdWVyeXNlcDsKIAkJT2lkCQkJcXVlcnlvaWRzW1JJX01BWF9OVU1LRVlTXTsKQEAg LTk2OSwxMyArOTY1LDEyIEBAIFJJX0ZLZXlfY2FzY2FkZV9kZWwoUEdfRlVOQ1RJT05fQVJHUykK IAkJCU9pZAkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNb aV0pOwogCQkJT2lkCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0 bnVtc1tpXSk7CiAKLQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAotCQkJCQkJIFJJQXR0TmFtZShm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCQkJYXR0bmFtZSA9IFJJQXR0TmFtZShm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQl ZCIsIGkgKyAxKTsKIAkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAotCQkJ CQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKKwkJCQkJCQlOVUxMLCBwYXJhbW5hbWUsIHBrX3R5cGUs IGZhbHNlLAogCQkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKLQkJCQkJCQlhdHRuYW1lLCBm a190eXBlKTsKKwkJCQkJCQlOVUxMLCBhdHRuYW1lLCBma190eXBlLCB0cnVlKTsKIAkJCXF1ZXJ5 c2VwID0gIkFORCI7CiAJCQlxdWVyeW9pZHNbaV0gPSBwa190eXBlOwogCQl9CkBAIC0xMDUwLDcg KzEwNDUsNyBAQCBSSV9GS2V5X2Nhc2NhZGVfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVN0cmlu Z0luZm9EYXRhIHF1ZXJ5YnVmOwogCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOwogCQljaGFyCQlm a3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwotCQljaGFyCQlhdHRuYW1lW01BWF9R VU9URURfTkFNRV9MRU5dOworCQljb25zdCBjaGFyICphdHRuYW1lOwogCQljaGFyCQlwYXJhbW5h bWVbMTZdOwogCQljb25zdCBjaGFyICpxdWVyeXNlcDsKIAkJY29uc3QgY2hhciAqcXVhbHNlcDsK QEAgLTEwODEsMTYgKzEwNzYsMTUgQEAgUklfRktleV9jYXNjYWRlX3VwZChQR19GVU5DVElPTl9B UkdTKQogCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tpXSk7CiAJCQlPaWQJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5m a19hdHRudW1zW2ldKTsKIAotCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCi0JCQkJCQkgUklBdHRO YW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7Ci0JCQlhcHBlbmRTdHJpbmdJbmZv KCZxdWVyeWJ1ZiwKLQkJCQkJCQkgIiVzICVzID0gJCVkIiwKLQkJCQkJCQkgcXVlcnlzZXAsIGF0 dG5hbWUsIGkgKyAxKTsKKwkJCWF0dG5hbWUgPSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZr X2F0dG51bXNbaV0pOworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnlidWYsIHF1ZXJ5 c2VwKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZxdWVyeWJ1ZiwgIiAiLCBhdHRu YW1lLCAiID0gIik7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIiQlZCIsIGkgKyAx KTsKIAkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaiArIDEpOwogCQkJcmlfR2VuZXJhdGVR dWFsKCZxdWFsYnVmLCBxdWFsc2VwLAotCQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKKwkJCQkJ CQlOVUxMLCBwYXJhbW5hbWUsIHBrX3R5cGUsIGZhbHNlLAogCQkJCQkJCXJpaW5mby0+cGZfZXFf b3Byc1tpXSwKLQkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCQkJCQlOVUxMLCBhdHRuYW1l LCBma190eXBlLCB0cnVlKTsKIAkJCXF1ZXJ5c2VwID0gIiwiOwogCQkJcXVhbHNlcCA9ICJBTkQi OwogCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKQEAgLTEyMzksNyArMTIzMyw3IEBAIHJpX3Nl dChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJ ewogCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKIAkJY2hhcgkJZmtyZWxuYW1lW01BWF9RVU9U RURfUkVMX05BTUVfTEVOXTsKLQkJY2hhcgkJYXR0bmFtZVtNQVhfUVVPVEVEX05BTUVfTEVOXTsK KwkJY29uc3QgY2hhciAqYXR0bmFtZTsKIAkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKIAkJY29uc3Qg Y2hhciAqcXVlcnlzZXA7CiAJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CkBAIC0xMjk3LDExICsxMjkx LDEwIEBAIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGlu dCB0Z2tpbmQpCiAJCXF1ZXJ5c2VwID0gIiI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2Nv bHNfdG9fc2V0OyBpKyspCiAJCXsKLQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUo ZmtfcmVsLCBzZXRfY29sc1tpXSkpOwotCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsCi0J CQkJCQkJICIlcyAlcyA9ICVzIiwKLQkJCQkJCQkgcXVlcnlzZXAsIGF0dG5hbWUsCi0JCQkJCQkJ IGlzX3NldF9udWxsID8gIk5VTEwiIDogIkRFRkFVTFQiKTsKKwkJCWF0dG5hbWUgPSBSSUF0dE5h bWUoZmtfcmVsLCBzZXRfY29sc1tpXSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVy eWJ1ZiwgcXVlcnlzZXApOworCQkJYXBwZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJnF1ZXJ5YnVm LCAiICIsIGF0dG5hbWUsICIgPSAiKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5 YnVmLCBpc19zZXRfbnVsbCA/ICJOVUxMIiA6ICJERUZBVUxUIik7CiAJCQlxdWVyeXNlcCA9ICIs IjsKIAkJfQogCkBAIC0xMzE0LDE0ICsxMzA3LDEzIEBAIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJCQlPaWQJCQlwa190eXBlID0g UklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKIAkJCU9pZAkJCWZrX3R5 cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwogCi0JCQlxdW90 ZU9uZU5hbWUoYXR0bmFtZSwKLQkJCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0 dG51bXNbaV0pKTsKKwkJCWF0dG5hbWUgPSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0 dG51bXNbaV0pOwogCiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKIAkJCXJp X0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1YWxzZXAsCi0JCQkJCQkJcGFyYW1uYW1lLCBwa190 eXBlLAorCQkJCQkJCU5VTEwsIHBhcmFtbmFtZSwgcGtfdHlwZSwgZmFsc2UsCiAJCQkJCQkJcmlp bmZvLT5wZl9lcV9vcHJzW2ldLAotCQkJCQkJCWF0dG5hbWUsIGZrX3R5cGUpOworCQkJCQkJCU5V TEwsIGF0dG5hbWUsIGZrX3R5cGUsIHRydWUpOwogCQkJcXVhbHNlcCA9ICJBTkQiOwogCQkJcXVl cnlvaWRzW2ldID0gcGtfdHlwZTsKIAkJfQpAQCAtMTUxOSw4ICsxNTExLDggQEAgUklfSW5pdGlh bF9DaGVjayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3Jl bCkKIAlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKIAljaGFyCQlwa3JlbG5hbWVbTUFYX1FVT1RF RF9SRUxfTkFNRV9MRU5dOwogCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xF Tl07Ci0JY2hhcgkJcGthdHRuYW1lW01BWF9RVU9URURfTkFNRV9MRU4gKyAzXTsKLQljaGFyCQlm a2F0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTiArIDNdOworCWNvbnN0IGNoYXIgKnBrYXR0bmFt ZTsKKwljb25zdCBjaGFyICpma2F0dG5hbWU7CiAJUmFuZ2VUYmxFbnRyeSAqcnRlOwogCVJURVBl cm1pc3Npb25JbmZvICpwa19wZXJtaW5mbzsKIAlSVEVQZXJtaXNzaW9uSW5mbyAqZmtfcGVybWlu Zm87CkBAIC0xNjE1LDkgKzE2MDcsOSBAQCBSSV9Jbml0aWFsX0NoZWNrKFRyaWdnZXIgKnRyaWdn ZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogCXNlcCA9ICIiOwogCWZvciAo aW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCXsKLQkJcXVvdGVPbmVOYW1lKGZr YXR0bmFtZSwKLQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkp OwotCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIiVzZmsuJXMiLCBzZXAsIGZrYXR0bmFt ZSk7CisJCWZrYXR0bmFtZSA9IFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tp XSk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCBzZXApOworCQlhcHBlbmRT dHJpbmdJbmZvSWRlbnRpZmllcigmcXVlcnlidWYsICJmay4iLCBma2F0dG5hbWUsIE5VTEwpOwog CQlzZXAgPSAiLCAiOwogCX0KIApAQCAtMTYzMSw4ICsxNjIzLDYgQEAgUklfSW5pdGlhbF9DaGVj ayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAkJ CQkJICIgRlJPTSAlcyVzIGZrIExFRlQgT1VURVIgSk9JTiAlcyVzIHBrIE9OIiwKIAkJCQkJIGZr X29ubHksIGZrcmVsbmFtZSwgcGtfb25seSwgcGtyZWxuYW1lKTsKIAotCXN0cmNweShwa2F0dG5h bWUsICJway4iKTsKLQlzdHJjcHkoZmthdHRuYW1lLCAiZmsuIik7CiAJc2VwID0gIigiOwogCWZv ciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCXsKQEAgLTE2NDEsMTQgKzE2 MzEsMTIgQEAgUklfSW5pdGlhbF9DaGVjayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19y ZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAkJT2lkCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBr X3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKIAkJT2lkCQkJZmtfY29sbCA9IFJJQXR0Q29s bGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAotCQlxdW90ZU9uZU5hbWUo cGthdHRuYW1lICsgMywKLQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVt c1tpXSkpOwotCQlxdW90ZU9uZU5hbWUoZmthdHRuYW1lICsgMywKLQkJCQkJIFJJQXR0TmFtZShm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCQlwa2F0dG5hbWUgPSBSSUF0dE5hbWUo cGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQlma2F0dG5hbWUgPSBSSUF0dE5hbWUo ZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwogCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5 YnVmLCBzZXAsCi0JCQkJCQlwa2F0dG5hbWUsIHBrX3R5cGUsCisJCQkJCQkicGsuIiwgcGthdHRu YW1lLCBwa190eXBlLCB0cnVlLAogCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAotCQkJCQkJ ZmthdHRuYW1lLCBma190eXBlKTsKKwkJCQkJCSJmay4iLCBma2F0dG5hbWUsIGZrX3R5cGUsIHRy dWUpOwogCQlpZiAocGtfY29sbCAhPSBma19jb2xsKQogCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0 aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CiAJCXNlcCA9ICJBTkQiOwpAQCAtMTY1OCwxNiArMTY0 NiwxNSBAQCBSSV9Jbml0aWFsX0NoZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3Jl bCwgUmVsYXRpb24gcGtfcmVsKQogCSAqIEl0J3Mgc3VmZmljaWVudCB0byB0ZXN0IGFueSBvbmUg cGsgYXR0cmlidXRlIGZvciBudWxsIHRvIGRldGVjdCBhIGpvaW4KIAkgKiBmYWlsdXJlLgogCSAq LwotCXF1b3RlT25lTmFtZShwa2F0dG5hbWUsIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtf YXR0bnVtc1swXSkpOwotCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiKSBXSEVSRSBway4l cyBJUyBOVUxMIEFORCAoIiwgcGthdHRuYW1lKTsKKwlwa2F0dG5hbWUgPSBSSUF0dE5hbWUocGtf cmVsLCByaWluZm8tPnBrX2F0dG51bXNbMF0pOworCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVy KCZxdWVyeWJ1ZiwgIikgV0hFUkUgcGsuIiwgcGthdHRuYW1lLCAiIElTIE5VTEwgQU5EICgiKTsK IAogCXNlcCA9ICIiOwogCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQog CXsKLQkJcXVvdGVPbmVOYW1lKGZrYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5m a19hdHRudW1zW2ldKSk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAotCQkJCQkJICIl c2ZrLiVzIElTIE5PVCBOVUxMIiwKLQkJCQkJCSBzZXAsIGZrYXR0bmFtZSk7CisJCWZrYXR0bmFt ZSA9IFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCBzZXApOworCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRp ZmllcigmcXVlcnlidWYsICJmay4iLCBma2F0dG5hbWUsICIgSVMgTk9UIE5VTEwiKTsKIAkJc3dp dGNoIChyaWluZm8tPmNvbmZtYXRjaHR5cGUpCiAJCXsKIAkJCWNhc2UgRktDT05TVFJfTUFUQ0hf U0lNUExFOgpAQCAtMTgxNCw4ICsxODAxLDggQEAgUklfUGFydGl0aW9uUmVtb3ZlX0NoZWNrKFRy aWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogCWNoYXIJ ICAgKmNvbnN0cmFpbnREZWY7CiAJY2hhcgkJcGtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVf TEVOXTsKIAljaGFyCQlma3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwotCWNoYXIJ CXBrYXR0bmFtZVtNQVhfUVVPVEVEX05BTUVfTEVOICsgM107Ci0JY2hhcgkJZmthdHRuYW1lW01B WF9RVU9URURfTkFNRV9MRU4gKyAzXTsKKwljb25zdCBjaGFyICpwa2F0dG5hbWU7CisJY29uc3Qg Y2hhciAqZmthdHRuYW1lOwogCWNvbnN0IGNoYXIgKnNlcDsKIAljb25zdCBjaGFyICpma19vbmx5 OwogCWludAkJCXNhdmVfbmVzdGxldmVsOwpAQCAtMTg1Miw5ICsxODM5LDkgQEAgUklfUGFydGl0 aW9uUmVtb3ZlX0NoZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRp b24gcGtfcmVsKQogCXNlcCA9ICIiOwogCWZvciAoaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBp KyspCiAJewotCQlxdW90ZU9uZU5hbWUoZmthdHRuYW1lLAotCQkJCQkgUklBdHROYW1lKGZrX3Jl bCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVm LCAiJXNmay4lcyIsIHNlcCwgZmthdHRuYW1lKTsKKwkJZmthdHRuYW1lID0gUklBdHROYW1lKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm cXVlcnlidWYsIHNlcCk7CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKCZxdWVyeWJ1Ziwg ImZrLiIsIGZrYXR0bmFtZSwgTlVMTCk7CiAJCXNlcCA9ICIsICI7CiAJfQogCkBAIC0xODY1LDgg KzE4NTIsOCBAQCBSSV9QYXJ0aXRpb25SZW1vdmVfQ2hlY2soVHJpZ2dlciAqdHJpZ2dlciwgUmVs YXRpb24gZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwpCiAJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnli dWYsCiAJCQkJCSAiIEZST00gJXMlcyBmayBKT0lOICVzIHBrIE9OIiwKIAkJCQkJIGZrX29ubHks IGZrcmVsbmFtZSwgcGtyZWxuYW1lKTsKLQlzdHJjcHkocGthdHRuYW1lLCAicGsuIik7Ci0Jc3Ry Y3B5KGZrYXR0bmFtZSwgImZrLiIpOworCS8qIHN0cmNweShwa2F0dG5hbWUsICJway4iKTsgKi8K KwkvKiBzdHJjcHkoZmthdHRuYW1lLCAiZmsuIik7ICovCiAJc2VwID0gIigiOwogCWZvciAoaSA9 IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJewpAQCAtMTg3NSwxNCArMTg2MiwxMiBAQCBS SV9QYXJ0aXRpb25SZW1vdmVfQ2hlY2soVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRpb24gZmtfcmVs LCBSZWxhdGlvbiBwa19yZWwpCiAJCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19y ZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENvbGxh dGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAKLQkJcXVvdGVPbmVOYW1lKHBr YXR0bmFtZSArIDMsCi0JCQkJCSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNb aV0pKTsKLQkJcXVvdGVPbmVOYW1lKGZrYXR0bmFtZSArIDMsCi0JCQkJCSBSSUF0dE5hbWUoZmtf cmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKKwkJcGthdHRuYW1lID0gUklBdHROYW1lKHBr X3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJZmthdHRuYW1lID0gUklBdHROYW1lKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1 Ziwgc2VwLAotCQkJCQkJcGthdHRuYW1lLCBwa190eXBlLAorCQkJCQkJInBrLiIsIHBrYXR0bmFt ZSwgcGtfdHlwZSwgdHJ1ZSwKIAkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKLQkJCQkJCWZr YXR0bmFtZSwgZmtfdHlwZSk7CisJCQkJCQkiZmsuIiwgZmthdHRuYW1lLCBma190eXBlLCB0cnVl KTsKIAkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCkKIAkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlv bigmcXVlcnlidWYsIHBrX2NvbGwpOwogCQlzZXAgPSAiQU5EIjsKQEAgLTE5MDMsMTAgKzE4ODgs OSBAQCBSSV9QYXJ0aXRpb25SZW1vdmVfQ2hlY2soVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRpb24g ZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwpCiAJc2VwID0gIiI7CiAJZm9yIChpID0gMDsgaSA8IHJp aW5mby0+bmtleXM7IGkrKykKIAl7Ci0JCXF1b3RlT25lTmFtZShma2F0dG5hbWUsIFJJQXR0TmFt ZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZx dWVyeWJ1ZiwKLQkJCQkJCSAiJXNmay4lcyBJUyBOT1QgTlVMTCIsCi0JCQkJCQkgc2VwLCBma2F0 dG5hbWUpOworCQlma2F0dG5hbWUgPSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51 bXNbaV0pOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVyeWJ1Ziwgc2VwKTsKKwkJYXBw ZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoJnF1ZXJ5YnVmLCAiZmsuIiwgZmthdHRuYW1lLCAiIElT IE5PVCBOVUxMIik7CiAJCXN3aXRjaCAocmlpbmZvLT5jb25mbWF0Y2h0eXBlKQogCQl7CiAJCQlj YXNlIEZLQ09OU1RSX01BVENIX1NJTVBMRToKQEAgLTIwNjQsMTMgKzIwNDgsMTUgQEAgcXVvdGVS ZWxhdGlvbk5hbWUoY2hhciAqYnVmZmVyLCBSZWxhdGlvbiByZWwpCiBzdGF0aWMgdm9pZAogcmlf R2VuZXJhdGVRdWFsKFN0cmluZ0luZm8gYnVmLAogCQkJCWNvbnN0IGNoYXIgKnNlcCwKLQkJCQlj b25zdCBjaGFyICpsZWZ0b3AsIE9pZCBsZWZ0b3B0eXBlLAorCQkJCWNvbnN0IGNoYXIgKmxlZnRv cHByZWZpeCwgY29uc3QgY2hhciAqbGVmdG9wLCBPaWQgbGVmdG9wdHlwZSwgYm9vbCBxdW90ZWxl ZnRvcCwKIAkJCQlPaWQgb3BvaWQsCi0JCQkJY29uc3QgY2hhciAqcmlnaHRvcCwgT2lkIHJpZ2h0 b3B0eXBlKQorCQkJCWNvbnN0IGNoYXIgKnJpZ2h0b3BwcmVmaXgsIGNvbnN0IGNoYXIgKnJpZ2h0 b3AsIE9pZCByaWdodG9wdHlwZSwgYm9vbCBxdW90ZXJpZ2h0b3ApCiB7CiAJYXBwZW5kU3RyaW5n SW5mbyhidWYsICIgJXMgIiwgc2VwKTsKLQlnZW5lcmF0ZV9vcGVyYXRvcl9jbGF1c2UoYnVmLCBs ZWZ0b3AsIGxlZnRvcHR5cGUsIG9wb2lkLAotCQkJCQkJCSByaWdodG9wLCByaWdodG9wdHlwZSk7 CisJZ2VuZXJhdGVfb3BlcmF0b3JfY2xhdXNlKGJ1ZiwKKwkJCQkJCQkgbGVmdG9wcHJlZml4LCBs ZWZ0b3AsIGxlZnRvcHR5cGUsIHF1b3RlbGVmdG9wLAorCQkJCQkJCSBvcG9pZCwKKwkJCQkJCQkg cmlnaHRvcHByZWZpeCwgcmlnaHRvcCwgcmlnaHRvcHR5cGUsIHF1b3RlcmlnaHRvcCk7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggMWQ3NjdkZWI2YzQuLmIyMTJhMjhk OWJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0xMzU3MCw5ICsxMzU3MCw5IEBA IGdlbmVyYXRlX29wZXJhdG9yX25hbWUoT2lkIG9wZXJpZCwgT2lkIGFyZzEsIE9pZCBhcmcyKQog ICovCiB2b2lkCiBnZW5lcmF0ZV9vcGVyYXRvcl9jbGF1c2UoU3RyaW5nSW5mbyBidWYsCi0JCQkJ CQkgY29uc3QgY2hhciAqbGVmdG9wLCBPaWQgbGVmdG9wdHlwZSwKKwkJCQkJCSBjb25zdCBjaGFy ICpsZWZ0b3BwcmVmaXgsIGNvbnN0IGNoYXIgKmxlZnRvcCwgT2lkIGxlZnRvcHR5cGUsIGJvb2wg cXVvdGVsZWZ0b3AsCiAJCQkJCQkgT2lkIG9wb2lkLAotCQkJCQkJIGNvbnN0IGNoYXIgKnJpZ2h0 b3AsIE9pZCByaWdodG9wdHlwZSkKKwkJCQkJCSBjb25zdCBjaGFyICpyaWdodG9wcHJlZml4LCBj b25zdCBjaGFyICpyaWdodG9wLCBPaWQgcmlnaHRvcHR5cGUsIGJvb2wgcXVvdGVyaWdodG9wKQog ewogCUhlYXBUdXBsZQlvcGVydHVwOwogCUZvcm1fcGdfb3BlcmF0b3Igb3BlcmZvcm07CkBAIC0x MzU4NSwxNSArMTM1ODUsMzIgQEAgZ2VuZXJhdGVfb3BlcmF0b3JfY2xhdXNlKFN0cmluZ0luZm8g YnVmLAogCW9wZXJmb3JtID0gKEZvcm1fcGdfb3BlcmF0b3IpIEdFVFNUUlVDVChvcGVydHVwKTsK IAlBc3NlcnQob3BlcmZvcm0tPm9wcmtpbmQgPT0gJ2InKTsKIAlvcHJuYW1lID0gTmFtZVN0cihv cGVyZm9ybS0+b3BybmFtZSk7Ci0KIAluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKG9wZXJm b3JtLT5vcHJuYW1lc3BhY2UpOwogCi0JYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIGxlZnRv cCk7CisJaWYgKHF1b3RlbGVmdG9wKQorCQlhcHBlbmRTdHJpbmdJbmZvSWRlbnRpZmllcihidWYs IGxlZnRvcHByZWZpeCwgbGVmdG9wLCBOVUxMKTsKKwllbHNlCisJeworCQlpZiAobGVmdG9wcHJl Zml4KQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIGxlZnRvcHByZWZpeCk7CisJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBsZWZ0b3ApOworCX0KKwogCWlmIChsZWZ0b3B0eXBl ICE9IG9wZXJmb3JtLT5vcHJsZWZ0KQogCQlhZGRfY2FzdF90byhidWYsIG9wZXJmb3JtLT5vcHJs ZWZ0KTsKLQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBPUEVSQVRPUiglcy4iLCBxdW90ZV9pZGVu dGlmaWVyKG5zcG5hbWUpKTsKLQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwgb3BybmFtZSk7 Ci0JYXBwZW5kU3RyaW5nSW5mbyhidWYsICIpICVzIiwgcmlnaHRvcCk7CisKKwlhcHBlbmRTdHJp bmdJbmZvSWRlbnRpZmllcihidWYsICIgT1BFUkFUT1IoIiwgbnNwbmFtZSwgIi4iKTsKKwlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiVzKSAiLCBvcHJuYW1lKTsKKworCWlmIChxdW90ZXJpZ2h0b3Ap CisJCWFwcGVuZFN0cmluZ0luZm9JZGVudGlmaWVyKGJ1ZiwgcmlnaHRvcHByZWZpeCwgcmlnaHRv cCwgTlVMTCk7CisJZWxzZQorCXsKKwkJaWYgKHJpZ2h0b3BwcmVmaXgpCisJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGJ1ZiwgcmlnaHRvcHByZWZpeCk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCByaWdodG9wKTsKKwl9CisKIAlpZiAocmlnaHRvcHR5cGUgIT0gb3BlcmZvcm0tPm9w cnJpZ2h0KQogCQlhZGRfY2FzdF90byhidWYsIG9wZXJmb3JtLT5vcHJyaWdodCk7CiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmggYi9zcmMvaW5jbHVkZS91dGlscy9i dWlsdGlucy5oCmluZGV4IGZmNGJhNzI2NWMyLi5mYzRkZTQ0NDZhYyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlu cy5oCkBAIC04MCwxMCArODAsMTUgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgcXVvdGVfYWxs X2lkZW50aWZpZXJzOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnF1b3RlX2lkZW50aWZpZXIoY29uc3Qg Y2hhciAqaWRlbnQpOwogZXh0ZXJuIGNoYXIgKnF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKGNv bnN0IGNoYXIgKnF1YWxpZmllciwKIAkJCQkJCQkJCQljb25zdCBjaGFyICppZGVudCk7CisKKy8q IGV4dGVybiB2b2lkIGdlbmVyYXRlX29wZXJhdG9yX2NsYXVzZShTdHJpbmdJbmZvIGJ1ZiwgKi8K Ky8qIAkJCQkJCQkJCSBjb25zdCBjaGFyICpsZWZ0b3AsIE9pZCBsZWZ0b3B0eXBlLCAqLworLyog CQkJCQkJCQkJIE9pZCBvcG9pZCwgKi8KKy8qIAkJCQkJCQkJCSBjb25zdCBjaGFyICpyaWdodG9w LCBPaWQgcmlnaHRvcHR5cGUpOyAqLwogZXh0ZXJuIHZvaWQgZ2VuZXJhdGVfb3BlcmF0b3JfY2xh dXNlKFN0cmluZ0luZm8gYnVmLAotCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmxlZnRvcCwgT2lkIGxl ZnRvcHR5cGUsCisJCQkJCQkJCQkgY29uc3QgY2hhciAqbGVmdG9wcHJlZml4LCBjb25zdCBjaGFy ICpsZWZ0b3AsIE9pZCBsZWZ0b3B0eXBlLCBib29sIHF1b3RlbGVmdG9wLAogCQkJCQkJCQkJIE9p ZCBvcG9pZCwKLQkJCQkJCQkJCSBjb25zdCBjaGFyICpyaWdodG9wLCBPaWQgcmlnaHRvcHR5cGUp OworCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnJpZ2h0b3BwcmVmaXgsIGNvbnN0IGNoYXIgKnJpZ2h0 b3AsIE9pZCByaWdodG9wdHlwZSwgYm9vbCBxdW90ZXJpZ2h0b3ApOwogZXh0ZXJuIHZvaWQgYXBw ZW5kU3RyaW5nSW5mb0lkZW50aWZpZXIoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IGNoYXIgKnByZWZp eCwgY29uc3QgY2hhciAqaWRlbnQsIGNvbnN0IGNoYXIgKnN1ZmZpeCk7CiBleHRlcm4gdm9pZCBh cHBlbmRTdHJpbmdJbmZvUXVhbGlmaWVkSWRlbnRpZmllcihTdHJpbmdJbmZvIHN0ciwKIAkJCQkJ CQkJCQkJCWNvbnN0IGNoYXIgKnByZWZpeCwKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --0000000000001e72f30644025a95--