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.94.2) (envelope-from ) id 1rsPhc-006uEB-Oy for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Apr 2024 16:12:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rsPhb-008Qkf-DZ for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Apr 2024 16:12:35 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rsPha-008QkV-Mf for pgsql-hackers@lists.postgresql.org; Thu, 04 Apr 2024 16:12:35 +0000 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rsPhW-000YnT-Pp for pgsql-hackers@postgresql.org; Thu, 04 Apr 2024 16:12:33 +0000 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-1e28856ed7aso8627905ad.0 for ; Thu, 04 Apr 2024 09:12:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pgguru-net.20230601.gappssmtp.com; s=20230601; t=1712247149; x=1712851949; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=KtNWDkeH9wJ7sixvUdgrzDwapYBatx5xdV/myUHQneQ=; b=TTwcejEvwDEe0k19lipyFqbfeDw6uxLAsYbbfnE0p2SS3yXGZHAo9/VhtZ8M7sV7RL OEPquJARgs2yaIJr8yaVPMaUOAtSM3wc4KuTaB5k0NYbqYJ1pXSQIvLa7ubCZRtuY/Zt WgjhxfPhbNgMt/zsPhGSVjGAe7N0uj3mM8r4Hc5oUYDtuQiAqxAecapXFqj/VzqhYbdn Cy7EIEYQJyatuWEJIjK9RwXy7xFdJbOWZSKyI7UIAQ604VyRBIE/YwBQ3HQZCkxdUsl5 ZfwUIsDiNr8QqJhTFBFN5cVDNOeu9TyKlKiIsBr+ZW9d1q5jCCv2qrG11WCLXmVQkATU 3lVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712247149; x=1712851949; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=KtNWDkeH9wJ7sixvUdgrzDwapYBatx5xdV/myUHQneQ=; b=KRakKJFnXKvPvrGIosYdboh5fgS9+SW3pSXx/4M0pofYIjC5GmL6oyRk4W+SXToikO j8bOeWGV+aEOp//47Xrwtr3dr51ff4h9+CGQvDiz8csRHGm04JKO01cVtO3eEIWrs22E LaMVbuvPAHp4S+N8GipME3lB9HHaoh4ShqEfZeVh9StokGFdK/jLAOGNZU2rLcCyOyOp +z/FIUs6mKD3sG7xubIi6M8ZgZE4y6RorvACBYTX6expVKP6WSf9h0sjZbBFmp1HOJuF Qvd6RrzYgTxKAWFe8VHlmil7+xiZ0HmnqQQkmJ7fg7HG1DX0vhLdpllONnLA+l1IXiX1 kG0w== X-Forwarded-Encrypted: i=1; AJvYcCUnG+/oOV2A1YnACX1ZLpAGhYX700zaG6lMiXMNQttX3Dy+F61FjF0yYTEceX7TkWiH1TM0PCOfK2pbi1OKAnVdRtcwxOXmYLO9vPSU X-Gm-Message-State: AOJu0YzssRUJ2XCbtoydHRtt8TRutHTeJL5mCX36oeKJrTcIeIkKCcl4 MpbbQfQNDNJ3++FSOAcZa+43m1k67SzslVHjsh9+uGYLf++KuZMR3tqJYfv4tktl4EbOvDAkPus ak9+o5+Yj1c9HvDOcfAWnGUf/nSJhFXvL/tXaig== X-Google-Smtp-Source: AGHT+IEBVbayOi381D/uZBB1twr8MNry0xXP4xbB4Hsuox34Q7l/h+iQU+C/KCDM6brOLx5OaHXP+nEetoKwnp63TTo= X-Received: by 2002:a17:902:e884:b0:1e2:c4e9:4b65 with SMTP id w4-20020a170902e88400b001e2c4e94b65mr231671plg.47.1712247149625; Thu, 04 Apr 2024 09:12:29 -0700 (PDT) MIME-Version: 1.0 References: <8c9b9b7d-0868-46d4-963c-8b1906bd7a1b@eisentraut.org> <72f6995a-75a6-4579-9e93-45a80f6bd956@eisentraut.org> In-Reply-To: <72f6995a-75a6-4579-9e93-45a80f6bd956@eisentraut.org> From: David Christensen Date: Thu, 4 Apr 2024 11:12:18 -0500 Message-ID: Subject: Re: Adding comments to help understand psql hidden queries To: Peter Eisentraut Cc: Greg Sabino Mullane , Jim Jones , pgsql-hackers Content-Type: multipart/mixed; boundary="0000000000001f4b870615479b2f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001f4b870615479b2f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 4, 2024 at 9:32=E2=80=AFAM Peter Eisentraut wrote: > > On 03.04.24 19:16, David Christensen wrote: > > I removed _() in the output of the query/stars since there'd be no > > sensible existing translations for the constructed string, which > > included the query string itself. If we need it for the "QUERY" > > string, this could be added fairly easily, but the existing piece > > would have been nonsensical and never used in practice. > > "QUERY" is currently translated. Your patch loses that. I see; enclosed is v5 which fixes this. The effective diff from the last one is: - char *label =3D "QUERY"; + char *label =3D _("QUERY"); and - label =3D psprintf("QUERY (\\%s)", curcmd); + label =3D psprintf(_("QUERY (\\%s)"), curcmd); Best, David --0000000000001f4b870615479b2f Content-Type: application/octet-stream; name="v5-0001-Improve-SQL-comments-on-echo-hidden-output.patch" Content-Disposition: attachment; filename="v5-0001-Improve-SQL-comments-on-echo-hidden-output.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lulfouad0 RnJvbSBmMzZmNWVkZDUwYWMwZmI2NDk2OGI4YWQ3ODRkYTA5YWNjNzFjNDc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBDaHJpc3RlbnNlbiA8ZGF2aWQuY2hyaXN0ZW5zZW5A Y3J1bmNoeWRhdGEuY29tPgpEYXRlOiBUaHUsIDQgQXByIDIwMjQgMTI6MDk6MzkgLTA0MDAKU3Vi amVjdDogW1BBVENIIHY1XSBJbXByb3ZlIFNRTCBjb21tZW50cyBvbiAtLWVjaG8taGlkZGVuIG91 dHB1dAoKVGhlIHVzZSBvZiB0aGUgLS1lY2hvLWhpZGRlbiBmbGFnIGluIHBzcWwgaXMgdXNlZCB0 byBzaG93IHBlb3BsZSB0aGUgd2F5IHBzcWwKcGVyZm9ybXMgaXRzIG1hZ2ljIGZvciBpdHMgYmFj a3NsYXNoIGNvbW1hbmRzLiBOb25lIG9mIHRoZW0gaGFzIG1vcmUgbWFnaWMgdGhhbgoiXGQgcmVs YXRpb24iLCBidXQgaXQgc3VmZmVycyBmcm9tIG5lZWRpbmcgYSBsb3Qgb2Ygc2VwYXJhdGUgcXVl cmllcyB0byBnYXRoZXIKYWxsIG9mIHRoZSBpbmZvcm1hdGlvbiBpdCBuZWVkcy4gVW5mb3J0dW5h dGVseSwgdGhvc2UgcXVlcmllcyBjYW4gZ2V0Cm92ZXJ3aGVsbWluZyBhbmQgaGFyZCB0byBmaWd1 cmUgb3V0IHdoaWNoIG9uZSBkb2VzIHdoYXQsIGVzcGVjaWFsbHkgZm9yIHRob3NlCm5vdCBhbHJl YWR5IHZlcnkgZmFtaWxpYXIgd2l0aCB0aGUgc3lzdGVtIGNhdGFsb2dzLiBBdHRhY2hlZCBpcyBh IHBhdGNoIHRvIGFkZCBhCnNtYWxsIFNRTCBjb21tZW50IHRvIHRoZSB0b3Agb2YgZWFjaCBTRUxF Q1QgcXVlcnkgaW5zaWRlCmRlc2NyaWJlT25lVGFibGVEZXRhaWwuIEFsbCBvdGhlciBmdW5jdGlv bnMgdXNlIGEgc2luZ2xlIHF1ZXJ5LCBhbmQgdGh1cyBuZWVkIG5vCmFkZGl0aW9uYWwgY29udGV4 dC4gQnV0ICJcZCBteXRhYmxlIiBoYXMgdGhlIHBvdGVudGlhbCB0byBydW4gb3ZlciBhIGRvemVu IFNRTApxdWVyaWVzIQoKRm9yIF9hbGxfIHF1ZXJ5IG91dHB1dCB0eXBlcyAobm90IGp1c3QgXGQp LCB3ZSBpbmNsdWRlIHRoZSBiYWNrc2xhc2ggY29tbWFuZAp0aGF0IHdhcyB1c2VkIHRvIGdlbmVy YXRlIHRoZSBnaXZlbiBxdWVyeS4KClRoZSBuZXcgZm9ybWF0IGxvb2tzIGxpa2UgdGhpczoKCi8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogUVVFUlkgKFxkKSAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLwovKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgY2hpbGQgdGFi bGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KU0VMRUNUIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsCnBn X2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQpGUk9NIHBnX2NhdGFs b2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCldIRVJFIGMub2lkID0gaS5p bmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnNzY5OTInCk9SREVSIEJZIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywKYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CgpUaGlzIGluY2x1ZGVzIHNvbWUgbGV2ZWwgb2YgcmVmYWN0b3JpbmcgdGhlIG91dHB1dCByb3V0 aW5lcyBpbiBQU1FMZXhlYygpLAphZGRpbmcgT3V0cHV0Q29tbWVudCgpIGFuZCBPdXRwdXRDb21t ZW50U3RhcnMoKSB0byBzaGFyZSBhIHNpbmdsZSBvdXRwdXQKd2lkdGguICAoVGhpcyBjb3VsZCBw cmVzdW1hYmx5IGJlIGhvaXN0ZWQgaW50byBzb21ldGhpbmcgYmVzaWRlcyBgcHNxbGAsIGJ1dApz aW5jZSB0aGlzIGlzIHRoZSBvbmx5IGNvbnN1bWVyIGhlcmUsIGxlYXZpbmcgdGhpcyBmb3Igbm93 LikKClNpbmNlIHdlIGFyZSBsaW5pbmcgdXAgYWxsIG9mIHRoZSBjb21tZW50cyB0aGF0IGFyZSBi ZWluZyBvdXRwdXQsIHdlIGV4cGFuZCB0aGUKY29tbWVudCB3aWR0aCB0byA4MCBjaGFycy4KCkNv LWF1dGhvcmVkLWJ5OiAgICAgR3JlZyBTYWJpbm8gTXVsbGFuZSA8aHRhbWZpZHNAZ21haWwuY29t PgpDby1hdXRob3JlZC1ieTogICAgIERhdmlkIENocmlzdGVuc2VuIDxkYXZpZC5jaHJpc3RlbnNl bkBjcnVuY2h5ZGF0YS5jb20+Ci0tLQogc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyAgfCAgIDUgKysK IHNyYy9iaW4vcHNxbC9jb21tb24uYyAgIHwgMTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0KIHNyYy9iaW4vcHNxbC9jb21tb24uaCAgIHwgICA1ICsrCiBzcmMvYmlu L3BzcWwvZGVzY3JpYmUuYyB8ICA4MSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogNCBmaWxl cyBjaGFuZ2VkLCAxNzkgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXgg OWIwZmEwNDFmNy4uNGNmYjkxZTEzNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQu YworKysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC01Niw2ICs1Niw4IEBAIHR5cGVkZWYg ZW51bSBFZGl0YWJsZU9iamVjdFR5cGUKIAlFZGl0YWJsZVZpZXcsCiB9IEVkaXRhYmxlT2JqZWN0 VHlwZTsKIAorY2hhciAqY3VyY21kID0gTlVMTDsKKwogLyogbG9jYWwgZnVuY3Rpb24gZGVjbGFy YXRpb25zICovCiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZChjb25zdCBjaGFy ICpjbWQsCiAJCQkJCQkJCQlQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsCkBAIC0zMDcsNiArMzA5 LDcgQEAgZXhlY19jb21tYW5kKGNvbnN0IGNoYXIgKmNtZCwKIAkJCQkJICAgY21kKTsKIAl9CiAK KwljdXJjbWQgPSAoY2hhciAqKWNtZDsKIAlpZiAoc3RyY21wKGNtZCwgImEiKSA9PSAwKQogCQlz dGF0dXMgPSBleGVjX2NvbW1hbmRfYShzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKIAllbHNl IGlmIChzdHJjbXAoY21kLCAiYmluZCIpID09IDApCkBAIC00MjMsNiArNDI2LDggQEAgZXhlY19j b21tYW5kKGNvbnN0IGNoYXIgKmNtZCwKIAllbHNlCiAJCXN0YXR1cyA9IFBTUUxfQ01EX1VOS05P V047CiAKKwljdXJjbWQgPSBOVUxMOworCiAJLyoKIAkgKiBBbGwgdGhlIGNvbW1hbmRzIHRoYXQg cmV0dXJuIFBTUUxfQ01EX1NFTkQgd2FudCB0byBleGVjdXRlIHByZXZpb3VzX2J1ZgogCSAqIGlm IHF1ZXJ5X2J1ZiBpcyBlbXB0eS4gIEZvciBjb252ZW5pZW5jZSB3ZSBpbXBsZW1lbnQgdGhhdCBo ZXJlLCBub3QgaW4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tb24uYyBiL3NyYy9iaW4v cHNxbC9jb21tb24uYwppbmRleCA3NmUwMWIwMmEzLi41ZmQ3NGViYzc4IDEwMDY0NAotLS0gYS9z cmMvYmluL3BzcWwvY29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jCkBAIC00Miw2 ICs0Miw3IEBAIHN0YXRpYyBpbnQJRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hh ciAqcXVlcnksCiBzdGF0aWMgYm9vbCBjb21tYW5kX25vX2JlZ2luKGNvbnN0IGNoYXIgKnF1ZXJ5 KTsKIHN0YXRpYyBib29sIGlzX3NlbGVjdF9jb21tYW5kKGNvbnN0IGNoYXIgKnF1ZXJ5KTsKIAor ZXh0ZXJuIGNoYXIgKmN1cmNtZDsKIAogLyoKICAqIG9wZW5RdWVyeU91dHB1dEZpbGUgLS0tIGF0 dGVtcHQgdG8gb3BlbiBhIHF1ZXJ5IG91dHB1dCBmaWxlCkBAIC01ODEsNiArNTgyLDggQEAgUEdy ZXN1bHQgKgogUFNRTGV4ZWMoY29uc3QgY2hhciAqcXVlcnkpCiB7CiAJUEdyZXN1bHQgICAqcmVz OworCWNoYXIgKmxhYmVsID0gXygiUVVFUlkiKTsKKwogCiAJaWYgKCFwc2V0LmRiKQogCXsKQEAg LTU4OCwyMSArNTkxLDMyIEBAIFBTUUxleGVjKGNvbnN0IGNoYXIgKnF1ZXJ5KQogCQlyZXR1cm4g TlVMTDsKIAl9CiAKKwlpZiAoY3VyY21kKQorCQlsYWJlbCA9IHBzcHJpbnRmKF8oIlFVRVJZIChc XCVzKSIpLCBjdXJjbWQpOworCiAJaWYgKHBzZXQuZWNob19oaWRkZW4gIT0gUFNRTF9FQ0hPX0hJ RERFTl9PRkYpCiAJewotCQlwcmludGYoXygiLyoqKioqKioqIFFVRVJZICoqKioqKioqKi9cbiIK LQkJCQkgIiVzXG4iCi0JCQkJICIvKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4iKSwgcXVl cnkpOworCQlQUUV4cEJ1ZmZlckRhdGEgYnVmOworCQlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CisK KwkJT3V0cHV0Q29tbWVudFN0YXJzKCZidWYsIGxhYmVsKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwgcXVlcnkpOworCQlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIoJmJ1ZiwgJ1xuJyk7CisJ CU91dHB1dENvbW1lbnRTdGFycygmYnVmLCBOVUxMKTsKKworCQlwcmludGYoIiVzIiwgYnVmLmRh dGEpOwogCQlmZmx1c2goc3Rkb3V0KTsKIAkJaWYgKHBzZXQubG9nZmlsZSkKIAkJewotCQkJZnBy aW50Zihwc2V0LmxvZ2ZpbGUsCi0JCQkJCV8oIi8qKioqKioqKiBRVUVSWSAqKioqKioqKiovXG4i Ci0JCQkJCSAgIiVzXG4iCi0JCQkJCSAgIi8qKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiIp LCBxdWVyeSk7CisJCQlmcHJpbnRmKHBzZXQubG9nZmlsZSwgIiVzIiwgYnVmLmRhdGEpOwogCQkJ ZmZsdXNoKHBzZXQubG9nZmlsZSk7CiAJCX0KIAorCQlwZnJlZShidWYuZGF0YSk7CisKKwkJaWYg KGN1cmNtZCkKKwkJCXBmcmVlKGxhYmVsKTsKKwogCQlpZiAocHNldC5lY2hvX2hpZGRlbiA9PSBQ U1FMX0VDSE9fSElEREVOX05PRVhFQykKIAkJCXJldHVybiBOVUxMOwogCX0KQEAgLTI0MzQsMyAr MjQ0OCwxMDAgQEAgcmVjb2duaXplZF9jb25uZWN0aW9uX3N0cmluZyhjb25zdCBjaGFyICpjb25u c3RyKQogewogCXJldHVybiB1cmlfcHJlZml4X2xlbmd0aChjb25uc3RyKSAhPSAwIHx8IHN0cmNo cihjb25uc3RyLCAnPScpICE9IE5VTEw7CiB9CisKKy8qCisgKiBPdXRwdXRDb21tZW50KCkgb3V0 cHV0cyB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgYnVmZmVyIGFzIGEKKyAqIGZpeGVkIHdpZHRoIGNv bW1lbnQsIHdyYXBwaW5nIHRoZSB0ZXh0IGdpdmVuIHRvIHRoZSBwcm9wZXIgc2l6ZSBhbmQKKyAq IGJyZWFraW5nIGF0IGEgc3BhY2UuICBXZSBhc3N1bWUgdGhlcmUgYXJlIG5vIGlubmVyIGNvbW1l bnRzIHRoYXQgbmVlZCB0byBiZQorICogZXNjYXBlZC4KKyAqLwordm9pZAorT3V0cHV0Q29tbWVu dChQUUV4cEJ1ZmZlckRhdGEgKmJ1ZiwgY29uc3QgY2hhciAqc3RyaW5nKQoreworICAgIGludCBs ZW4gPSBzdHJsZW4oc3RyaW5nKTsKKwlpbnQgbGluZVN0YXJ0ID0gMDsKKyAgICBpbnQgbGluZUVu ZCA9IE1BWF9DT01NRU5UX1dJRFRIIC0gNjsgLy8gQWNjb3VudGluZyBmb3IgIiAqICIgYXQgdGhl IHN0YXJ0IGFuZCAiICoiIGF0IHRoZSBlbmQgb2YgZWFjaCBsaW5lCisgICAgc3RhdGljIGNoYXIg c3BhY2VzW01BWF9DT01NRU5UX1dJRFRIXSA9IHswfTsKKworICAgIGlmIChzcGFjZXNbMF0gIT0g JyAnKQorICAgICAgICBtZW1zZXQoc3BhY2VzLCAnICcsIE1BWF9DT01NRU5UX1dJRFRIKTsKKwor ICAgIHdoaWxlIChsaW5lU3RhcnQgPCBsZW4pIHsKKyAgICAgICAgLy8gQWRqdXN0IGxpbmVFbmQg aWYgaXQncyBiZXlvbmQgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nCisgICAgICAgIGlmIChsaW5l RW5kID49IGxlbikgeworICAgICAgICAgICAgbGluZUVuZCA9IGxlbiAtIDE7CisgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAvLyBFbnN1cmUgd2UgYnJlYWsgdGhlIGxpbmUgYXQgYSBzcGFj ZSAoaWYgcG9zc2libGUpIHRvIGF2b2lkIGJyZWFraW5nIHdvcmRzCisgICAgICAgICAgICB3aGls ZSAobGluZUVuZCA+IGxpbmVTdGFydCAmJiBzdHJpbmdbbGluZUVuZF0gIT0gJyAnKSB7CisgICAg ICAgICAgICAgICAgbGluZUVuZC0tOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxp bmVFbmQgPT0gbGluZVN0YXJ0KSB7CisgICAgICAgICAgICAgICAgLy8gSWYgd2UgY291bGRuJ3Qg ZmluZCBhIHNwYWNlLCBmb3JjZSBhIGJyZWFrIGF0IHRoZSBtYXhpbXVtIGxpbmUgd2lkdGgKKyAg ICAgICAgICAgICAgICBsaW5lRW5kID0gbGluZVN0YXJ0ICsgTUFYX0NPTU1FTlRfV0lEVEggLSA2 OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKwkJLy8gb3V0cHV0IG91ciBkYXRhIGZvciB0 aGUgd2lkdGggd2UgaGF2ZSwgaW5jbHVkaW5nIHRoZSBwaWVjZSBvZiB0aGUgY29tbWVudAorCQlw cmludGZQUUV4cEJ1ZmZlcihidWYsCisJCQkJCQkgICIvKiAlLipzJS4qcyAqL1xuIiwKKwkJCQkJ CSAgbGluZUVuZCAtIGxpbmVTdGFydCArIDEsIC8qIG51bWJlciBvZiBjaGFycyB0byBvdXRwdXQg Ki8KKwkJCQkJCSAgc3RyaW5nICsgbGluZVN0YXJ0LCAgLyogb2Zmc2V0IG9mIGNoYXJzIHRvIGNv cHkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIHBhZGRpbmcgKi8K KyAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX0NPTU1FTlRfV0lEVEggLSA2IC0gKGxpbmVF bmQgLSBsaW5lU3RhcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZXMKKwkJCSk7 CisKKyAgICAgICAgLy8gTW92ZSB0byB0aGUgbmV4dCBsaW5lCisgICAgICAgIGxpbmVTdGFydCA9 IGxpbmVFbmQgKyAxOworICAgICAgICBsaW5lRW5kID0gbGluZVN0YXJ0ICsgTUFYX0NPTU1FTlRf V0lEVEggLSA2OworICAgIH0KK30KKworCisvKgorICogT3V0cHV0Q29tbWVudFN0YXJzKCkgb3V0 cHV0cyB0aGUgZ2l2ZW4gc2luZ2xlLWxpbmUgc3RyaW5nIHdyYXBwZWQgaW4gc3RhcnMKKyAqIHRv IHRoZSBnaXZlbiB3aWR0aC4KKyAqLwordm9pZAorT3V0cHV0Q29tbWVudFN0YXJzKFBRRXhwQnVm ZmVyRGF0YSAqYnVmLCBjb25zdCBjaGFyICpzdHJpbmcpCit7CisgICAgaW50IGxlbiA9IHN0cmlu ZyA/IHN0cmxlbihzdHJpbmcpIDogMDsKKwljaGFyIHN0YXJzW01BWF9DT01NRU5UX1dJRFRIICsg M107CisJaW50IHN0YXJ0T3V0cHV0T2Zmc2V0OworCisJLyogVGhpcyBzaG91bGRuJ3QgaGFwcGVu IGJhc2VkIG9uIGN1cnJlbnQgY2FsbGVycywgYnV0IHdlJ2xsIHRydW5jYXRlIHRvIGEKKwkgKiBz YWZlIHNpemUgaWYgbmVlZCBiZS4gKi8KKworCWlmIChsZW4gPiBNQVhfQ09NTUVOVF9XSURUSCkg Lyogc3BhY2UgZm9yIG9wZW5pbmcgY29tbWVudCwgY2xvc2luZyBjb21tZW50LCBhbmQgc3BhY2Vz ICovCisJCWxlbiA9IE1BWF9DT01NRU5UX1dJRFRIOworCisJLyogSWYgd2UgaGF2ZSBhIHplcm8t d2lkdGggc3RyaW5nIHRoZW4gdGhpcyBpcyBhIHNwZWNpYWwtY2FzZSB3aGVyZSB3ZQorCSAqIGp1 c3Qgd2FudCBhIGxpbmUgb2Ygc3RhcnMuIFRvIG1pbmltaXplIGNvZGUgZGlzcnVwdGlvbiBpbiB0 aGlzIGNhc2UsCisJICogd2UnbGwganVzdCBzZXQgc3RhcnRPdXRwdXRPZmZzZXQgdG8gYSB2YWx1 ZSBsYXJnZXIgdGhhbgorCSAqIE1BWF9DT01NRU5UX1dJRFRILiAqLworCisJaWYgKGxlbiA+IDAp CisJCXN0YXJ0T3V0cHV0T2Zmc2V0ID0gKCgoTUFYX0NPTU1FTlRfV0lEVEggLSBsZW4gLSAyKSAv IDIpKTsgLyogZXh0cmEgZm9yIHNwYWNlICovCisJZWxzZQorCQlzdGFydE91dHB1dE9mZnNldCA9 IE1BWF9DT01NRU5UX1dJRFRIICogMjsKKworCXN0YXJzWzBdID0gJy8nOworCXN0YXJzW01BWF9D T01NRU5UX1dJRFRIXSA9ICcvJzsKKwlzdGFyc1tNQVhfQ09NTUVOVF9XSURUSCsxXSA9ICdcbic7 CisJc3RhcnNbTUFYX0NPTU1FTlRfV0lEVEgrMl0gPSAnXDAnOworCisJZm9yIChpbnQgaSA9IDE7 IGkgPCBNQVhfQ09NTUVOVF9XSURUSDsgaSsrKQorCXsKKwkJaWYgKGkgPj0gc3RhcnRPdXRwdXRP ZmZzZXQgJiYgaSA8PSBzdGFydE91dHB1dE9mZnNldCArIGxlbiArIDEpCisJCXsKKwkJCWlmIChp ID09IHN0YXJ0T3V0cHV0T2Zmc2V0IHx8IGkgPT0gc3RhcnRPdXRwdXRPZmZzZXQgKyBsZW4gKyAx KQorCQkJCXN0YXJzW2ldID0gJyAnOworCQkJZWxzZQorCQkJCXN0YXJzW2ldID0gc3RyaW5nW2kg LSBzdGFydE91dHB1dE9mZnNldCAtIDFdOworCQl9CisJCWVsc2UKKwkJCXN0YXJzW2ldID0gJyon OworCX0KKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1Ziwgc3RhcnMpOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL2NvbW1vbi5oIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5oCmluZGV4IDZl ZmUxMjI3NGYuLmMxNmNiYzZlNmYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tb24uaAor KysgYi9zcmMvYmluL3BzcWwvY29tbW9uLmgKQEAgLTE1LDYgKzE1LDggQEAKICNpbmNsdWRlICJm ZV91dGlscy9wc3Fsc2Nhbi5oIgogI2luY2x1ZGUgImxpYnBxLWZlLmgiCiAKKyNkZWZpbmUgTUFY X0NPTU1FTlRfV0lEVEggODAKKwogZXh0ZXJuIGJvb2wgb3BlblF1ZXJ5T3V0cHV0RmlsZShjb25z dCBjaGFyICpmbmFtZSwgRklMRSAqKmZvdXQsIGJvb2wgKmlzX3BpcGUpOwogZXh0ZXJuIGJvb2wg c2V0UUZvdXQoY29uc3QgY2hhciAqZm5hbWUpOwogCkBAIC00NCw0ICs0Niw3IEBAIGV4dGVybiB2 b2lkIGV4cGFuZF90aWxkZShjaGFyICoqZmlsZW5hbWUpOwogCiBleHRlcm4gYm9vbCByZWNvZ25p emVkX2Nvbm5lY3Rpb25fc3RyaW5nKGNvbnN0IGNoYXIgKmNvbm5zdHIpOwogCitleHRlcm4gdm9p ZCBPdXRwdXRDb21tZW50KFBRRXhwQnVmZmVyRGF0YSAqYnVmLCBjb25zdCBjaGFyICpzdHJpbmcp OworZXh0ZXJuIHZvaWQgT3V0cHV0Q29tbWVudFN0YXJzKFBRRXhwQnVmZmVyRGF0YSAqYnVmLCBj b25zdCBjaGFyICpzdHJpbmcpOworCiAjZW5kaWYJCQkJCQkJLyogQ09NTU9OX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK aW5kZXggNjhiMmVhODg3Mi4uNTNiOGZkZDQ2OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTE1ODYsOSArMTU4Niwx MCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCWlu aXRQUUV4cEJ1ZmZlcigmdG1wYnVmKTsKIAogCS8qIEdldCBnZW5lcmFsIHRhYmxlIGluZm8gKi8K KwlPdXRwdXRDb21tZW50KCZidWYsIF8oIkdldCBnZW5lcmFsIHRhYmxlIGluZm9ybWF0aW9uIikp OwogCWlmIChwc2V0LnN2ZXJzaW9uID49IDEyMDAwMCkKIAl7Ci0JCXByaW50ZlBRRXhwQnVmZmVy KCZidWYsCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkgICJTRUxFQ1QgYy5yZWxj aGVja3MsIGMucmVsa2luZCwgYy5yZWxoYXNpbmRleCwgYy5yZWxoYXNydWxlcywgIgogCQkJCQkJ ICAiYy5yZWxoYXN0cmlnZ2VycywgYy5yZWxyb3dzZWN1cml0eSwgYy5yZWxmb3JjZXJvd3NlY3Vy aXR5LCAiCiAJCQkJCQkgICJmYWxzZSBBUyByZWxoYXNvaWRzLCBjLnJlbGlzcGFydGl0aW9uLCAl cywgYy5yZWx0YWJsZXNwYWNlLCAiCkBAIC0xNjA2LDcgKzE2MDcsNyBAQCBkZXNjcmliZU9uZVRh YmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCX0KIAllbHNlIGlmIChwc2V0LnN2 ZXJzaW9uID49IDEwMDAwMCkKIAl7Ci0JCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkgICJTRUxFQ1QgYy5yZWxjaGVja3MsIGMucmVsa2lu ZCwgYy5yZWxoYXNpbmRleCwgYy5yZWxoYXNydWxlcywgIgogCQkJCQkJICAiYy5yZWxoYXN0cmln Z2VycywgYy5yZWxyb3dzZWN1cml0eSwgYy5yZWxmb3JjZXJvd3NlY3VyaXR5LCAiCiAJCQkJCQkg ICJjLnJlbGhhc29pZHMsIGMucmVsaXNwYXJ0aXRpb24sICVzLCBjLnJlbHRhYmxlc3BhY2UsICIK QEAgLTE2MjMsNyArMTYyNCw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIg KnNjaGVtYW5hbWUsCiAJfQogCWVsc2UgaWYgKHBzZXQuc3ZlcnNpb24gPj0gOTA1MDApCiAJewot CQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJ CQkJICAiU0VMRUNUIGMucmVsY2hlY2tzLCBjLnJlbGtpbmQsIGMucmVsaGFzaW5kZXgsIGMucmVs aGFzcnVsZXMsICIKIAkJCQkJCSAgImMucmVsaGFzdHJpZ2dlcnMsIGMucmVscm93c2VjdXJpdHks IGMucmVsZm9yY2Vyb3dzZWN1cml0eSwgIgogCQkJCQkJICAiYy5yZWxoYXNvaWRzLCBmYWxzZSBh cyByZWxpc3BhcnRpdGlvbiwgJXMsIGMucmVsdGFibGVzcGFjZSwgIgpAQCAtMTY0MCw3ICsxNjQx LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAl9 CiAJZWxzZSBpZiAocHNldC5zdmVyc2lvbiA+PSA5MDQwMCkKIAl7Ci0JCXByaW50ZlBRRXhwQnVm ZmVyKCZidWYsCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkgICJTRUxFQ1QgYy5y ZWxjaGVja3MsIGMucmVsa2luZCwgYy5yZWxoYXNpbmRleCwgYy5yZWxoYXNydWxlcywgIgogCQkJ CQkJICAiYy5yZWxoYXN0cmlnZ2VycywgZmFsc2UsIGZhbHNlLCBjLnJlbGhhc29pZHMsICIKIAkJ CQkJCSAgImZhbHNlIGFzIHJlbGlzcGFydGl0aW9uLCAlcywgYy5yZWx0YWJsZXNwYWNlLCAiCkBA IC0xNjU3LDcgKzE2NTgsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpz Y2hlbWFuYW1lLAogCX0KIAllbHNlCiAJewotCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQlh cHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiU0VMRUNUIGMucmVsY2hlY2tzLCBjLnJl bGtpbmQsIGMucmVsaGFzaW5kZXgsIGMucmVsaGFzcnVsZXMsICIKIAkJCQkJCSAgImMucmVsaGFz dHJpZ2dlcnMsIGZhbHNlLCBmYWxzZSwgYy5yZWxoYXNvaWRzLCAiCiAJCQkJCQkgICJmYWxzZSBh cyByZWxpc3BhcnRpdGlvbiwgJXMsIGMucmVsdGFibGVzcGFjZSwgIgpAQCAtMTcxOCw5ICsxNzE5 LDEwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJ CXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CiAJCWNoYXIJICAgKmZvb3RlcnNbMl0g PSB7TlVMTCwgTlVMTH07CiAKKwkJT3V0cHV0Q29tbWVudCgmYnVmLCBfKCJHZXQgZ2VuZXJhbCBz ZXF1ZW5jZSBpbmZvcm1hdGlvbiAqIikpOwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxMDAwMDAp CiAJCXsKLQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigm YnVmLAogCQkJCQkJCSAgIlNFTEVDVCBwZ19jYXRhbG9nLmZvcm1hdF90eXBlKHNlcXR5cGlkLCBO VUxMKSBBUyBcIiVzXCIsXG4iCiAJCQkJCQkJICAiICAgICAgIHNlcXN0YXJ0IEFTIFwiJXNcIixc biIKIAkJCQkJCQkgICIgICAgICAgc2VxbWluIEFTIFwiJXNcIixcbiIKQEAgLTE3NDQsNyArMTc0 Niw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJ CX0KIAkJZWxzZQogCQl7Ci0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1QgJ2JpZ2ludCcgQVMgXCIlc1wiLFxuIgog CQkJCQkJCSAgIiAgICAgICBzdGFydF92YWx1ZSBBUyBcIiVzXCIsXG4iCiAJCQkJCQkJICAiICAg ICAgIG1pbl92YWx1ZSBBUyBcIiVzXCIsXG4iCkBAIC0xNzcxLDcgKzE3NzMsOCBAQCBkZXNjcmli ZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJZ290byBlcnJvcl9y ZXR1cm47CiAKIAkJLyogR2V0IHRoZSBjb2x1bW4gdGhhdCBvd25zIHRoaXMgc2VxdWVuY2UgKi8K LQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBwZ19jYXRhbG9nLnF1b3RlX2lkZW50 KG5zcG5hbWUpIHx8ICcuJyB8fCIKKwkJT3V0cHV0Q29tbWVudCgmYnVmLCBfKCJHZXQgdGhlIGNv bHVtbiB0aGF0IG93bnMgdGhpcyBzZXF1ZW5jZSIpKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1 ZiwgIlNFTEVDVCBwZ19jYXRhbG9nLnF1b3RlX2lkZW50KG5zcG5hbWUpIHx8ICcuJyB8fCIKIAkJ CQkJCSAgIlxuICAgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChyZWxuYW1lKSB8fCAnLicgfHwiCiAJ CQkJCQkgICJcbiAgIHBnX2NhdGFsb2cucXVvdGVfaWRlbnQoYXR0bmFtZSksIgogCQkJCQkJICAi XG4gICBkLmRlcHR5cGUiCkBAIC0xODUwLDcgKzE4NTMsOCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0 YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCSAqIGR1cGxpY2F0aXZlIHRlc3QgbG9naWMg YmVsb3cuCiAJICovCiAJY29scyA9IDA7Ci0JcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVD VCBhLmF0dG5hbWUiKTsKKwlPdXRwdXRDb21tZW50KCZidWYsIF8oIkdldCBpbmZvcm1hdGlvbiBh Ym91dCBlYWNoIGNvbHVtblxuIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJTRUxFQ1Qg YS5hdHRuYW1lIik7CiAJYXR0bmFtZV9jb2wgPSBjb2xzKys7CiAJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwgIixcbiAgcGdfY2F0YWxvZy5mb3JtYXRfdHlwZShhLmF0dHR5cGlkLCBhLmF0dHR5 cG1vZCkiKTsKIAlhdHR0eXBlX2NvbCA9IGNvbHMrKzsKQEAgLTIxNTAsNyArMjE1NCw4IEBAIGRl c2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCS8qIEZvb3Rl ciBpbmZvcm1hdGlvbiBmb3IgYSBwYXJ0aXRpb24gY2hpbGQgdGFibGUgKi8KIAkJUEdyZXN1bHQg ICAqcmVzdWx0OwogCi0JCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCU91dHB1dENvbW1lbnQo JmJ1ZiwgXygiR2V0IHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhpcyB0YWJsZSIpKTsKKwkJ YXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIlNFTEVDVCBpbmhwYXJlbnQ6OnBnX2Nh dGFsb2cucmVnY2xhc3MsXG4iCiAJCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5y ZWxwYXJ0Ym91bmQsIGMub2lkKSxcbiAgIik7CiAKQEAgLTIyMDUsNyArMjIxMCw4IEBAIGRlc2Ny aWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCS8qIEZvb3RlciBp bmZvcm1hdGlvbiBmb3IgYSBwYXJ0aXRpb25lZCB0YWJsZSAocGFydGl0aW9uaW5nIHBhcmVudCkg Ki8KIAkJUEdyZXN1bHQgICAqcmVzdWx0OwogCi0JCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJ CU91dHB1dENvbW1lbnQoJmJ1ZiwgXygiR2V0IHRoZSBwYXJ0aXRpb24ga2V5IGZvciB0aGlzIHRh YmxlIikpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiU0VMRUNUIHBnX2Nh dGFsb2cucGdfZ2V0X3BhcnRrZXlkZWYoJyVzJzo6cGdfY2F0YWxvZy5vaWQpOyIsCiAJCQkJCQkg IG9pZCk7CiAJCXJlc3VsdCA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKQEAgLTIyMjcsNyArMjIzMyw4 IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCS8q IEZvciBhIFRPQVNUIHRhYmxlLCBwcmludCBuYW1lIG9mIG93bmluZyB0YWJsZSAqLwogCQlQR3Jl c3VsdCAgICpyZXN1bHQ7CiAKLQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJT3V0cHV0Q29t bWVudCgmYnVmLCBfKCJGaW5kIHdoaWNoIHRhYmxlIG93bnMgdGhpcyBUT0FTVCB0YWJsZSIpKTsK KwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUsIGMu cmVsbmFtZVxuIgogCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMiCiAJCQkJCQkg ICIgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIgpAQCAtMjI1NSw3ICsyMjYyLDggQEAg ZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJLyogRm9v dGVyIGluZm9ybWF0aW9uIGFib3V0IGFuIGluZGV4ICovCiAJCVBHcmVzdWx0ICAgKnJlc3VsdDsK IAotCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQlPdXRwdXRDb21tZW50KCZidWYsIF8oIkdl dCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGluZGV4IikpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcigm YnVmLAogCQkJCQkJICAiU0VMRUNUIGkuaW5kaXN1bmlxdWUsIGkuaW5kaXNwcmltYXJ5LCBpLmlu ZGlzY2x1c3RlcmVkLCAiCiAJCQkJCQkgICJpLmluZGlzdmFsaWQsXG4iCiAJCQkJCQkgICIgIChO T1QgaS5pbmRpbW1lZGlhdGUpIEFORCAiCkBAIC0yMzcyLDcgKzIzODAsOCBAQCBkZXNjcmliZU9u ZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkvKiBwcmludCBpbmRleGVz ICovCiAJCWlmICh0YWJsZWluZm8uaGFzaW5kZXgpCiAJCXsKLQkJCXByaW50ZlBRRXhwQnVmZmVy KCZidWYsCisJCQlPdXRwdXRDb21tZW50KCZidWYsIF8oIkdldCBpbmZvcm1hdGlvbiBhYm91dCBl YWNoIGluZGV4IikpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJTRUxF Q1QgYzIucmVsbmFtZSwgaS5pbmRpc3ByaW1hcnksIGkuaW5kaXN1bmlxdWUsICIKIAkJCQkJCQkg ICJpLmluZGlzY2x1c3RlcmVkLCBpLmluZGlzdmFsaWQsICIKIAkJCQkJCQkgICJwZ19jYXRhbG9n LnBnX2dldF9pbmRleGRlZihpLmluZGV4cmVsaWQsIDAsIHRydWUpLFxuICAiCkBAIC0yNTEwLDYg KzI1MTksOCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1l LAogCQlpZiAodGFibGVpbmZvLmhhc3RyaWdnZXJzIHx8CiAJCQl0YWJsZWluZm8ucmVsa2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQogCQl7CisJCQlPdXRwdXRDb21tZW50KCZidWYs IF8oIkdldCBpbmZvcm1hdGlvbiBhYm91dCBmb3JlaWduIGtleSBjb25zdHJhaW50cyIpKTsKKwog CQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTIwMDAwICYmCiAJCQkJKHRhYmxlaW5mby5pc3BhcnRp dGlvbiB8fCB0YWJsZWluZm8ucmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSkK IAkJCXsKQEAgLTI1MTcsNyArMjUyOCw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0 IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJICogUHV0IHRoZSBjb25zdHJhaW50cyBkZWZpbmVkIGlu IHRoaXMgdGFibGUgZmlyc3QsIGZvbGxvd2VkCiAJCQkJICogYnkgdGhlIGNvbnN0cmFpbnRzIGRl ZmluZWQgaW4gYW5jZXN0b3IgcGFydGl0aW9uZWQgdGFibGVzLgogCQkJCSAqLwotCQkJCXByaW50 ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJ ICAiU0VMRUNUIGNvbnJlbGlkID0gJyVzJzo6cGdfY2F0YWxvZy5yZWdjbGFzcyBBUyBzYW1ldGFi bGUsXG4iCiAJCQkJCQkJCSAgIiAgICAgICBjb25uYW1lLFxuIgogCQkJCQkJCQkgICIgICAgICAg cGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRlZihvaWQsIHRydWUpIEFTIGNvbmRlZixcbiIK QEAgLTI1MzAsNyArMjU0MSw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIg KnNjaGVtYW5hbWUsCiAJCQl9CiAJCQllbHNlCiAJCQl7Ci0JCQkJcHJpbnRmUFFFeHBCdWZmZXIo JmJ1ZiwKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCQkgICJTRUxFQ1QgdHJ1 ZSBhcyBzYW1ldGFibGUsIGNvbm5hbWUsXG4iCiAJCQkJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19n ZXRfY29uc3RyYWludGRlZihyLm9pZCwgdHJ1ZSkgYXMgY29uZGVmLFxuIgogCQkJCQkJCQkgICIg IGNvbnJlbGlkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzIEFTIG9udGFibGVcbiIKQEAgLTI1ODQsOSAr MjU5NSwxMCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1l LAogCQlpZiAodGFibGVpbmZvLmhhc3RyaWdnZXJzIHx8CiAJCQl0YWJsZWluZm8ucmVsa2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQogCQl7CisJCQlPdXRwdXRDb21tZW50KCZidWYs IF8oIkdldCBpbmZvcm1hdGlvbiBhYm91dCBpbmNvbWluZyBmb3JlaWduIGtleSByZWZlcmVuY2Vz IikpOwogCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTIwMDAwKQogCQkJewotCQkJCXByaW50ZlBR RXhwQnVmZmVyKCZidWYsCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAi U0VMRUNUIGNvbm5hbWUsIGNvbnJlbGlkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzIEFTIG9udGFibGUs XG4iCiAJCQkJCQkJCSAgIiAgICAgICBwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKG9p ZCwgdHJ1ZSkgQVMgY29uZGVmXG4iCiAJCQkJCQkJCSAgIiAgRlJPTSBwZ19jYXRhbG9nLnBnX2Nv bnN0cmFpbnQgY1xuIgpAQCAtMjU5OCw3ICsyNjEwLDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFp bHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCX0KIAkJCWVsc2UKIAkJCXsKLQkJCQlwcmlu dGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJ CSAgIlNFTEVDVCBjb25uYW1lLCBjb25yZWxpZDo6cGdfY2F0YWxvZy5yZWdjbGFzcyBBUyBvbnRh YmxlLFxuIgogCQkJCQkJCQkgICIgICAgICAgcGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRl ZihvaWQsIHRydWUpIEFTIGNvbmRlZlxuIgogCQkJCQkJCQkgICIgIEZST00gcGdfY2F0YWxvZy5w Z19jb25zdHJhaW50XG4iCkBAIC0yNjM2LDcgKzI2NDgsOCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0 YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkvKiBwcmludCBhbnkgcm93LWxldmVsIHBv bGljaWVzICovCiAJCWlmIChwc2V0LnN2ZXJzaW9uID49IDkwNTAwKQogCQl7Ci0JCQlwcmludGZQ UUV4cEJ1ZmZlcigmYnVmLCAiU0VMRUNUIHBvbC5wb2xuYW1lLCIpOworCQkJT3V0cHV0Q29tbWVu dCgmYnVmLCBfKCJHZXQgaW5mb3JtYXRpb24gYWJvdXQgcm93LWxldmVsIHBvbGljaWVzIikpOwor CQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBwb2wucG9sbmFtZSwiKTsKIAkJCWlm IChwc2V0LnN2ZXJzaW9uID49IDEwMDAwMCkKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVm LAogCQkJCQkJCQkJICIgcG9sLnBvbHBlcm1pc3NpdmUsXG4iKTsKQEAgLTI3MTYsOSArMjcyOSwx MCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQl9 CiAKIAkJLyogcHJpbnQgYW55IGV4dGVuZGVkIHN0YXRpc3RpY3MgKi8KKwkJT3V0cHV0Q29tbWVu dCgmYnVmLCBfKCJHZXQgaW5mb3JtYXRpb24gYWJvdXQgZXh0ZW5kZWQgc3RhdGlzdGljcyIpKTsK IAkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTQwMDAwKQogCQl7Ci0JCQlwcmludGZQUUV4cEJ1ZmZl cigmYnVmLAorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1Qgb2lk LCAiCiAJCQkJCQkJICAic3R4cmVsaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsICIKIAkJCQkJCQkg ICJzdHhuYW1lc3BhY2U6OnBnX2NhdGFsb2cucmVnbmFtZXNwYWNlOjpwZ19jYXRhbG9nLnRleHQg QVMgbnNwLCAiCkBAIC0yODE1LDcgKzI4MjksNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhj b25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQl9CiAJCWVsc2UgaWYgKHBzZXQuc3ZlcnNpb24gPj0g MTAwMDAwKQogCQl7Ci0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1Qgb2lkLCAiCiAJCQkJCQkJICAic3R4cmVsaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsICIKIAkJCQkJCQkgICJzdHhuYW1lc3BhY2U6OnBnX2NhdGFs b2cucmVnbmFtZXNwYWNlIEFTIG5zcCwgIgpAQCAtMjg5NCw3ICsyOTA4LDggQEAgZGVzY3JpYmVP bmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJLyogcHJpbnQgcnVsZXMg Ki8KIAkJaWYgKHRhYmxlaW5mby5oYXNydWxlcyAmJiB0YWJsZWluZm8ucmVsa2luZCAhPSBSRUxL SU5EX01BVFZJRVcpCiAJCXsKLQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQlPdXRwdXRD b21tZW50KCZidWYsIF8oIkdldCBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIHJ1bGUgZm9yIHRoaXMg dGFibGUiKSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlNFTEVDVCBy LnJ1bGVuYW1lLCB0cmltKHRyYWlsaW5nICc7JyBmcm9tIHBnX2NhdGFsb2cucGdfZ2V0X3J1bGVk ZWYoci5vaWQsIHRydWUpKSwgIgogCQkJCQkJCSAgImV2X2VuYWJsZWRcbiIKIAkJCQkJCQkgICJG Uk9NIHBnX2NhdGFsb2cucGdfcmV3cml0ZSByXG4iCkBAIC0yOTc3LDkgKzI5OTIsMTAgQEAgZGVz Y3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJLyogcHJpbnQg YW55IHB1YmxpY2F0aW9ucyAqLwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxMDAwMDApCiAJCXsK KwkJCU91dHB1dENvbW1lbnQoJmJ1ZiwgXygiR2V0IGluZm9ybWF0aW9uIGFib3V0IGVhY2ggcHVi bGljYXRpb24gdXNpbmcgdGhpcyB0YWJsZSIpKTsKIAkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE1 MDAwMCkKIAkJCXsKLQkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCWFwcGVuZFBRRXhw QnVmZmVyKCZidWYsCiAJCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCiAJCQkJCQkJCSAgIiAg ICAgLCBOVUxMXG4iCiAJCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4iCkBAIC0zMDExLDcgKzMwMjcs NyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJ fQogCQkJZWxzZQogCQkJewotCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKIAkJCQkJCQkJ ICAiICAgICAsIE5VTExcbiIKIAkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKQEAgLTMwNjEsNyAr MzA3Nyw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUs CiAJCS8qIElmIHZlcmJvc2UsIHByaW50IE5PVCBOVUxMIGNvbnN0cmFpbnRzICovCiAJCWlmICh2 ZXJib3NlKQogCQl7Ci0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJT3V0cHV0Q29tbWVu dCgmYnVmLCBfKCJHZXQgaW5mb3JtYXRpb24gYWJvdXQgTk9UIE5VTEwgY29uc3RyYWludHMiKSk7 CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlNFTEVDVCBjby5jb25uYW1l LCBhdC5hdHRuYW1lLCBjby5jb25ub2luaGVyaXQsIGNvLmNvbmlzbG9jYWwsXG4iCiAJCQkJCQkJ ICAiY28uY29uaW5oY291bnQgPD4gMFxuIgogCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19j b25zdHJhaW50IGNvIEpPSU5cbiIKQEAgLTMxMzMsNyArMzE1MCw4IEBAIGRlc2NyaWJlT25lVGFi bGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCS8qIHByaW50IHJ1bGVzICovCiAJ CWlmICh0YWJsZWluZm8uaGFzcnVsZXMpCiAJCXsKLQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYs CisJCQlPdXRwdXRDb21tZW50KCZidWYsIF8oIkdldCBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIHJ1 bGUgZm9yIHRoaXMgdmlldyIpKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJ ICAiU0VMRUNUIHIucnVsZW5hbWUsIHRyaW0odHJhaWxpbmcgJzsnIGZyb20gcGdfY2F0YWxvZy5w Z19nZXRfcnVsZWRlZihyLm9pZCwgdHJ1ZSkpXG4iCiAJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9n LnBnX3Jld3JpdGUgclxuIgogCQkJCQkJCSAgIldIRVJFIHIuZXZfY2xhc3MgPSAnJXMnIEFORCBy LnJ1bGVuYW1lICE9ICdfUkVUVVJOJyBPUkRFUiBCWSAxOyIsCkBAIC0zMTcwLDcgKzMxODgsOCBA QCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQlQR3Jl c3VsdCAgICpyZXN1bHQ7CiAJCWludAkJCXR1cGxlczsKIAotCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLAorCQlPdXRwdXRDb21tZW50KCZidWYsIF8oIkdldCBpbmZvcm1hdGlvbiBhYm91dCBlYWNo IHRyaWdnZXIgb24gdGhpcyB0YWJsZSIpKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJ CQkJCSAgIlNFTEVDVCB0LnRnbmFtZSwgIgogCQkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRfdHJp Z2dlcmRlZih0Lm9pZCwgdHJ1ZSksICIKIAkJCQkJCSAgInQudGdlbmFibGVkLCB0LnRnaXNpbnRl cm5hbCxcbiIpOwpAQCAtMzM4OCw2ICszNDA3LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMo Y29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJfQogCiAJCS8qIHByaW50IHRhYmxlcyBpbmhlcml0 ZWQgZnJvbSAoZXhjbHVkZSBwYXJ0aXRpb25lZCBwYXJlbnRzKSAqLworCQlPdXRwdXRDb21tZW50 KCZidWYsIF8oIkZpbmQgdGFibGVzIGluaGVyaXRlZCBmcm9tIikpOwogCQlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLAogCQkJCQkJICAiU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzXG4i CiAJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhl cml0cyBpXG4iCkBAIC0zNDI1LDggKzM0NDUsOSBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhj b25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQl9CiAKIAkJLyogcHJpbnQgY2hpbGQgdGFibGVzICh3 aXRoIGFkZGl0aW9uYWwgaW5mbyBpZiBwYXJ0aXRpb25zKSAqLworCQlPdXRwdXRDb21tZW50KCZi dWYsIF8oIkdldCBpbmZvcm1hdGlvbiBhYm91dCBjaGlsZCB0YWJsZXMiKSk7CiAJCWlmIChwc2V0 LnN2ZXJzaW9uID49IDE0MDAwMCkKLQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQlhcHBl bmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlNFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzcywgYy5yZWxraW5kLCIKIAkJCQkJCQkgICIgaW5oZGV0YWNocGVuZGluZywiCiAJCQkJ CQkJICAiIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKVxuIgpA QCAtMzQzNiw3ICszNDU3LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAq c2NoZW1hbmFtZSwKIAkJCQkJCQkgICIgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2Nh dGFsb2cudGV4dDsiLAogCQkJCQkJCSAgb2lkKTsKIAkJZWxzZSBpZiAocHNldC5zdmVyc2lvbiA+ PSAxMDAwMDApCi0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMu cmVsa2luZCwiCiAJCQkJCQkJICAiIGZhbHNlIEFTIGluaGRldGFjaHBlbmRpbmcsIgogCQkJCQkJ CSAgIiBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZClcbiIKQEAg LTM0NDYsNyArMzQ2Nyw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNj aGVtYW5hbWUsCiAJCQkJCQkJICAiIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRh bG9nLnRleHQ7IiwKIAkJCQkJCQkgIG9pZCk7CiAJCWVsc2UKLQkJCXByaW50ZlBRRXhwQnVmZmVy KCZidWYsCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlNFTEVDVCBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCIKIAkJCQkJCQkgICIgZmFsc2UgQVMg aW5oZGV0YWNocGVuZGluZywgTlVMTFxuIgogCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19j bGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGlcbiIKLS0gCjIuNDAuMQoK --0000000000001f4b870615479b2f--