Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lEhme-0007LW-Bs for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Feb 2021 00:12:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lEhmd-0001yH-96 for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Feb 2021 00:12:03 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lEhmc-0001yA-T9 for pgsql-hackers@lists.postgresql.org; Wed, 24 Feb 2021 00:12:03 +0000 Received: from mail-mw2nam12on2074.outbound.protection.outlook.com ([40.107.244.74] helo=NAM12-MW2-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lEhmZ-0001WZ-C4 for pgsql-hackers@lists.postgresql.org; Wed, 24 Feb 2021 00:12:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mQYXHW56P/xdOd4X2y+FRGw85Jyr+3B7/DPOX0cFHqpeWm4w5MpBVjE9+tONOjrZzl3YOfWDdpKx0Lek5wvGG/jngeQDB3PnlwXcidrIhe8CVUvqQ3Dhv75pcTdKIbFTDlxP1LSlJyPnmorJvfXySuYUA2PcafdvCWrSVdBCHEKxnCZCF9ADnHxENwHL68GkxGpoqQCSfpgjIKvvoO0j0pYCwZBmdZWJywukd6RUdt0I0rn/cLIrT/TYRRFJi8zdsD0PqEmtkAqEqPWWyFERVq/lVEiPZbMlmMKqzze8tGE6Vwpglg38efz/4NuCMo+oygpuDcg20E4z1tVDwn9ZCg== 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-SenderADCheck; bh=tutioikD/33GKSUxKTEcZBT6clfqEIYpHYI6MVexgec=; b=ZLUP/G01mki9irc/D5dt73RzDOUo1/iQH/e4qfH3MdEqRmFyUXzqqzLJKe4Ib1x+k6dUkH8rD6OkMZsRDnNDolFxFncR/4g9hsBYH0CTZwcBCDNPYavqtVhMMPJzEHxyQGeRgnxNpikT9JK9sfN/J3TMyOcuS3oLKfSHfPBiw7NmsZ0Ie5+lYrcDKDd8WVNCuFi8Ymm98ofDF059ZDaR+gHscNqOFV4U4qfUcjvA1YlxyNcADupFKfqTj8SlTuz7JOgh5mrmcEOgEFM6nnc89lLcOSzFxKw35zPpphK1LCY2yDpqpGMAvNbjyYh1100rIz3zK6ZHuQh6Tjmr/W9Ltg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tutioikD/33GKSUxKTEcZBT6clfqEIYpHYI6MVexgec=; b=jIdwcSYyNr2ubHAyRyXkCzp3mMh9UJo3XXc6dZWzUnD0GfaanuvwzucI6GBEd+07RgqZeUYPwjbq5OU+RdnD+aPrZKxjTz1U+bTlt6lDkuML353d9eNhxQH0csioLFcBfkwzX8lReaYjMSGuWg4UbtsbzNVZN9F77U4a1co9Tb8= Received: from MWHPR05MB2896.namprd05.prod.outlook.com (2603:10b6:300:65::20) by CO6PR05MB7764.namprd05.prod.outlook.com (2603:10b6:5:34f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.11; Wed, 24 Feb 2021 00:11:55 +0000 Received: from MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::408b:a41e:e514:6620]) by MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::408b:a41e:e514:6620%9]) with mapi id 15.20.3890.019; Wed, 24 Feb 2021 00:11:55 +0000 From: Jacob Champion To: "daniel@yesql.se" CC: "hlinnaka@iki.fi" , "pgsql-hackers@lists.postgresql.org" , "andrew.dunstan@2ndquadrant.com" , "sfrost@snowman.net" , "thomas.munro@gmail.com" , "michael@paquier.xyz" , "andres@anarazel.de" Subject: Re: Support for NSS as a libpq TLS backend Thread-Topic: Support for NSS as a libpq TLS backend Thread-Index: AQHWM1w61GrKUIsl6UCBcYrYNRBt46kJRsIAgAA+PQCAGQsiAIAEdGUAgAAqk4CAAbpsAIABgI0AgCnqVACAA5UBgIAAY+MAgBTX7ACAACGAAIASngCAgAAfeICABYLFgIAbyjgAgABy24CACw63gIAAAzWAgAwa5QCAA6HPgIAAKuGAgAYXDoCAACZBAIABTCSAgAALLgCAAcj/gIAA61UAgAU5IwCAAT6LgIBg7KEAgAJv4YCAAEgzAIAAvXeAgABWToCAExoQAIAAROWAgAFJBgCAAknrgIAHT2aAgACARQCAAC2WAIABbrgAgABSL4CAC5w5gIABgPEAgAXTZYCAAkVWAA== Date: Wed, 24 Feb 2021 00:11:55 +0000 Message-ID: <1b16041447d57b45ca273f41d26f6e298d756f99.camel@vmware.com> References: <8D7F95DB-8F8A-4300-BFDA-656FBAB30FE2@yesql.se> <5382CB4A-9CF3-4145-BA46-C802615935E0@yesql.se> <6C7A2D6A-3D05-4C3B-B1DA-C96E97F31AC6@yesql.se> <0F5CF84D-26F1-44D0-AEAE-E011D3CEC0E2@yesql.se> <686dd2b189ec04b161f71481f1f726255ee8224f.camel@vmware.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.4-0ubuntu1 authentication-results: yesql.se; dkim=none (message not signed) header.d=none;yesql.se; dmarc=none action=none header.from=vmware.com; x-originating-ip: [50.39.198.229] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 98c9df81-040f-4c96-bd14-08d8d858cb61 x-ms-traffictypediagnostic: CO6PR05MB7764: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: sOeGP36M1s5f1Q6XHs692xpu5ux/wUwx/E/Ek3zC/nVxaxtoRGK7Ujg+jAyaxm2SfMypTtktXg7fivxdJiOHZNYduFlYwGL76oQliOzpu5/ATt2V6DsXTdkVTMKQvpteqjcJ2GH0YnmftNvoF07DlZ+9WZEk+ZAxQQM4Lahmvbs4UdXV/W2nFkcalJEUdKsaestNpHK4o7tyNdRAmi6e2uAsdbYqDxWNC80nm6jxXTpxznIiu7fCxOv5t24lRXmlUC5XdqPwYc371bdkPpYHIMQDGrbhJ40/Xzql25YvhGma8Gpqk7QskC+D5y7nmoELkfuFgDOPRByXB/Ih++AKXuLwNSq8KhhyBKEPhwBZmO336ZhX+/Zi2e6Mm62wj0VA7WfzrC/ElmX5CCnUiKmWYa26RYxb2z9o+fsPgc+sWNQvjtrTN/j+/nfQhTCbC+93pk6uJI2Wsfb3Qil5wxn8CSHHiY0k/AIQwxWng91PJMy/zBUcM6OHxScYAtCQcaEWVNuHw7Zap1v0cDIXeOGIHA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR05MB2896.namprd05.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(2906002)(71200400001)(5660300002)(36756003)(6512007)(54906003)(64756008)(2616005)(66476007)(4326008)(86362001)(76116006)(316002)(66446008)(6506007)(66556008)(6916009)(66946007)(8936002)(6486002)(186003)(478600001)(8676002)(26005)(83380400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?RTcxWWZ5aS9hdWlEUFZBb3EwdnZsRGFnYklVa01MZDFXWlRiNDk3dnJJRkZD?= =?utf-8?B?SVp6VUxZdXgvTFNTVVRQM3o1aXZMSHArSjBTVEY2aERFVlo5RER3S3FHa091?= =?utf-8?B?aGd2UjFuMktxSERPTnB6R1B1TjZ0Wnc4U1Z3QWQvLzcxODBDd3ExMjE1Umlp?= =?utf-8?B?TVQ4QUU1UjBGelJlYzlXR3pET2VrRytBcTdLejl6VnFjMFYvWW56aVZHNW9Z?= =?utf-8?B?UW11aDY3MDVSc3kxeSswQW5HUksyUGlsV3R3eUJ6ay95N1VrYnFjaC94ODFR?= =?utf-8?B?eVVoeFY4WENmZTR5dWF6OE1QV0JSN1JhbytlbjNsRmltaWhIQ2tQMXlPNkhy?= =?utf-8?B?c1diTlRoVDB5aDY2blhuclJNV3drT1J2Z0dVS3l1eFRJRWMycmpBV0JoeTZZ?= =?utf-8?B?MDl0RHkxOWpTbGFuRFRQbnlhSXNrYU5kUEdNZTdHSWpadHN6RW9LMmpOZGdK?= =?utf-8?B?MCtpUVVrNlNITmVMU1d5TW9IdUsrZDJFRHFmK1doU05mRk5uUVlCQjdUOFBB?= =?utf-8?B?TithcU1ONVFBcEtjd0h5R25CeHhOeklqN3pJMGJ4Z0o4SExWdzlOQzNyOXdr?= =?utf-8?B?Z0xjSXd5cjViZEwrMjgwK3hwS01IVWYzMW9PYWQ3TXhpeG91Z01OUnpsYUNS?= =?utf-8?B?aE5ZZW9wK0VBcVZBYzdwYjl0bXhNeU85SDRvNTk1bXVFZEVoL1U1Qmw1VExa?= =?utf-8?B?ME16TmFBcFUzeWVwN0d2USsxTTZRZ2xqd0ljR0d4dnduTzRYSWt5NzRpajRT?= =?utf-8?B?MG1hNE5CZmdBSldjOEw3VWN5TFpiTWhrZjhjNU9uY3JYKzFkd3hUMld1b0k1?= =?utf-8?B?K3cvdnZjclF2ODJaR2xYUFZZRUZneVNEeWhFMlIvQjNGdmlDOEFaR1FCaE1r?= =?utf-8?B?OFZyK3Boc2FCaVF3WktPNGhvaHFOamhhWndyeDRISkM2bDNkUFNFRkIyOEkv?= =?utf-8?B?YzNyczB1ZXRSQVdmOGtyT2JKaGhIS1YxVGpVM3JkclJTU041NFRObGxveUFy?= =?utf-8?B?cmpxZkloYVYxY0RRbFlHYjR3QkQ4WTZqNmQrY3lQcFJlQkViaWg0Yms0WjJq?= =?utf-8?B?M2Y3NkU5Q2dXK1NONGRLd3huWmhCdmNsd2ZFTi95Ty9SQWp4eTViZytGNVFh?= =?utf-8?B?citGR1R5K1prWGc4dTFNa1pFODdjamFnelBNa0c2bTlWenJTV3VscmNqNUg3?= =?utf-8?B?eFRrVXJOTWRBNnpPZzhzSHlrVHpHY0UreGJvdWZ3M0V3eEV0L3M0RDI0UzVy?= =?utf-8?B?Wnh3QStEZ2xhQzZhbC9IQy82VjZRMnZJTnViNHdUdzJkWVVxWmFTMzhpUUtX?= =?utf-8?B?UUplQVUzZnJLNjVxdzNZOVNBQ3lHRllVZ1JKWUdtMUFna1dyOWNwK3g3VU5U?= =?utf-8?B?bjVOMzJnTDJDcFN5bmtXRzhER0pWWklUQVdVRkJZZGQ1bjhPWm9uWkhrQmlC?= =?utf-8?B?aDNqTS80cFFvSFFJOGc4VHlCczIvSFNnR1dWNUdjZnpVSkRMME5ndWhxR1V3?= =?utf-8?B?L3N6RWZPakdCY1VpM09PcWdFLzlOYW5LUEVCMlErbjZUWFRzNEdpMzZabS9i?= =?utf-8?B?cjFEbk1mamJrUFF2VW9sSHpNVElwaDFNdXJ2SnlEekVJSzA1ckpEcDBmajhk?= =?utf-8?B?cWRNMkhtV2NpMmxkWmtOZlc2dC9yYWhCQTR6Ulp0SmZSM0V6S0hnUUt6OUFS?= =?utf-8?B?VW5TSjQ3S3VFV2J2MjFrUmFCZ2Rib243eUROQmY5RXdMSERqYjFvL2k5ZXJM?= =?utf-8?Q?njiknKWyFdsLKGZIYcrzCM+86omqHkzBfJbekhV?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <0CEA2BF0CF177240B4EF5CA8A5D724AC@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR05MB2896.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 98c9df81-040f-4c96-bd14-08d8d858cb61 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Feb 2021 00:11:55.2357 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: GLpJ1iy3sLBfer9RThCxAAWAmUqGl+FvjOWHLsbjz5qN5Dk3SMQNop1v+8G34t+FroAvM/xsL7obpl4rS4j37Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR05MB7764 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk T24gTW9uLCAyMDIxLTAyLTIyIGF0IDE0OjMxICswMTAwLCBEYW5pZWwgR3VzdGFmc3NvbiB3cm90 ZToNCj4gVGhlIGF0dGFjaGVkIGZpeGVzIHRoYXQgYXMgd2VsbCBhcyBpbXBsZW1lbnRzIHRoZSBz c2xjcmxkaXINCj4gc3VwcG9ydCB0aGF0IHdhcyBjb21taXR0ZWQgcmVjZW50bHkuICBUaGUgY3Js ZGlyIHBhcmFtZXRlciBpc24ndCBhcHBsaWNhYmxlIHRvDQo+IE5TUyBwZXIgc2Ugc2luY2UgYWxs IENSTCdzIGFyZSBsb2FkZWQgaW50byB0aGUgTlNTIGRhdGFiYXNlLCBidXQgaXQgZG9lcyBuZWVk DQo+IHRvIGJlIHN1cHBvcnRlZCBmb3IgdGhlIHRlc3RzLg0KPiANCj4gVGhlIGNybGRpciBjb21t aXQgYWxzbyBtYWRlIHNpbWlsYXIgY2hhbmdlcyB0byB0aGUgdGVzdCBoYXJuZXNzIGFzIEkgaGFk IGRvbmUNCj4gdG8gc3VwcG9ydCB0aGUgTlNTIGRhdGFiYXNlLCB3aGljaCBtYWRlIHRoZXNlIGlu Y29tcGF0aWJsZS4gIFRvIGZpeCB0aGF0IEkndmUNCj4gaW1wbGVtZW50ZWQgbmFtZWQgcGFyYW1l dGVycyBpbiBzd2l0Y2hfc2VydmVyX2NlcnQgdG8gbWFrZSBpdCBsZXNzIG1hZ2ljIHdpdGgNCj4g bXVsdGlwbGUgb3B0aW9uYWwgcGFyYW1ldGVycy4NCg0KVGhlIG5hbWVkIHBhcmFtZXRlcnMgYXJl IGEgYmlnIGltcHJvdmVtZW50IQ0KDQpDb3VwbGUgdGhpbmdzIEkndmUgbm90aWNlZCB3aXRoIHRo aXMgcGF0Y2gsIGJhY2sgb24gdGhlIE9wZW5TU0wgc2lkZS4NCkluIFNTTDo6QmFja2VuZDo6T3Bl blNTTCdzIHNldF9zZXJ2ZXJfY29uZigpIGltcGxlbWVudGF0aW9uOg0KDQo+ICsgICBteSAkc3Ns Y29uZiA9DQo+ICsgICAgICAgInNzbF9jYV9maWxlPSckcGFyYW1zLT57Y2FmaWxlfS5jcnQnXG4i DQo+ICsgICAgIC4gInNzbF9jZXJ0X2ZpbGU9JyRwYXJhbXMtPntjZXJ0ZmlsZX0uY3J0J1xuIg0K PiArICAgICAuICJzc2xfa2V5X2ZpbGU9JyRwYXJhbXMtPntrZXlmaWxlfS5rZXknXG4iDQo+ICsg ICAgIC4gInNzbF9jcmxfZmlsZT0nJHBhcmFtcy0+e2NybGZpbGV9J1xuIjsNCj4gKyAgICRzc2xj b25mIC49ICJzc2xfY3JsX2Rpcj0nJHBhcmFtcy0+e2NybGRpcn0nXG4iIGlmIGRlZmluZWQgJHBh cmFtcy0+e2NybGRpcn07DQo+ICB9DQoNCnRoaXMgaXMgbWlzc2luZyBhIGByZXR1cm4gJHNzbGNv bmZgIGF0IHRoZSBlbmQuDQoNCkluIDAwMV9zc2x0ZXN0cy5wbDoNCg0KPiAtc2V0X3NlcnZlcl9j ZXJ0KCRub2RlLCAnc2VydmVyLWNuLW9ubHknLCAncm9vdCtjbGllbnRfY2EnLA0KPiAtICAgICAg ICAgICAgICAgICAgJ3NlcnZlci1wYXNzd29yZCcsICdlY2hvIHdyb25ncGFzc3dvcmQnKTsNCj4g LWNvbW1hbmRfZmFpbHMoDQo+IC0gICBbICdwZ19jdGwnLCAnLUQnLCAkbm9kZS0+ZGF0YV9kaXIs ICctbCcsICRub2RlLT5sb2dmaWxlLCAncmVzdGFydCcgXSwNCj4gLSAgICdyZXN0YXJ0IGZhaWxz IHdpdGggcGFzc3dvcmQtcHJvdGVjdGVkIGtleSBmaWxlIHdpdGggd3JvbmcgcGFzc3dvcmQnKTsN Cj4gLSRub2RlLT5fdXBkYXRlX3BpZCgwKTsNCj4gKyMgU2luY2UgdGhlIHBhc3NwaHJhc2UgY2Fs bGJhY2tzIG9wZXJhdGUgYXQgZGlmZmVyZW50IHN0YWdlcyBpbiBPcGVuU1NMIGFuZA0KPiArIyBO U1Mgd2UgaGF2ZSB0d28gc2VwYXJhdGUgYmxvY2tzIGZvciB0aGVtDQo+ICtTS0lQOg0KPiArew0K PiArICAgc2tpcCAiQ2VydGlmaWNhdGUgcGFzc3BocmFzZXMgYXJlbid0IGNoZWNrZWQgb24gc2Vy dmVyIHJlc3RhcnQgaW4gTlNTIiwgMg0KPiArICAgICBpZiAoJG5zcyk7DQo+ICsNCj4gKyAgIHN3 aXRjaF9zZXJ2ZXJfY2VydCgkbm9kZSwNCj4gKyAgICAgICBjZXJ0ZmlsZSA9PiAnc2VydmVyLWNu LW9ubHknLA0KPiArICAgICAgIGNhZmlsZSA9PiAncm9vdCtjbGllbnRfY2EnLA0KPiArICAgICAg IGtleWZpbGUgPT4gJ3NlcnZlci1wYXNzd29yZCcsDQo+ICsgICAgICAgbnNzZGF0YWJhc2UgPT4g J3NlcnZlci1jbi1vbmx5LmNydF9fc2VydmVyLXBhc3N3b3JkLmtleS5kYicsDQo+ICsgICAgICAg cGFzc3BocmFzZV9jbWQgPT4gJ2VjaG8gd3JvbmdwYXNzd29yZCcpOw0KPiArDQo+ICsgICBjb21t YW5kX2ZhaWxzKA0KPiArICAgICAgIFsgJ3BnX2N0bCcsICctRCcsICRub2RlLT5kYXRhX2Rpciwg Jy1sJywgJG5vZGUtPmxvZ2ZpbGUsICdyZXN0YXJ0JyBdLA0KPiArICAgICAgICdyZXN0YXJ0IGZh aWxzIHdpdGggcGFzc3dvcmQtcHJvdGVjdGVkIGtleSBmaWxlIHdpdGggd3JvbmcgcGFzc3dvcmQn KTsNCj4gKyAgICRub2RlLT5fdXBkYXRlX3BpZCgwKTsNCg0KVGhlIHJlbW92YWwgb2Ygc2V0X3Nl cnZlcl9jZXJ0KCkgaW4gZmF2b3Igb2Ygc3dpdGNoX3NlcnZlcl9jZXJ0KCkNCmJyZWFrcyB0aGVz ZSB0ZXN0cyBpbiBPcGVuU1NMLCBiZWNhdXNlIHRoZSByZXN0YXJ0IHRoYXQNCnN3aXRjaF9zZXJ2 ZXJfY2VydCBwZXJmb3JtcyB3aWxsIGZhaWwgYXMgZGVzaWduZWQuIChUaGUgbmV3IGNvbW1lbnQN CmFib3ZlIHN3aXRjaF9zZXJ2ZXJfY2VydCgpIHN1Z2dlc3RzIG1heWJlIHlvdSBoYWQgYSBzd2l0 Y2ggaW4gbWluZCB0bw0Kc2tpcCB0aGUgcmVzdGFydD8pDQoNCk5TUyBpcyBub3QgYWZmZWN0ZWQg YmVjYXVzZSB3ZSBleHBlY3QgdGhlIHJlc3RhcnQgdG8gc3VjY2VlZDoNCg0KPiArICAgY29tbWFu ZF9vaygNCj4gKyAgICAgICBbICdwZ19jdGwnLCAnLUQnLCAkbm9kZS0+ZGF0YV9kaXIsICctbCcs ICRub2RlLT5sb2dmaWxlLCAncmVzdGFydCcgXSwNCj4gKyAgICAgICAncmVzdGFydCBmYWlscyB3 aXRoIHBhc3N3b3JkLXByb3RlY3RlZCBrZXkgZmlsZSB3aXRoIHdyb25nIHBhc3N3b3JkJyk7DQoN CmJ1dCBJJ2QgYXJndWUgdGhhdCB0aGF0IE5TUyB0ZXN0IGFuZCB0aGUgb25lIGFmdGVyIGl0IHNo b3VsZCBwcm9iYWJseQ0KYmUgcmVtb3ZlZC4gV2UgYWxyZWFkeSBrbm93IHJlc3RhcnQgc3VjY2Vl ZGVkOyBvdGhlcndpc2UNCnN3aXRjaF9zZXJ2ZXJfY2VydCgpIHdvdWxkIGhhdmUgZmFpbGVkLiAo VGhlIHRlc3QgZGVzY3JpcHRpb25zIGFsc28NCmhhdmUgdGhlIG9sZCAicmVzdGFydCBmYWlscyIg dmVyYmlhZ2UuKQ0KDQotLUphY29iDQo=