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 1rmL6n-007K2G-QE for pgsql-hackers@arkaria.postgresql.org; Mon, 18 Mar 2024 22:05:31 +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 1rmL6m-006aJ2-ES for pgsql-hackers@arkaria.postgresql.org; Mon, 18 Mar 2024 22:05:28 +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.94.2) (envelope-from ) id 1rmL6l-006aIu-QE for pgsql-hackers@lists.postgresql.org; Mon, 18 Mar 2024 22:05:28 +0000 Received: from mail-cpzbra01olkn2012.outbound.protection.outlook.com ([40.92.97.12] helo=BRA01-CPZ-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rmL6i-005Fr5-Vz for pgsql-hackers@postgresql.org; Mon, 18 Mar 2024 22:05:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ib7OleUMZERcnDAODdK4kq3e5GPARbr1a4RRA4pXbSfab/8YIVvycPJHHb+injLaICPMZeDhtDrA/gDsa6DpZKi1im3BoYFYNhSRed/5KR/YgjZi8n0o2DcnyP6iuROuESrq2x36TBr0Si2Hj0FYpu3QsE3+qga1+9ySebk0iQxv8gv9Nku0JORBxUT/kNs+CDD6nxcyDss0vLJVK7oZx92ayoEvmfD5W/fi0Oa5Pz5VVAJ1DP4Ca6R6fHyA6k+RMPQACBFn1qOb9RvdW8DKHsxjgiXvlv7FQQgNiLMeTL49/Fk04FNWYtJme1lPwuwN0ieCx7TYpUThiwgILmWfWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Ilm/KIZHrAgKYsd+CADllru6eT3JIgZOtc6UtOVYa4M=; b=epcTXahOOy0SXLOz9+OIZtPqLmKq+HYfYOYK9eZUFU0QqXY48sZcc3Mzz6aeJic+ZSab2Cyza3+J/l596vvXqMQqLdQILNuWaBf+3ooHTG0stez9XRgWRmgTRL1Olae425Z3GpgKFF+gjqDp89UIkCfSXHEygtxx2iV60gAkQV+D0CVL58fAaOQ30MXoryb4ekza2nZlZpQJAqhFSKi5MsOWz1eGmvRaPrHiAKCj2GFPc/ktPn5t5smcz9Rzhlu2e/HhfmXifQFglhrGBqB1yjnm4KbOWMNyPm2UPfG+LrrjpiGHk4grVWnidXRNThngJbGF4jQbFxmIc2o7dPxNew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=HOTMAIL.COM.BR; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ilm/KIZHrAgKYsd+CADllru6eT3JIgZOtc6UtOVYa4M=; b=QIL794xriOMfxbwTtgmMjhG2OqnSWBgtnLJGMwcNYjmWMktpkx2wPQR8TmA7zzCV/1IUpD65WAxVCvlslDwTLcSl1AxXU2BY8uxMpOf4KqVzJBU+y0aiuTuse4m8oZjGFDFXFLZTF74F/VqtK0KCqbH4qtndiLdqm4+QzrcjgCCNsHaD2HtsQ3wO4WaOrXnCYH10JFRXtFssZfDypdT1gzwFvCtV5YAdmN7ZO9RK4NbDLMB8ATvK/XzbQ6/Anzj3xY+69ElvW4n2BKucmwQdCZbI9eCeJUgYUnhL8pr1H0tBi1qQjWmOaXJqwUqb/b+JEKm7RLMPQg5ZZyKN0HSbIw== Received: from CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:2dc::11) by ROAP284MB2715.BRAP284.PROD.OUTLOOK.COM (2603:10d6:10:12c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.26; Mon, 18 Mar 2024 22:05:17 +0000 Received: from CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM ([fe80::ce6:bf75:3d4a:97cf]) by CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM ([fe80::ce6:bf75:3d4a:97cf%2]) with mapi id 15.20.7386.025; Mon, 18 Mar 2024 22:05:17 +0000 From: Maiquel Grassi To: Nathan Bossart CC: Jim Jones , Pavel Luzanov , Erik Wienhold , "pgsql-hackers@postgresql.org" Subject: RE: Psql meta-command conninfo+ Thread-Topic: Psql meta-command conninfo+ Thread-Index: AQHaWRQuU7L2MD2CX0quiO/hLxQK8bD9n9eAgAAOagCAABlrgoAABsOAgAABrYCAAAkRMoAAAaIAgABfmwKAAJe3AIAAHVoLgAAnEwCAADA+O4ABA4CAgAA4UGOAASa0gIAFGF5sgAMAW4CAAhkLZoAAKvw7gADbloCAAE0igIABWfsIgAuJhgCAB/CkKIAAC8uAgBw7NcM= Date: Mon, 18 Mar 2024 22:05:17 +0000 Message-ID: References: <49edac91-d47f-4cac-ae12-d51cabbd87c9@postgrespro.ru> <49635a5b-3d32-4f05-8ce4-c55c70181888@uni-muenster.de> <8a93f6c0-795f-4260-a5fd-07ccbddbc88f@uni-muenster.de> <20240216155449.GA1236054@nathanxps13> <20240224204412.GA1866465@nathanxps13> <20240229224131.GA3004270@nathanxps13> In-Reply-To: <20240229224131.GA3004270@nathanxps13> Accept-Language: pt-BR, en-US Content-Language: pt-BR X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [vC1/psYmvsKLgLrVvcDbB5ZViKQe706iaFcemC79xFhPs44Qw+FOPB432sH92sGO] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CP8P284MB2496:EE_|ROAP284MB2715:EE_ x-ms-office365-filtering-correlation-id: 0d4ff857-da40-4be8-7b4a-08dc47977ec7 x-ms-exchange-slblob-mailprops: gMiuAN0LASIUPaIMfCy1XzRXlS67V00J9164DVteznbx7+4k73kmvBLjaBCXXdfnXX2zNcQy5Igtc7LbkumWGOmlHP5gL5SnJQv+Uzm6GJu/Ejcy/q6blu7SNe2iQuAdUOc0kG04OvIHyhyatbPREO2i3obVnImnBnXFn6KyVxR+GyXfCenKwUelsDN42+B8yjd3e/skAFM0qv6C0iiTQc9BTRoxlFGl4ssSuwXA6R5QjboCFofnDSDJdZZ9fRN7xYuNvAcQE6w2/iq7VSMwe+2EnU9UrgGNcgymREUcWFHSJnKNDlmheEUs/YsenrXyIvlLN4iOlInvj6vbeodGlAUCFau0vvcBRtjP50D2tR3/I4YtkTl5OzaLls3nUMlKbjG6kzaPbvxzLmWIgSF27bOWRgVAz2E3M9wnDsD4XatW2PqojwELWwUci1zlwyD2A5SvJiDw2yxncu1KH5JDrCJrNCpWa3bur+bVER5UG5GtSWj3jukevfO7lc8Sx75fUQVh++k6ZDR+r8mxPntX9pOsAZNyGRWVO4Is7mr8kBrwXUWj47Eml3ttJ5sULxD36+jiA8fHB/RFNCxxvicSrrjIyQymXSh3XA7kPP5u/5aHnS9X+l8GrlRT0MdoISW52h+oNsVD/+QXrEme3R4niXenwGNef0sKaV2rXWSHdmfHIuqSOob5RCAcPBBihMpernoN7Pkt4r29KRYUEALORA== x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: cxWk99fHf/NQP3TyfbIvV4bAmvpRyJkhh2UNtxLWp/qc1LljKs7vY//gUGge4RVkQCpooRcq7frp4vY8MUjUxvzHwpVG0+FJAPesPs9fJOtKXmeYyviX00d3FqxsJErtwexytcCUWXC8s+TLg6tl5kh8167h48PYT9iRR12XaqT3DI/H1DX0lD54ptmPhW/m13WztNjDoLV6yvZiFagTcOnr+pIK+mmwhV1rF3Z3JbEmC9lpiWMZ8sbur1Wi8fOSkf2pOZNOB9AhXCzvHeomq+M/JUKr90fmifMRXs6kPvmatPb3ubtOL8Ah002m04Cn4qaPVLO9A75R8jvHrFHWS5qH2jG9803UIMcD6vDXVsDIgUFmjtvFjfunNJ2UsGADiwwMR3sKEf/Y73+JtkBzYYZXg6FJpaGAOL5ALWHOqUURj+FN6KqFAzKg3EQy8UFtwIdjDdGwKMQfoQiSeNaPNSzuGBDuHOXCxL0vb8mp/6i7ZbBAoWTUMczHC/rW2f+/qZhJ+wqhYgUL3bYreBGBMVbgOQ6/TKno2RKPkwEP3lF/ONzhn+ZUigH5EOQJr8MSF/gU+3huA953UuiJFbDdcH3LNLy7Upanl30GKz5YAy0xWciB9PCk6I/uCrBwXanR x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Y0lE6hTplO8qbcifIrTEzAAtwueCaj0mwu0EH/VtK7r//hh0A/9DG76LxL?= =?iso-8859-1?Q?1nWsMYP8khZ6f2zjVWhbB1HS9zmSgE/26gZPfVqWicQN1RC8aB4aXqc/a0?= =?iso-8859-1?Q?qbaiqZ95+OIZ4Io+UVKa1sUyEeZelRXCTPYR2FhUV7Nj4C7LNPCT7FAJwm?= =?iso-8859-1?Q?pvmY4CnCu/NaFIiLdQBja3gB7dPSaXdXqNCUHdvo8DaLgIt4aSmqnTrCbN?= =?iso-8859-1?Q?nGOOJg1E0atVXAfH8J6m8TBnH32ajOOMHKOJCzI92xAqqi4xlDiyyd6JAd?= =?iso-8859-1?Q?EK1GtgKAIFgMlmcHVwnwrb7Pf3FQkEz1kIfyBLYQ58PJIO8owtnOlMqYnV?= =?iso-8859-1?Q?jx2VRuGeRdu6TT74RiqGfTCMHRu83JK1WgbUz5tvfGM7zU4oMt847jT2D+?= =?iso-8859-1?Q?C6wwyAr3W6C7PSySuYlmJYblWsgg6P7IJ685M3559GUAGkjeOyWLDo/Rf8?= =?iso-8859-1?Q?3o9EMkRWmR76rTd83D3oZ1RMVmZVdFBi7xWrYs2A+0EGoysjHvzHZ5T6fn?= =?iso-8859-1?Q?6iygBvyAmW93YOZvz6oecWw3/egfIiVDNvwJOXmSKxlXmgZbcoWqdfZ7T+?= =?iso-8859-1?Q?KwLIg2AcfegLW+sugb9Qioz6dJtcDjFLiGFpncYZ6l5q4tjYMj3D+zC8Q5?= =?iso-8859-1?Q?q7D/HUZndDxlvQ+d+YPB30/EO6tgpyqW6IHM9IpqdL4FXGItzD4gnZ/TjK?= =?iso-8859-1?Q?bqalfa8JSSNvp9JGKiOURY5bZFXmkVNfJUzFCEs61EhLgMN39siM005kaU?= =?iso-8859-1?Q?YS8ExM6sHjiqn91FFGSrWlohX1Tm7hbwzQoYDrWldsgPTANjtNvd+iJkOi?= =?iso-8859-1?Q?MHt9FBx6pwAB7OmY8ga0mJzvD7zkIa9OquKdfYQ+dcQRJ7rxC5Y2UNB1xi?= =?iso-8859-1?Q?V3NExg9TLR2aYLGgvomDYCBt8wPPJa885yn1dl8aEQZUVrJ4efXJuBRiCV?= =?iso-8859-1?Q?kxkG72S6uTMe/zNvmgrv7+WkJjuQSdSpzLKDF3bRjnbCHB7jgTWkPu/0Pn?= =?iso-8859-1?Q?UZD+/OWYnPE9cCybEMKaZBFGLwPe2ABsjnJMsGtC6cnGUuPKBqqSHi9499?= =?iso-8859-1?Q?un421Jmo8G/0AG8iFhjdGOt2xPV2t7Qp11VLdaV6D5Qr2LgGH09xkfgZ3y?= =?iso-8859-1?Q?UDbBqC3rCAYQ35/3QWq34VtQl6thNYEJu/GMztF9RL7NeFEXyrC7nOhhM2?= =?iso-8859-1?Q?+DJPHY7CcoGqZfWwAVO5CzI5kYIyenmJ23bUnh9HF2uORoxq3nIavuvIg7?= =?iso-8859-1?Q?j+UODvl5Z7RpXJIhsLCNAaAE5BCNxoqjLBpGNFSlXR7v3bLItm8XgA7CNQ?= =?iso-8859-1?Q?eckLv0LLSKOnLjXv4TQFyi7AXF9hUwaLhVdctoW7MOCoSjA=3D?= Content-Type: multipart/mixed; boundary="_004_CP8P284MB24961A4A0AFD1050391EBAF9EC2D2CP8P284MB2496BRAP_" MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-0f7b9.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 0d4ff857-da40-4be8-7b4a-08dc47977ec7 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2024 22:05:17.1872 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: ROAP284MB2715 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_CP8P284MB24961A4A0AFD1050391EBAF9EC2D2CP8P284MB2496BRAP_ Content-Type: multipart/alternative; boundary="_000_CP8P284MB24961A4A0AFD1050391EBAF9EC2D2CP8P284MB2496BRAP_" --_000_CP8P284MB24961A4A0AFD1050391EBAF9EC2D2CP8P284MB2496BRAP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Thu, Feb 29, 2024 at 10:02:21PM +0000, Maiquel Grassi wrote: > Sorry for the delay. I will make the adjustments as requested soon. Looking forward to it. ----//---- Hi Nathan! Sorry for the delay, I was busy with other professional as well as personal= activities. I made all the changes you suggested. I removed the variables and started u= sing views "pg_stat_ssl" and "pg_stat_gssapi". I handled the PostgreSQL versioni= ng regarding the views used. Here's a brief demonstration of the result: [postgres@localhost ~]$ /home/pgsql-17devel/bin/psql -E -x -p 5433 psql (17devel) Type "help" for help. postgres=3D# \conninfo+ /******** QUERY *********/ SELECT pg_catalog.current_database() AS "Database", 'postgres' AS "Authenticated User", pg_catalog.system_user() AS "System User", pg_catalog.current_user() AS "Current User", pg_catalog.session_user() AS "Session User", pg_catalog.pg_backend_pid() AS "Backend PID", pg_catalog.inet_server_addr() AS "Server Address", pg_catalog.current_setting('port') AS "Server Port", pg_catalog.inet_client_addr() AS "Client Address", pg_catalog.inet_client_port() AS "Client Port", '/tmp' AS "Socket Directory", CASE WHEN pg_catalog.inet_server_addr() IS NULL AND pg_catalog.inet_client_addr() IS NULL THEN NULL ELSE '/tmp' END AS "Host", (SELECT gss_authenticated AS "GSSAPI" FROM pg_catalog.pg_stat_gssapi WHERE pid =3D pg_catalog.pg_backend_pid()), ssl.ssl AS "SSL Connection", ssl.version AS "SSL Protocol", ssl.cipher AS "SSL Cipher", NULL AS "SSL Compression" FROM pg_catalog.pg_stat_ssl ssl WHERE pid =3D pg_catalog.pg_backend_pid() ; /************************/ Current Connection Information -[ RECORD 1 ]------+--------- Database | postgres Authenticated User | postgres System User | Current User | postgres Session User | postgres Backend PID | 29007 Server Address | Server Port | 5433 Client Address | Client Port | Socket Directory | /tmp Host | GSSAPI | f SSL Connection | f SSL Protocol | SSL Cipher | SSL Compression | Rergards, Maiquel Grassi. --_000_CP8P284MB24961A4A0AFD1050391EBAF9EC2D2CP8P284MB2496BRAP_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

<= /span>On Thu, Feb 29, 2024 at 10:02:21PM += 0000, Maiquel Grassi wrote:
> Sorry for the delay. I will make the adjustments as requested soon.
Looking forward to it.

----//----

Hi Nathan!


Sorry for the delay, I was busy with other professional as well as personal= activities.

I made all the changes you suggested. I removed = the variables and started using
views "pg_stat_ssl" and "pg_stat_gssapi". I handled the= PostgreSQL versioning regarding the views used.


Here's a brief demonstration of the result:

[postgres@localhost ~]$ /home/pgsql-17devel/bin/psql -E -x -p 5433

psql (17devel)
Type "help" for help.

postgres=3D# \conninfo+
/******** QUERY *********/
SELECT
  pg_catalog.current_database() AS "= Database",
  'postgres' AS "Authenticated User&= quot;,
  pg_catalog.system_user() AS "Syste= m User",
  pg_catalog.current_user() AS "Curr= ent User",
  pg_catalog.session_user() AS "Sess= ion User",
  pg_catalog.pg_backend_pid() AS "Ba= ckend PID",
  pg_catalog.inet_server_addr() AS "= Server Address",
  pg_catalog.current_setting('port') AS &= quot;Server Port",
  pg_catalog.inet_client_addr() AS "= Client Address",
  pg_catalog.inet_client_port() AS "= Client Port",
  '/tmp' AS "Socket Directory",=
  CASE
    WHEN
      pg_catalog.inet_server_ad= dr() IS NULL
      AND pg_catalog.inet_clien= t_addr() IS NULL
    THEN NULL
    ELSE '/tmp'
  END AS "Host",
  (SELECT gss_authenticated AS "GSSA= PI"
  FROM pg_catalog.pg_stat_gssapi
  WHERE pid =3D pg_catalog.pg_backend_pid= ()),
  ssl.ssl AS "SSL Connection",<= /span>
  ssl.version AS "SSL Protocol"= ,
  ssl.cipher AS "SSL Cipher",
  NULL AS "SSL Compression"
FROM
  pg_catalog.pg_stat_ssl ssl
WHERE
  pid =3D pg_catalog.pg_backend_pid()
;
/************************/

Current Connection Information
-[ RECORD 1 ]------+---------
Database           | = postgres
Authenticated User | postgres
System User        |
Current User       | postgres
Session User       | postgres
Backend PID        | 29007=
Server Address     |
Server Port        | 5433<= /span>
Client Address     |
Client Port        |
Socket Directory   | /tmp
Host            =   |
GSSAPI           &nbs= p; | f
SSL Connection     | f
SSL Protocol       |
SSL Cipher         |
SSL Compression    |

Rergards,
Maiquel Grassi.
--_000_CP8P284MB24961A4A0AFD1050391EBAF9EC2D2CP8P284MB2496BRAP_-- --_004_CP8P284MB24961A4A0AFD1050391EBAF9EC2D2CP8P284MB2496BRAP_ Content-Type: application/octet-stream; name="v20-0001-psql-meta-command-conninfo-plus.patch" Content-Description: v20-0001-psql-meta-command-conninfo-plus.patch Content-Disposition: attachment; filename="v20-0001-psql-meta-command-conninfo-plus.patch"; size=13911; creation-date="Mon, 18 Mar 2024 21:52:59 GMT"; modification-date="Mon, 18 Mar 2024 21:55:13 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCBjYzdkNzk3Li5lYmIxZjRhIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sCkBAIC0xMDI5LDExICsxMDI5LDEwNiBAQCBJTlNFUlQgSU5UTyB0YmwxIFZBTFVF UyAoJDEsICQyKSBcYmluZCAnZmlyc3QgdmFsdWUnICdzZWNvbmQgdmFsdWUnIFxnCiAgICAgICA8 L3Zhcmxpc3RlbnRyeT4KIAogICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iYXBwLXBzcWwtbWV0YS1j b21tYW5kLWNvbm5pbmZvIj4KLSAgICAgICAgPHRlcm0+PGxpdGVyYWw+XGNvbm5pbmZvPC9saXRl cmFsPjwvdGVybT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+XGNvbm5pbmZvWytdPC9saXRlcmFs PjwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICA8cGFyYT4KICAgICAgICAgT3V0 cHV0cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBkYXRhYmFzZSBjb25uZWN0aW9uLgor ICAgICAgICBXaGVuIG5vIDxsaXRlcmFsPis8L2xpdGVyYWw+IGlzIGFwcGVuZGVkLCBpdCBzaW1w bHkgcHJpbnRzCisgICAgICAgIGEgdGV4dHVhbCAoc3RyaW5nKSBkZXNjcmlwdGlvbiBvZiBhIGZl dyBjb25uZWN0aW9uIG9wdGlvbnMuCisgICAgICAgIFdoZW4gPGxpdGVyYWw+KzwvbGl0ZXJhbD4g aXMgZ2l2ZW4sIG1vcmUgY29tcGxldGUgaW5mb3JtYXRpb24KKyAgICAgICAgaXMgZGlzcGxheWVk IGFzIGEgdGFibGUgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIGNvbHVtbnM6CiAgICAgICAgIDwv cGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+RGF0YWJhc2U6PC9saXRl cmFsPiBEaXNwbGF5cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudAorICAgICAgICBkYXRhYmFzZSBv biB0aGlzIGNvbm5lY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAg ICAgICAgPGxpdGVyYWw+QXV0aGVudGljYXRlZCBVc2VyOjwvbGl0ZXJhbD4gRGlzcGxheXMgdGhl IGF1dGhlbnRpY2F0ZWQKKyAgICAgICAgdXNlciBhdCB0aGUgdGltZSBvZiBwc3FsIGNvbm5lY3Rp b24gd2l0aCB0aGUgc2VydmVyLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+Cisg ICAgICAgIDxsaXRlcmFsPlN5c3RlbSBVc2VyOjwvbGl0ZXJhbD4gUmV0dXJucyB0aGUgYXV0aGVu dGljYXRpb24gbWV0aG9kCisgICAgICAgIGFuZCB0aGUgaWRlbnRpdHkgKGlmIGFueSkgdGhhdCB0 aGUgdXNlciBwcmVzZW50ZWQgZHVyaW5nIHRoZQorICAgICAgICBhdXRoZW50aWNhdGlvbiBjeWNs ZSBiZWZvcmUgdGhleSB3ZXJlIGFzc2lnbmVkIGEgZGF0YWJhc2Ugcm9sZS4gSXQKKyAgICAgICAg aXMgcmVwcmVzZW50ZWQgYXMgYXV0aF9tZXRob2Q6aWRlbnRpdHkgb3IgTlVMTCBpZiB0aGUgdXNl ciBoYXMgbm90CisgICAgICAgIGJlZW4gYXV0aGVudGljYXRlZC4KKyAgICAgICAgPC9wYXJhPgor CisgICAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5DdXJyZW50IFVzZXI6PC9saXRlcmFs PiBEaXNwbGF5cyB0aGUgdXNlciBuYW1lIG9mIHRoZQorICAgICAgICBjdXJyZW50IGV4ZWN1dGlv biBjb250ZXh0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgIDxs aXRlcmFsPlNlc3Npb24gVXNlcjo8L2xpdGVyYWw+IERpc3BsYXlzIHRoZSBzZXNzaW9uIHVzZXIn cyBuYW1lLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRl cmFsPkJhY2tlbmQgUElEOjwvbGl0ZXJhbD4gRGlzcGxheXMgdGhlIHByb2Nlc3MgSUQgb2YgdGhl IHNlcnZlcgorICAgICAgICBwcm9jZXNzIGF0dGFjaGVkIHRvIHRoZSBjdXJyZW50IHNlc3Npb24u CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+U2Vy dmVyIEFkZHJlc3M6PC9saXRlcmFsPiBEaXNwbGF5cyB0aGUgSVAgYWRkcmVzcyBvbiB3aGljaAor ICAgICAgICB0aGUgc2VydmVyIGFjY2VwdGVkIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24sIG9yIE5V TEwgaWYgdGhlIGN1cnJlbnQKKyAgICAgICAgY29ubmVjdGlvbiBpcyB2aWEgYSBVbml4LWRvbWFp biBzb2NrZXQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgPGxp dGVyYWw+U2VydmVyIFBvcnQ6PC9saXRlcmFsPiBEaXNwbGF5cyB0aGUgSVAgcG9ydCBudW1iZXIg b24gd2hpY2gKKyAgICAgICAgdGhlIHNlcnZlciBhY2NlcHRlZCB0aGUgY3VycmVudCBjb25uZWN0 aW9uLCBvciBOVUxMIGlmIHRoZSBjdXJyZW50CisgICAgICAgIGNvbm5lY3Rpb24gaXMgdmlhIGEg VW5peC1kb21haW4gc29ja2V0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+Cisg ICAgICAgIDxsaXRlcmFsPkNsaWVudCBBZGRyZXNzOjwvbGl0ZXJhbD4gRGlzcGxheXMgdGhlIElQ IGFkZHJlc3Mgb2YgdGhlCisgICAgICAgIGN1cnJlbnQgY2xpZW50LCBvciBOVUxMIGlmIHRoZSBj dXJyZW50IGNvbm5lY3Rpb24gaXMgdmlhIGEgVW5peC1kb21haW4gc29ja2V0LgorICAgICAgICA8 L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPkNsaWVudCBQb3J0Ojwv bGl0ZXJhbD4gRGlzcGxheXMgdGhlIElQIHBvcnQgbnVtYmVyIG9mIHRoZQorICAgICAgICBjdXJy ZW50IGNsaWVudCwgb3IgTlVMTCBpZiB0aGUgY3VycmVudCBjb25uZWN0aW9uIGlzIHZpYSBhIFVu aXgtZG9tYWluIHNvY2tldC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAg ICAgICA8bGl0ZXJhbD5Tb2NrZXQgRGlyZWN0b3J5OjwvbGl0ZXJhbD4gRGlzcGxheXMgdGhlIGRp cmVjdG9yeSB3aGVyZQorICAgICAgICBVbml4LWRvbWFpbiBzb2NrZXQgd2FzIGNyZWF0ZWQuCisg ICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+SG9zdDo8 L2xpdGVyYWw+IERpc3BsYXlzIHRoZSBob3N0IG9mIHRoZSBjb25uZWN0aW9uLAorICAgICAgICB3 aGljaCByZWZlcnMgdG8gdGhlIGFkZHJlc3Mgb3IgbmFtZSBvZiB0aGUgbWFjaGluZSB3aGVyZSB0 aGUgc2VydmVyCisgICAgICAgIGlzIHJ1bm5pbmcuIFdoZW4gYSBzb2NrZXQgY29ubmVjdGlvbiBp cyBlc3RhYmxpc2hlZCwgaXQgZGlzcGxheXMgTlVMTC4KKyAgICAgICAgPC9wYXJhPgorCisgICAg ICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5HU1NBUEk6PC9saXRlcmFsPiBEaXNwbGF5cyAi dHJ1ZSIgaWYgR1NTQVBJIGlzIGluIHVzZSwgb3IgImZhbHNlIgorICAgICAgICBpZiBHU1NBUEkg aXMgbm90IGluIHVzZSBvbiB0aGlzIGNvbm5lY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKworICAg ICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+U1NMIENvbm5lY3Rpb246PC9saXRlcmFsPiBE aXNwbGF5cyAidHJ1ZSIgaWYgdGhlIGN1cnJlbnQKKyAgICAgICAgY29ubmVjdGlvbiB0byB0aGUg c2VydmVyIHVzZXMgU1NMLCBhbmQgImZhbHNlIiBvdGhlcndpc2UuCisgICAgICAgIDwvcGFyYT4K KworICAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+U1NMIFByb3RvY29sOjwvbGl0ZXJh bD4gRGlzcGxheXMgdGhlIG5hbWUgb2YgdGhlIHByb3RvY29sCisgICAgICAgIHVzZWQgZm9yIHRo ZSBTU0wgY29ubmVjdGlvbiAoZS5nLiwgVExTdjEuMCwgVExTdjEuMSwgVExTdjEuMiBvciBUTFN2 MS4zKS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJh bD5TU0wgQ2lwaGVyOjwvbGl0ZXJhbD4gRGlzcGxheXMgdGhlIG5hbWUgb2YgdGhlIGNpcGhlciB1 c2VkCisgICAgICAgIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24gKGUuZy4sIERIRS1SU0EtQUVTMjU2 LVNIQSkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVy YWw+U0xMIENvbXByZXNzaW9uOjwvbGl0ZXJhbD4gRGlzcGxheXMgIm9uIiBpZiBTU0wgY29tcHJl c3Npb24KKyAgICAgICAgaXMgaW4gdXNlLCAib2ZmIiBpZiBub3QsIG9yIE5VTEwgaWYgU1NMIGlz IG5vdCBpbiB1c2Ugb24gdGhpcyBjb25uZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKICAgICAg ICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvY29tbWFuZC5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwppbmRleCA5YjBmYTA0 Li5mYjVmNjNkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9i aW4vcHNxbC9jb21tYW5kLmMKQEAgLTY4LDcgKzY4LDggQEAgc3RhdGljIGJhY2tzbGFzaFJlc3Vs dCBleGVjX2NvbW1hbmRfQyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2Jy YW4KIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2Nvbm5lY3QoUHNxbFNjYW5T dGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJl c3VsdCBleGVjX2NvbW1hbmRfY2QoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2 ZV9icmFuY2gsCiAJCQkJCQkJCQkgICBjb25zdCBjaGFyICpjbWQpOwotc3RhdGljIGJhY2tzbGFz aFJlc3VsdCBleGVjX2NvbW1hbmRfY29ubmluZm8oUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBi b29sIGFjdGl2ZV9icmFuY2gpOworc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRf Y29ubmluZm8oUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCisJ CQkJCQkJCQkJCSBjb25zdCBjaGFyICpjbWQpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVj X2NvbW1hbmRfY29weShQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5j aCk7CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9jb3B5cmlnaHQoUHNxbFNj YW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFz aFJlc3VsdCBleGVjX2NvbW1hbmRfY3Jvc3N0YWJ2aWV3KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0 ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKQEAgLTMxNyw4ICszMTgsOCBAQCBleGVjX2NvbW1hbmQo Y29uc3QgY2hhciAqY21kLAogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfY29ubmVjdChzY2FuX3N0 YXRlLCBhY3RpdmVfYnJhbmNoKTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAiY2QiKSA9PSAwKQog CQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfY2Qoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCwgY21k KTsKLQllbHNlIGlmIChzdHJjbXAoY21kLCAiY29ubmluZm8iKSA9PSAwKQotCQlzdGF0dXMgPSBl eGVjX2NvbW1hbmRfY29ubmluZm8oc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CisJZWxzZSBp ZiAoc3RyY21wKGNtZCwgImNvbm5pbmZvIikgPT0gMCB8fCBzdHJjbXAoY21kLCAiY29ubmluZm8r IikgPT0gMCkKKwkJc3RhdHVzID0gZXhlY19jb21tYW5kX2Nvbm5pbmZvKHNjYW5fc3RhdGUsIGFj dGl2ZV9icmFuY2gsIGNtZCk7CiAJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChjbWQsICJjb3B5Iikg PT0gMCkKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2NvcHkoc2Nhbl9zdGF0ZSwgYWN0aXZlX2Jy YW5jaCk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgImNvcHlyaWdodCIpID09IDApCkBAIC02NDMs NDcgKzY0NCw4MCBAQCBleGVjX2NvbW1hbmRfY2QoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBi b29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNoYXIgKmNtZCkKIH0KIAogLyoKLSAqIFxjb25uaW5m byAtLSBkaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGNvbm5lY3Rpb24KKyAq IFxjb25uaW5mbywgXGNvbm5pbmZvKyAtLSBkaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IHRoZSBj dXJyZW50IGNvbm5lY3Rpb24KICAqLwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdAotZXhlY19jb21t YW5kX2Nvbm5pbmZvKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNo KQorZXhlY19jb21tYW5kX2Nvbm5pbmZvKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBh Y3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiB7CisJYm9vbAkJc3VjY2VzcyA9IHRydWU7 CisKIAlpZiAoYWN0aXZlX2JyYW5jaCkKIAl7CiAJCWNoYXIJICAgKmRiID0gUFFkYihwc2V0LmRi KTsKKwkJYm9vbAkJc2hvd192ZXJib3NlOworCisJCXNob3dfdmVyYm9zZSA9IHN0cmNocihjbWQs ICcrJykgPyB0cnVlIDogZmFsc2U7CiAKLQkJaWYgKGRiID09IE5VTEwpCi0JCQlwcmludGYoXygi WW91IGFyZSBjdXJyZW50bHkgbm90IGNvbm5lY3RlZCB0byBhIGRhdGFiYXNlLlxuIikpOworCQkv KgorCQkgKiBcY29ubmluZm8rCisJCSAqLworCQlpZiAoc2hvd192ZXJib3NlKQorCQkJc3VjY2Vz cyA9IGxpc3RDb25uZWN0aW9uSW5mb3JtYXRpb24oKTsKKworCQkvKgorCQkgKiBcY29ubmluZm8K KwkJICovCiAJCWVsc2UKIAkJewotCQkJY2hhcgkgICAqaG9zdCA9IFBRaG9zdChwc2V0LmRiKTsK LQkJCWNoYXIJICAgKmhvc3RhZGRyID0gUFFob3N0YWRkcihwc2V0LmRiKTsKKwkJCVBHcmVzdWx0 ICAgKnJlczsKKwkJCVBRRXhwQnVmZmVyRGF0YSBidWY7CiAKLQkJCWlmIChpc191bml4c29ja19w YXRoKGhvc3QpKQotCQkJewotCQkJCS8qIGhvc3RhZGRyIG92ZXJyaWRlcyBob3N0ICovCi0JCQkJ aWYgKGhvc3RhZGRyICYmICpob3N0YWRkcikKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVj dGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBhZGRyZXNzIFwiJXNcIiBh dCBwb3J0IFwiJXNcIi5cbiIpLAotCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdGFk ZHIsIFBRcG9ydChwc2V0LmRiKSk7Ci0JCQkJZWxzZQotCQkJCQlwcmludGYoXygiWW91IGFyZSBj b25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIgXCIlc1wiIHZpYSBzb2NrZXQgaW4g XCIlc1wiIGF0IHBvcnQgXCIlc1wiLlxuIiksCi0JCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIp LCBob3N0LCBQUXBvcnQocHNldC5kYikpOwotCQkJfQorCQkJaW5pdFBRRXhwQnVmZmVyKCZidWYp OworCisJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVFxuIgorCQkJ CQkJCSAgIiAgaW5ldF9zZXJ2ZXJfYWRkcigpOyIpOworCisJCQlyZXMgPSBQU1FMZXhlYyhidWYu ZGF0YSk7CisKKwkJCXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsKKworCQkJaWYgKCFyZXMpCisJCQkJ cmV0dXJuIFBTUUxfQ01EX0VSUk9SOwogCQkJZWxzZQogCQkJewotCQkJCWlmIChob3N0YWRkciAm JiAqaG9zdGFkZHIgJiYgc3RyY21wKGhvc3QsIGhvc3RhZGRyKSAhPSAwKQotCQkJCQlwcmludGYo XygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIgXCIlc1wiIG9u IGhvc3QgXCIlc1wiIChhZGRyZXNzIFwiJXNcIikgYXQgcG9ydCBcIiVzXCIuXG4iKSwKLQkJCQkJ CSAgIGRiLCBQUXVzZXIocHNldC5kYiksIGhvc3QsIGhvc3RhZGRyLCBQUXBvcnQocHNldC5kYikp OworCQkJCWNoYXIJICAgKmhvc3QgPSBQUWhvc3QocHNldC5kYik7CisJCQkJY2hhcgkgICAqaG9z dGFkZHIgPSBQUWhvc3RhZGRyKHBzZXQuZGIpOworCisJCQkJaWYgKGlzX3VuaXhzb2NrX3BhdGgo aG9zdCkpCisJCQkJeworCQkJCQkvKiBob3N0YWRkciBvdmVycmlkZXMgaG9zdCAqLworCQkJCQlp ZiAoaG9zdGFkZHIgJiYgKmhvc3RhZGRyKQorCQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVj dGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBhZGRyZXNzIFwiJXNcIiBh dCBwb3J0IFwiJXNcIi5cbiIpLAorCQkJCQkJCSAgIGRiLCBQUXVzZXIocHNldC5kYiksIFBRZ2V0 dmFsdWUocmVzLCAwLCAwKSwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJCQkJZWxzZQorCQkJCQkJcHJp bnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNc IiB2aWEgc29ja2V0IGluIFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5cbiIpLAorCQkJCQkJCSAgIGRi LCBQUXVzZXIocHNldC5kYiksIGhvc3QsIFBRcG9ydChwc2V0LmRiKSk7CisJCQkJfQogCQkJCWVs c2UKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBh cyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5cbiIpLAotCQkJCQkJ ICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdCwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJCQl7CisJ CQkJCWlmIChob3N0YWRkciAmJiAqaG9zdGFkZHIgJiYgc3RyY21wKGhvc3QsIGhvc3RhZGRyKSAh PSAwKQorCQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwiJXNc IiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiAoYWRkcmVzcyBcIiVzXCIpIGF0IHBvcnQg XCIlc1wiLlxuIiksCisJCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdCwgUFFnZXR2 YWx1ZShyZXMsIDAsIDApLCBQUXBvcnQocHNldC5kYikpOworCQkJCQllbHNlCisJCQkJCQlwcmlu dGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIgXCIlc1wi IG9uIGhvc3QgXCIlc1wiIGF0IHBvcnQgXCIlc1wiLlxuIiksCisJCQkJCQkJICAgZGIsIFBRdXNl cihwc2V0LmRiKSwgaG9zdCwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJCQl9CisJCQkJUFFjbGVhcihy ZXMpOworCQkJCXByaW50U1NMSW5mbygpOworCQkJCXByaW50R1NTSW5mbygpOwogCQkJfQotCQkJ cHJpbnRTU0xJbmZvKCk7Ci0JCQlwcmludEdTU0luZm8oKTsKIAkJfQogCX0KKwllbHNlCisJCWln bm9yZV9zbGFzaF9vcHRpb25zKHNjYW5fc3RhdGUpOwogCi0JcmV0dXJuIFBTUUxfQ01EX1NLSVBf TElORTsKKwlyZXR1cm4gc3VjY2VzcyA/IFBTUUxfQ01EX1NLSVBfTElORSA6IFBTUUxfQ01EX0VS Uk9SOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMv YmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA2NDMzNDk3Li4zYjBkOTEzIDEwMDY0NAotLS0gYS9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAt MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImZlX3V0aWxzL21icHJpbnQuaCIKICNpbmNsdWRlICJm ZV91dGlscy9wcmludC5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgorI2lu Y2x1ZGUgImxpYnBxL3BxY29tbS5oIgogI2luY2x1ZGUgInNldHRpbmdzLmgiCiAjaW5jbHVkZSAi dmFyaWFibGVzLmgiCiAKQEAgLTkwMSw2ICs5MDIsMTExIEBAIGVycm9yX3JldHVybjoKIAlyZXR1 cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBsaXN0Q29ubmVjdGlvbkluZm9ybWF0aW9uCisgKgorICog Zm9yIFxjb25uaW5mbysKKyAqLworYm9vbAorbGlzdENvbm5lY3Rpb25JbmZvcm1hdGlvbih2b2lk KQoreworCVBHcmVzdWx0ICAgKnJlczsKKwlQUUV4cEJ1ZmZlckRhdGEgYnVmOworCXByaW50UXVl cnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CisKKwljaGFyCSAgICpob3N0ID0gUFFob3N0KHBzZXQu ZGIpOworCWNoYXIJICAgKmhvc3RhZGRyID0gUFFob3N0YWRkcihwc2V0LmRiKTsKKworCWluaXRQ UUV4cEJ1ZmZlcigmYnVmKTsKKworCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIlNF TEVDVFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cuY3VycmVudF9kYXRhYmFzZSgpIEFTIFwiRGF0 YWJhc2VcIixcbiIKKwkJCQkJICAiICAnJXMnIEFTIFwiQXV0aGVudGljYXRlZCBVc2VyXCIsXG4i LAorCQkJCQkgIFBRdXNlcihwc2V0LmRiKSk7CisJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTYwMDAw KQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAiICBwZ19jYXRhbG9nLnN5c3Rl bV91c2VyKCkgQVMgXCJTeXN0ZW0gVXNlclwiLFxuIik7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1 ZmZlcigmYnVmLAorCQkJCQkJICAiICBOVUxMIEFTIFwiU3lzdGVtIFVzZXJcIixcbiIpOworCWFw cGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5jdXJyZW50X3VzZXIo KSBBUyBcIkN1cnJlbnQgVXNlclwiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cuc2Vzc2lvbl91 c2VyKCkgQVMgXCJTZXNzaW9uIFVzZXJcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2Jh Y2tlbmRfcGlkKCkgQVMgXCJCYWNrZW5kIFBJRFwiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cu aW5ldF9zZXJ2ZXJfYWRkcigpIEFTIFwiU2VydmVyIEFkZHJlc3NcIixcbiIKKwkJCQkJICAiICBw Z19jYXRhbG9nLmN1cnJlbnRfc2V0dGluZygncG9ydCcpIEFTIFwiU2VydmVyIFBvcnRcIixcbiIK KwkJCQkJICAiICBwZ19jYXRhbG9nLmluZXRfY2xpZW50X2FkZHIoKSBBUyBcIkNsaWVudCBBZGRy ZXNzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5pbmV0X2NsaWVudF9wb3J0KCkgQVMgXCJD bGllbnQgUG9ydFwiLFxuIik7CisJaWYgKGlzX3VuaXhzb2NrX3BhdGgoaG9zdCkgJiYgIShob3N0 YWRkciAmJiAqaG9zdGFkZHIpKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAi ICAnJXMnIEFTIFwiU29ja2V0IERpcmVjdG9yeVwiLFxuIiwKKwkJCQkJCSAgaG9zdCk7CisJZWxz ZQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAiICBOVUxMIEFTIFwiU29ja2V0 IERpcmVjdG9yeVwiLFxuIik7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiICBD QVNFXG4iCisJCQkJCSAgIiAgICBXSEVOXG4iCisJCQkJCSAgIiAgICAgIHBnX2NhdGFsb2cuaW5l dF9zZXJ2ZXJfYWRkcigpIElTIE5VTExcbiIKKwkJCQkJICAiICAgICAgQU5EIHBnX2NhdGFsb2cu aW5ldF9jbGllbnRfYWRkcigpIElTIE5VTExcbiIKKwkJCQkJICAiICAgIFRIRU4gTlVMTFxuIgor CQkJCQkgICIgICAgRUxTRSAnJXMnXG4iCisJCQkJCSAgIiAgRU5EIEFTIFwiSG9zdFwiLFxuIiwK KwkJCQkJICBob3N0KTsKKwlpZiAocHNldC5zdmVyc2lvbiA+PSAxMjAwMDApCisJCWFwcGVuZFBR RXhwQnVmZmVyKCZidWYsCisJCQkJCQkgICIgIChTRUxFQ1QgZ3NzX2F1dGhlbnRpY2F0ZWQgQVMg XCJHU1NBUElcIlxuIgorCQkJCQkJICAiICBGUk9NIHBnX2NhdGFsb2cucGdfc3RhdF9nc3NhcGlc biIKKwkJCQkJCSAgIiAgV0hFUkUgcGlkID0gcGdfY2F0YWxvZy5wZ19iYWNrZW5kX3BpZCgpKSxc biIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIiAgTlVMTCBB UyBcIkdTU0FQSVwiLFxuIik7CisJaWYgKHBzZXQuc3ZlcnNpb24gPj0gOTA1MDApCisJeworCQlp ZiAocHNldC5zdmVyc2lvbiA8IDE0MDAwMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJ CQkJCQkJICAiICBzc2wuc3NsIEFTIFwiU1NMIENvbm5lY3Rpb25cIixcbiIKKwkJCQkJCQkgICIg IHNzbC52ZXJzaW9uIEFTIFwiU1NMIFByb3RvY29sXCIsXG4iCisJCQkJCQkJICAiICBzc2wuY2lw aGVyIEFTIFwiU1NMIENpcGhlclwiLFxuIgorCQkJCQkJCSAgIiAgc3NsLmNvbXByZXNzaW9uIEFT IFwiU1NMIENvbXByZXNzaW9uXCJcbiIKKwkJCQkJCQkgICJGUk9NXG4iCisJCQkJCQkJICAiICBw Z19jYXRhbG9nLnBnX3N0YXRfc3NsIHNzbFxuIgorCQkJCQkJCSAgIldIRVJFXG4iCisJCQkJCQkJ ICAiICBwaWQgPSBwZ19jYXRhbG9nLnBnX2JhY2tlbmRfcGlkKClcbiIpOworCQlpZiAocHNldC5z dmVyc2lvbiA+PSAxNDAwMDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAg IiAgc3NsLnNzbCBBUyBcIlNTTCBDb25uZWN0aW9uXCIsXG4iCisJCQkJCQkJICAiICBzc2wudmVy c2lvbiBBUyBcIlNTTCBQcm90b2NvbFwiLFxuIgorCQkJCQkJCSAgIiAgc3NsLmNpcGhlciBBUyBc IlNTTCBDaXBoZXJcIixcbiIKKwkJCQkJCQkgICIgIE5VTEwgQVMgXCJTU0wgQ29tcHJlc3Npb25c IlxuIgorCQkJCQkJCSAgIkZST01cbiIKKwkJCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfc3RhdF9z c2wgc3NsXG4iCisJCQkJCQkJICAiV0hFUkVcbiIKKwkJCQkJCQkgICIgIHBpZCA9IHBnX2NhdGFs b2cucGdfYmFja2VuZF9waWQoKVxuIik7CisJfQorCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXIo JmJ1ZiwKKwkJCQkJCSAgIiAgTlVMTCBBUyBcIlNTTCBDb25uZWN0aW9uXCIsXG4iCisJCQkJCQkg ICIgIE5VTEwgQVMgXCJTU0wgUHJvdG9jb2xcIixcbiIKKwkJCQkJCSAgIiAgTlVMTCBBUyBcIlNT TCBDaXBoZXJcIixcbiIKKwkJCQkJCSAgIiAgTlVMTCBBUyBcIlNTTCBDb21wcmVzc2lvblwiXG4i KTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICI7Iik7CisKKwlyZXMgPSBQU1FM ZXhlYyhidWYuZGF0YSk7CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCWlmICghcmVzKQorCQly ZXR1cm4gZmFsc2U7CisKKwlteW9wdC50aXRsZSA9IF8oIkN1cnJlbnQgQ29ubmVjdGlvbiBJbmZv cm1hdGlvbiIpOworCW15b3B0LnRyYW5zbGF0ZV9oZWFkZXIgPSB0cnVlOworCisJcHJpbnRRdWVy eShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCisJ UFFjbGVhcihyZXMpOworCXJldHVybiB0cnVlOworfQogCiAvKgogICogbGlzdEFsbERicwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUu aAppbmRleCAyNzNmOTc0Li44YTRlODNmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuaAorKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaApAQCAtNjQsNiArNjQsOSBAQCBleHRl cm4gYm9vbCBsaXN0VFNEaWN0aW9uYXJpZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJi b3NlKTsKIC8qIFxkRnQgKi8KIGV4dGVybiBib29sIGxpc3RUU1RlbXBsYXRlcyhjb25zdCBjaGFy ICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpOwogCisvKiBcY29ubmluZm8gKi8KK2V4dGVybiBib29s IGxpc3RDb25uZWN0aW9uSW5mb3JtYXRpb24odm9pZCk7CisKIC8qIFxsICovCiBleHRlcm4gYm9v bCBsaXN0QWxsRGJzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9oZWxwLmMgYi9zcmMvYmluL3BzcWwvaGVscC5jCmluZGV4IDRl NzlhODEuLjJjNTQyNmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9oZWxwLmMKKysrIGIvc3Jj L2Jpbi9wc3FsL2hlbHAuYwpAQCAtMzEwLDcgKzMxMCw3IEBAIHNsYXNoVXNhZ2UodW5zaWduZWQg c2hvcnQgaW50IHBhZ2VyKQogCWVsc2UKIAkJSEVMUDAoIiAgXFxjW29ubmVjdF0ge1tEQk5BTUV8 LSBVU0VSfC0gSE9TVHwtIFBPUlR8LV0gfCBjb25uaW5mb31cbiIKIAkJCSAgIiAgICAgICAgICAg ICAgICAgICAgICAgICBjb25uZWN0IHRvIG5ldyBkYXRhYmFzZSAoY3VycmVudGx5IG5vIGNvbm5l Y3Rpb24pXG4iKTsKLQlIRUxQMCgiICBcXGNvbm5pbmZvICAgICAgICAgICAgICBkaXNwbGF5IGlu Zm9ybWF0aW9uIGFib3V0IGN1cnJlbnQgY29ubmVjdGlvblxuIik7CisJSEVMUDAoIiAgXFxjb25u aW5mb1srXSAgICAgICAgICAgZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCBjdXJyZW50IGNvbm5l Y3Rpb25cbiIpOwogCUhFTFAwKCIgIFxcZW5jb2RpbmcgW0VOQ09ESU5HXSAgIHNob3cgb3Igc2V0 IGNsaWVudCBlbmNvZGluZ1xuIik7CiAJSEVMUDAoIiAgXFxwYXNzd29yZCBbVVNFUk5BTUVdICAg c2VjdXJlbHkgY2hhbmdlIHRoZSBwYXNzd29yZCBmb3IgYSB1c2VyXG4iKTsKIAlIRUxQMCgiXG4i KTsK --_004_CP8P284MB24961A4A0AFD1050391EBAF9EC2D2CP8P284MB2496BRAP_--