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 1wFpCb-005aul-07 for pgpool-hackers@arkaria.postgresql.org; Thu, 23 Apr 2026 08:14:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wFpCa-000gp6-1B for pgpool-hackers@arkaria.postgresql.org; Thu, 23 Apr 2026 08:14:24 +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 1wFpCa-000goy-0Q for pgpool-hackers@lists.postgresql.org; Thu, 23 Apr 2026 08:14:24 +0000 Received: from meldrar.postgresql.org ([2a02:c0:301:0:ffff::31]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wFpCW-00000002cGX-18nT for pgpool-hackers@lists.postgresql.org; Thu, 23 Apr 2026 08:14:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Content-Transfer-Encoding:Content-Type: Mime-Version:References:In-Reply-To:From:Subject:Cc:To:Message-Id:Date:Sender :Reply-To:Content-ID:Content-Description; bh=isHjj25a6b1aNGfvzY1TW+U7Hj4pbc9OPs2N1TWv+24=; b=AeDS2auB4zo5g6nccLudS/ijkP +/+7kUWAeBjWl2iWVA/zijrNSYva072ng4vrgZy9nD5xFvEd0z2dkWpOJcq4AzW2kiM4yK+oqdGAM QcU3VtKUqTZmYnqvTVPQKtPoBW4fR2cJtjEhHRLD1R4SqyRY7dX71DsEANAv654yayK2GJADQXEJ9 IHZAEmz5QO00Qzx4V8AsWzUo5cTCnzJ/FJnU6XEqTrEa6aeCqQv8ImUIHCtRd0okdCBr7FmXBsMzj E8mXbTkeoGe+F8Ss4GHe5hvpeNpA7/PqMLsy2wFPqS9ExEidwcmBA1tXKCk2WAEatQAuhH2kxM1Ns YZJ2ljCQ==; Received: from [2409:11:4120:300:22aa:775a:3184:6609] (helo=localhost) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wFpCT-006L6h-20; Thu, 23 Apr 2026 08:14:20 +0000 Date: Thu, 23 Apr 2026 17:14:08 +0900 (JST) Message-Id: <20260423.171408.1934918588656421138.ishii@postgresql.org> To: nadav@tailorbrands.com Cc: pgpool-hackers@lists.postgresql.org Subject: Re: Proposal: Recent mutated table tracking in memory From: Tatsuo Ishii In-Reply-To: References: <20260419.162444.1985634870518309110.ishii@postgresql.org> X-Mailer: Mew version 6.8 on Emacs 29.3 Mime-Version: 1.0 Content-Type: Text/Plain; charset=utf-8 Content-Transfer-Encoding: base64 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2409:11:4120:300:22aa:775a:3184:6609 (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk SGkgTmFkYXYsDQoNClVuZm9ydHVuYXRlbHkgdGhlIG11dGF0ZWQgMDA2Lm1lbXFjYWNoZSBmYWls ZWQgKHRpbWVvdXQpLg0KDQo+PiA+IG1lbXFjYWNoZSBidWcgZml4DQo+PiA+IC0tLS0tLS0tLS0t LS0tLS0tDQo+PiA+DQo+PiA+IEdvb2QgY2F0Y2guIFRoZSByb290IGNhdXNlOiBwb29sX3NldF93 cml0aW5nX3RyYW5zYWN0aW9uKCkgd2FzDQo+PiA+IGV4cGxpY2l0bHkgc2tpcHBpbmcgZG1sX2Fk YXB0aXZlX2dsb2JhbCwgc28NCj4+ID4gcG9vbF9pc193cml0aW5nX3RyYW5zYWN0aW9uKCkgYWx3 YXlzIHJldHVybmVkIGZhbHNlIGluIHRoaXMgbW9kZS4NCj4+ID4gVGhlIHF1ZXJ5IGNhY2hlIGZl dGNoIGd1YXJkIGF0IHBvb2xfcHJvdG9fbW9kdWxlcy5jOjI3MA0KPj4gPiAoIXBvb2xfaXNfd3Jp dGluZ190cmFuc2FjdGlvbigpKSB0aGVuIHNlcnZlZCBzdGFsZSBjYWNoZWQgcmVzdWx0cw0KPj4g PiBhZnRlciBETUwgaW4gdGhlIHNhbWUgdHJhbnNhY3Rpb24uDQo+PiA+DQo+PiA+IEZpeDogcG9v bF9zZXRfd3JpdGluZ190cmFuc2FjdGlvbigpIG5vdyBzZXRzIHRoZSBmbGFnIGZvcg0KPj4gPiBk bWxfYWRhcHRpdmVfZ2xvYmFsIChvbmx5ICdvZmYnIGFuZCAnZG1sX2FkYXB0aXZlJyBza2lwIGl0 KS4gVGhpcw0KPj4gPiBlbnN1cmVzIHRoZSBxdWVyeSBjYWNoZSBpcyBwcm9wZXJseSBieXBhc3Nl ZCBhZnRlciB3cml0ZXMgd2l0aGluDQo+PiA+IHRoZSBzYW1lIHRyYW5zYWN0aW9uLg0KDQpSZWdh cmRzLA0KLS0NClRhdHN1byBJc2hpaQ0KU1JBIE9TUyBLLksuDQpFbmdsaXNoOiBodHRwOi8vd3d3 LnNyYW9zcy5jby5qcC9pbmRleF9lbi8NCkphcGFuZXNlOmh0dHA6Ly93d3cuc3Jhb3NzLmNvLmpw DQoNCj4gSGkgVGF0c3VvLA0KPiANCj4gUmViYXNlZCBvbnRvIGN1cnJlbnQgbWFzdGVyLCByZW51 bWJlcmVkIHRoZSByZWdyZXNzaW9uIHRlc3RzDQo+ICgwNDMvMDQ0IHRvIGF2b2lkIGNvbGxpc2lv biB3aXRoIHRoZSBuZXcgMDQyLnNzbF9yZWxvYWQpLCBhbmQNCj4gY29tYmluZWQgZXZlcnl0aGlu ZyBpbnRvIGEgc2luZ2xlIGNvbW1pdC4NCj4gDQo+IEF0dGFjaGVkOiB2Mi0wMDAxLUZlYXR1cmUt bG9hZC1iYWxhbmNpbmctY29udHJvbC1ieS10YWJsZS10cmFja2luZy5wYXRjaA0KPiANCj4gTG9v a2luZyBmb3J3YXJkIHRvIHlvdXIgcmV2aWV3Lg0KPiANCj4gDQo+IE9uIFN1biwgQXByIDE5LCAy MDI2IGF0IDEwOjI14oCvQU0gVGF0c3VvIElzaGlpIDxpc2hpaUBwb3N0Z3Jlc3FsLm9yZz4gd3Jv dGU6DQo+IA0KPj4gPiBIaSBUYXRzdW8sDQo+PiA+DQo+PiA+IGhhbmsgeW91IGZvciB0aGUgZGV0 YWlsZWQgcmV2aWV3LiBBdHRhY2hlZCBwYXRjaCBhZGRyZXNzZXMgYWxsIGl0ZW1zLg0KPj4NCj4+ IEkgZ3Vlc3MgdGhlIGF0dGFjaGVkIHBhdGNoIGlzIG9uIHRvcCBvZg0KPj4gdjEtMDAwMS1GZWF0 dXJlLWxvYWQtYmFsYW5jaW5nLWNvbnRyb2wtYnktdGFibGUtdHJhY2tpbmcucGF0Y2guICBUbw0K Pj4gYXBwbHkgdjItMDAwMS1hZGRyZXNzLXJldmlldy5wYXRjaCwgd2UgbmVlZCB0byBhcHBseQ0K Pj4gdjEtMDAwMS1GZWF0dXJlLWxvYWQtYmFsYW5jaW5nLWNvbnRyb2wtYnktdGFibGUtdHJhY2tp bmcucGF0Y2ggZmlyc3QuDQo+PiBVbmZvcnR1bmF0ZWx5IGR1ZSB0byByZWNlbnQgY29tbWl0LCBp dCBkb2VzIG5vdCBhcHBseSBhbnltb3JlLiBDYW4geW91DQo+PiBwbGVhc2UgcHJvdmlkZSB2MSAr IHYyIHRoYXQgYXJlIHJlYmFzZWQgYWdhaW5zdCBsYXRlc3QgbWFzdGVyIGJyYW5jaD8NCj4+IEFs c28gMDQyIHJlZ3Jlc3Npb24gdGVzdCBpcyBhbHJlYWR5IHVzZWQgYnkgcmVjZW50IGNvbW1pdC4g Q2FuIHlvdQ0KPj4gcmVudW1iZXIgMDQyLnRyYWNrX3RhYmxlX211dGF0aW9uIGFuZA0KPj4gMDQz LnRyYWNrX3RhYmxlX211dGF0aW9uX3dhdGNoZG9nIHRvIDA0My50cmFja190YWJsZV9tdXRhdGlv biBhbmQNCj4+IDA0NC50cmFja190YWJsZV9tdXRhdGlvbl93YXRjaGRvZyBhY2NvcmRpbmdseT8N Cj4+DQo+PiBMb29raW5nIGZvcndhcmQgdG8gc2VlaW5nIG5ldyBwYXRjaC4NCj4+DQo+PiBSZWdh cmRzLA0KPj4gLS0NCj4+IFRhdHN1byBJc2hpaQ0KPj4gU1JBIE9TUyBLLksuDQo+PiBFbmdsaXNo OiBodHRwOi8vd3d3LnNyYW9zcy5jby5qcC9pbmRleF9lbi8NCj4+IEphcGFuZXNlOmh0dHA6Ly93 d3cuc3Jhb3NzLmNvLmpwDQo+Pg0KPj4NCj4+ID4gbWVtcWNhY2hlIGJ1ZyBmaXgNCj4+ID4gLS0t LS0tLS0tLS0tLS0tLS0NCj4+ID4NCj4+ID4gR29vZCBjYXRjaC4gVGhlIHJvb3QgY2F1c2U6IHBv b2xfc2V0X3dyaXRpbmdfdHJhbnNhY3Rpb24oKSB3YXMNCj4+ID4gZXhwbGljaXRseSBza2lwcGlu ZyBkbWxfYWRhcHRpdmVfZ2xvYmFsLCBzbw0KPj4gPiBwb29sX2lzX3dyaXRpbmdfdHJhbnNhY3Rp b24oKSBhbHdheXMgcmV0dXJuZWQgZmFsc2UgaW4gdGhpcyBtb2RlLg0KPj4gPiBUaGUgcXVlcnkg Y2FjaGUgZmV0Y2ggZ3VhcmQgYXQgcG9vbF9wcm90b19tb2R1bGVzLmM6MjcwDQo+PiA+ICghcG9v bF9pc193cml0aW5nX3RyYW5zYWN0aW9uKCkpIHRoZW4gc2VydmVkIHN0YWxlIGNhY2hlZCByZXN1 bHRzDQo+PiA+IGFmdGVyIERNTCBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbi4NCj4+ID4NCj4+ID4g Rml4OiBwb29sX3NldF93cml0aW5nX3RyYW5zYWN0aW9uKCkgbm93IHNldHMgdGhlIGZsYWcgZm9y DQo+PiA+IGRtbF9hZGFwdGl2ZV9nbG9iYWwgKG9ubHkgJ29mZicgYW5kICdkbWxfYWRhcHRpdmUn IHNraXAgaXQpLiBUaGlzDQo+PiA+IGVuc3VyZXMgdGhlIHF1ZXJ5IGNhY2hlIGlzIHByb3Blcmx5 IGJ5cGFzc2VkIGFmdGVyIHdyaXRlcyB3aXRoaW4NCj4+ID4gdGhlIHNhbWUgdHJhbnNhY3Rpb24u DQo+PiA+DQo+PiA+IFJlbW92ZWQgZGVhZCBxdWVyeSBwYXJzZSBjYWNoZSBjb2RlICh+NzAwIGxp bmVzKQ0KPj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+PiA+DQo+PiA+IFlvdSdyZSByaWdodCAtLSBwb29sX3RyYWNrX3RhYmxlX211dGF0aW9u X2dldF9jYWNoZWRfcGFyc2UsDQo+PiA+IHBvb2xfdHJhY2tfdGFibGVfbXV0YXRpb25fY2FjaGVf cGFyc2UsIGFuZA0KPj4gPiBwb29sX3RyYWNrX3RhYmxlX211dGF0aW9uX25vcm1hbGl6ZV9hbmRf aGFzaCB3ZXJlIG5ldmVyIGNhbGxlZC4NCj4+ID4gVGhlc2Ugd2VyZSBsZWZ0b3ZlciBmcm9tIGFu IGVhcmxpZXIgZGVzaWduIHdoZXJlIHdlIHBsYW5uZWQgdG8NCj4+ID4gY2FjaGUgU1FMIHBhcnNl IHJlc3VsdHMgaW4gc2hhcmVkIG1lbW9yeS4gVGhlIGZlYXR1cmUgZW5kZWQgdXANCj4+ID4gdXNp bmcgcGdwb29sJ3MgZXhpc3RpbmcgcGFyc2VyIGRpcmVjdGx5LCBhbmQgdGhpcyBjb2RlIHdhcyBu ZXZlcg0KPj4gPiB3aXJlZCB1cC4NCj4+ID4NCj4+ID4gUmVtb3ZlZDogUXVlcnlQYXJzZUNhY2hl IGFuZCBRdWVyeVBhcnNlRW50cnkgc3RydWN0cywgYWxsIHJlbGF0ZWQNCj4+ID4gc3RhdGljIGZ1 bmN0aW9ucywgdGhlIFRSQUNLX1RBQkxFX01VVEFUSU9OX1FVRVJZX1NFTSBzZW1hcGhvcmUsDQo+ PiA+IGFuZCB0aGUgdHJhY2tfdGFibGVfbXV0YXRpb25fcXVlcnlfYnVja2V0cyAvDQo+PiA+IHRy YWNrX3RhYmxlX211dGF0aW9uX3F1ZXJ5X3BhcnNlX2NhY2hlX3NpemUgY29uZmlndXJhdGlvbg0K Pj4gPiBwYXJhbWV0ZXJzLiBUaGlzIGFsc28gcmVkdWNlcyBzaGFyZWQgbWVtb3J5IHVzYWdlIGZy b20gfjYuNCBNQg0KPj4gPiB0byB+ODAgS0Igd2l0aCBkZWZhdWx0IHNldHRpbmdzLg0KPj4gPg0K Pj4gPiBjaGVja19vYmplY3RfcmVsYXRpb25zaGlwX2xpc3Qgc2NvcGUNCj4+ID4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4gPg0KPj4gPiBZb3UncmUgY29ycmVjdCAt LSBkbWxfYWRhcHRpdmVfZ2xvYmFsIGRvZXMgbm90IHVzZQ0KPj4gPiBkbWxfYWRhcHRpdmVfb2Jq ZWN0X3JlbGF0aW9uc2hpcF9saXN0LiBDaGFuZ2VkDQo+PiA+IGNoZWNrX29iamVjdF9yZWxhdGlv bnNoaXBfbGlzdCgpIHRvIGNoZWNrIGZvciBETEJPV19ETUxfQURBUFRJVkUNCj4+ID4gb25seSwg bm90IERMQk9XX0lTX0RNTF9BREFQVElWRSAod2hpY2ggaW5jbHVkZXMgZ2xvYmFsKS4NCj4+ID4N Cj4+ID4gRG9jdW1lbnRhdGlvbiBmaXhlcw0KPj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiA+ DQo+PiA+IC0gUmVtb3ZlZCAiKExhZ2xlc3MgUmVwbGljYSBSZWFkcykiIGZyb20gc2VjdGlvbiB0 aXRsZSBhbmQNCj4+ID4gICAibGFnbGVzcyIgbGFuZ3VhZ2UgZnJvbSBkZXNjcmlwdGlvbi4NCj4+ ID4NCj4+ID4gLSBEZXNjcmliZWQgZmFsbGJhY2sgYmVoYXZpb3Igd2hlbiBuZWl0aGVyDQo+PiA+ ICAgcmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCBub3IgZGVsYXlfdGhyZXNob2xkX2J5X3Rp bWUgaXMNCj4+ID4gICBjb25maWd1cmVkIChUVEwgc3RheXMgYXQgMTAwbXMgZGVmYXVsdCBtaW5p bXVtKS4NCj4+ID4NCj4+ID4gLSAicXVlcnkgY2FjaGUiIHJlZmVyZW5jZXMgcmVtb3ZlZCAodGhl IHF1ZXJ5IHBhcnNlIGNhY2hlIGlzIGdvbmUpLg0KPj4gPg0KPj4gPiAtIEFkZGVkIDEyOC10YWJs ZS1wZXItU0VMRUNUIGxpbWl0IHRvIExpbWl0YXRpb25zIHNlY3Rpb24NCj4+ID4gICAodXNlcyBQ T09MX01BWF9TRUxFQ1RfT0lEUykuDQo+PiA+DQo+PiA+IENvZGUgc3R5bGUgZml4ZXMNCj4+ID4g LS0tLS0tLS0tLS0tLS0tLQ0KPj4gPg0KPj4gPiAtIERMQk9XX0lTX0RNTF9BREFQVElWRSgpIGNh bGxzIG5vIGxvbmdlciBzcGxpdCBhY3Jvc3MgbGluZXMuDQo+PiA+DQo+PiA+IC0gU3BsaXQgdGhl IGxvbmcgZXJybXNnIGxpbmUgaW4NCj4+ID4gICBpc19zZWxlY3Rfb2JqZWN0X2luX3RlbXBfd3Jp dGVfbGlzdC4NCj4+ID4NCj4+ID4gLSBSZW1vdmVkIHJlZHVuZGFudCBpc19hZGFwdGl2ZSB2YXJp YWJsZSBpbg0KPj4gPiAgIGlzX3NlbGVjdF9vYmplY3RfaW5fdGVtcF93cml0ZV9saXN0ICh0aGUg Y2hlY2sgYXQgZnVuY3Rpb24NCj4+ID4gICBlbnRyeSBhbHJlYWR5IGd1YXJhbnRlZXMgaXQpLg0K Pj4gPg0KPj4gPiBUaGFua3MhDQo+PiA+DQo+PiA+IE9uIFdlZCwgQXByIDE1LCAyMDI2IGF0IDE6 NDPigK9BTSBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPg0KPj4gd3JvdGU6DQo+ PiA+DQo+PiA+PiBIaSBOYWRhdiwNCj4+ID4+DQo+PiA+PiA+IEhpIFRhdHN1bywNCj4+ID4+ID4N Cj4+ID4+ID4gTG9va3MgZ29vZCB0byBtZSB0aGFua3MhDQo+PiA+PiA+DQo+PiA+PiA+IFBsZWFz ZSBnbyBhaGVhZCB3aXRoIHlvdXIgcmV2aWV3LiB3YWl0aW5nIHRvIGhlYXIgYmFjayBmcm9tIHlv dS4NCj4+ID4+DQo+PiA+PiBIZXJlIGFyZSB0aGUgY29kZSByZXZpZXcgcmVzdWx0cy4NCj4+ID4+ DQo+PiA+PiBkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvYWRiYWxhbmNlLnNnbWwNCj4+IGIv ZG9jL3NyYy9zZ21sL2xvYWRiYWxhbmNlLnNnbWwNCj4+ID4+IGluZGV4IDllMWU3YjM5Yi4uNzM4 NGNlODFhIDEwMDY0NA0KPj4gPj4gLS0tIGEvZG9jL3NyYy9zZ21sL2xvYWRiYWxhbmNlLnNnbWwN Cj4+ID4+ICsrKyBiL2RvYy9zcmMvc2dtbC9sb2FkYmFsYW5jZS5zZ21sDQo+PiA+PiA6DQo+PiA+ PiArIDxzZWN0MiBpZD0icnVudGltZS1jb25maWctdGFibGUtbXV0YXRpb24tbWFwIj4NCj4+ID4+ ICsgIDx0aXRsZT5UYWJsZSBNdXRhdGlvbiBNYXAgQ29uZmlndXJhdGlvbiAoTGFnbGVzcyBSZXBs aWNhDQo+PiBSZWFkcyk8L3RpdGxlPg0KPj4gPj4NCj4+ID4+ICIoTGFnbGVzcyBSZXBsaWNhIFJl YWRzKSIgc291bmRzIGxpa2UgYW4gYWR2ZXJ0aXNlbWVudCB0byBtZS4gSXQNCj4+ID4+IHNob3Vs ZCBiZSByZW1vdmVkLg0KPj4gPj4NCj4+ID4+ICsgIDxwYXJhPg0KPj4gPj4gKyAgIFRoZXNlIHBh cmFtZXRlcnMgY29uZmlndXJlIHRoZSB0cmFjayB0YWJsZSBtdXRhdGlvbiBmZWF0dXJlLCB3aGlj aA0KPj4gaXMNCj4+ID4+IGFjdGl2YXRlZCBieSBzZXR0aW5nDQo+PiA+PiArICAgPHhyZWYgbGlu a2VuZD0iZ3VjLWRpc2FibGUtbG9hZC1iYWxhbmNlLW9uLXdyaXRlIj4gdG8NCj4+ID4+IDxsaXRl cmFsPmRtbF9hZGFwdGl2ZV9nbG9iYWw8L2xpdGVyYWw+Lg0KPj4gPj4gKyAgIFRoZSBmZWF0dXJl IHRyYWNrcyByZWNlbnRseSB3cml0dGVuIHRhYmxlcyB0byBwcmV2ZW50IHN0YWxlIHJlYWRzDQo+ PiBmcm9tDQo+PiA+PiByZXBsaWNhIG5vZGVzIGR1cmluZw0KPj4gPj4gKyAgIHJlcGxpY2F0aW9u IGxhZywgaW1wbGVtZW50aW5nIHRoZSAibGFnbGVzcyIgYXJjaGl0ZWN0dXJlIHBhdHRlcm4gZm9y DQo+PiA+PiBkaXN0cmlidXRlZCBzeXN0ZW1zDQo+PiA+PiArICAgd2l0aCByZWFkIHJlcGxpY2Fz Lg0KPj4gPj4NCj4+ID4+IEkgdGhpbmsgdGhlIGZlYXR1cmUgZG9lcyBub3QgZ3VhcmFudGVlICJs YWdsZXNzIiBhbnl0aW1lLCBpbiBhbGwgY2FzZXMuDQo+PiA+Pg0KPj4gPj4gKyAgPHBhcmE+DQo+ PiA+PiArICAgVGhpcyBmZWF0dXJlIHJlcXVpcmVzIHRpbWUtYmFzZWQgcmVwbGljYXRpb24gZGVs YXkgbW9uaXRvcmluZy4gVGhpcw0KPj4gPj4gY2FuIGJlIHByb3ZpZGVkIGJ5IGVpdGhlcg0KPj4g Pj4gKyAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1yZXBsaWNhdGlvbi1kZWxheS1zb3VyY2UtY21kIj4g KGV4dGVybmFsIGNvbW1hbmQNCj4+ID4+IG1vZGUpIG9yIGJ5IHNldHRpbmcNCj4+ID4+ICsgICA8 eHJlZiBsaW5rZW5kPSJndWMtZGVsYXktdGhyZXNob2xkLWJ5LXRpbWUiPiAod2hpY2ggdXNlcw0K Pj4gPj4gPGxpdGVyYWw+cGdfc3RhdF9yZXBsaWNhdGlvbi5yZXBsYXlfbGFnPC9saXRlcmFsPg0K Pj4gPj4gKyAgIGZyb20gUG9zdGdyZVNRTCAxMCspLiBBdCBsZWFzdCBvbmUgb2YgdGhlc2UgbXVz dCBiZSBjb25maWd1cmVkIGZvcg0KPj4gdGhlDQo+PiA+PiBUVEwgY2FsY3VsYXRpb24gdG8gd29y ay4NCj4+ID4+DQo+PiA+PiBJZiBvbmUgb2YgdGhlc2UgaXMgbm90IHNldCwgd2hhdCBoYXBwZW5z PyBFcnJvcj8gTmVlZCB0byBkZXNjcmliZSBpdC4NCj4+ID4+DQo+PiA+PiArICA8L3BhcmE+DQo+ PiA+PiArDQo+PiA+PiArICA8d2FybmluZz4NCj4+ID4+ICsgICA8cGFyYT4NCj4+ID4+ICsgICAg RW5hYmxpbmcgPGxpdGVyYWw+ZG1sX2FkYXB0aXZlX2dsb2JhbDwvbGl0ZXJhbD4gaW5jcmVhc2Vz IHNoYXJlZA0KPj4gPj4gbWVtb3J5IGNvbnN1bXB0aW9uLiBXaXRoIGRlZmF1bHQgc2V0dGluZ3Ms DQo+PiA+PiArICAgIHRoZSBmZWF0dXJlIHJlcXVpcmVzIGFwcHJveGltYXRlbHkgNi40IE1CIG9m IHNoYXJlZCBtZW1vcnkgKDAuMSBNQg0KPj4gPj4gZm9yIHRhYmxlIHRyYWNraW5nICsgNi4zIE1C IGZvciBxdWVyeSBjYWNoZSkuDQo+PiA+Pg0KPj4gPj4gInF1ZXJ5IGNhY2hlIiBzaG91bGQgYmUg InF1ZXJ5IHBhcnNlIGNhY2hlIi4NCj4+ID4+DQo+PiA+PiArICAgIE1lbW9yeSB1c2FnZSBzY2Fs ZXMgd2l0aCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnM6DQo+PiA+PiArICAgPC9wYXJhPg0KPj4g Pj4gKyAgIDxpdGVtaXplZGxpc3Q+DQo+PiA+PiArICAgIDxsaXN0aXRlbT4NCj4+ID4+ICsgICAg IDxwYXJhPg0KPj4gPj4gKyAgICAgIFRhYmxlIHRyYWNraW5nOiA8bGl0ZXJhbD50cmFja190YWJs ZV9tdXRhdGlvbl90YWJsZV9zaXplICogNDANCj4+ID4+IGJ5dGVzPC9saXRlcmFsPiAoZGVmYXVs dDogMjA0OCAqIDQwID0gfjgwIEtCKQ0KPj4gPj4gKyAgICAgPC9wYXJhPg0KPj4gPj4gKyAgICA8 L2xpc3RpdGVtPg0KPj4gPj4gKyAgICA8bGlzdGl0ZW0+DQo+PiA+PiArICAgICA8cGFyYT4NCj4+ ID4+ICsgICAgICBRdWVyeSBjYWNoZToNCj4+IDxsaXRlcmFsPnRyYWNrX3RhYmxlX211dGF0aW9u X3F1ZXJ5X3BhcnNlX2NhY2hlX3NpemUgKg0KPj4gPj4gNjQwIGJ5dGVzPC9saXRlcmFsPiAoZGVm YXVsdDogMTAwMDAgKiA2NDAgPSB+Ni4zIE1CKQ0KPj4gPj4NCj4+ID4+ICJxdWVyeSBjYWNoZSIg c2hvdWxkIGJlICJxdWVyeSBwYXJzZSBjYWNoZSIuDQo+PiA+Pg0KPj4gPj4gKyAgIDx0aXRsZT5M aW1pdGF0aW9uczwvdGl0bGU+DQo+PiA+Pg0KPj4gPj4gSSB0aGluayBudW1iZXIgb2YgdGFibGVz IHRhY2tlZCBpbiBhIFNFTEVDVCBpcyBsaW1pdGVkIHRvIDguIEl0IHNob3VsZA0KPj4gPj4gYmUg bWVudGlvbmVkLg0KPj4gPj4NCj4+ID4+IGRpZmYgLS1naXQgYS9zcmMvY29udGV4dC9wb29sX3F1 ZXJ5X2NvbnRleHQuYw0KPj4gPj4gYi9zcmMvY29udGV4dC9wb29sX3F1ZXJ5X2NvbnRleHQuYw0K Pj4gPj4gaW5kZXggYTA1NmFjNTk2Li4wMTkwZDM2NzMgMTAwNjQ0DQo+PiA+PiAtLS0gYS9zcmMv Y29udGV4dC9wb29sX3F1ZXJ5X2NvbnRleHQuYw0KPj4gPj4gKysrIGIvc3JjL2NvbnRleHQvcG9v bF9xdWVyeV9jb250ZXh0LmMNCj4+ID4+IEBAIC0xODI4LDE1ICsxODI5LDIzIEBAIGlzX2luX2xp c3QoY2hhciAqbmFtZSwgTGlzdCAqbGlzdCkNCj4+ID4+ICBzdGF0aWMgYm9vbA0KPj4gPj4gIGlz X3NlbGVjdF9vYmplY3RfaW5fdGVtcF93cml0ZV9saXN0KE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRl eHQpDQo+PiA+PiAgew0KPj4gPj4gLSAgICAgICBpZiAobm9kZSA9PSBOVUxMIHx8IHBvb2xfY29u ZmlnLT5kaXNhYmxlX2xvYWRfYmFsYW5jZV9vbl93cml0ZQ0KPj4gIT0NCj4+ID4+IERMQk9XX0RN TF9BREFQVElWRSkNCj4+ID4+ICsgICAgICAgaWYgKG5vZGUgPT0gTlVMTCB8fA0KPj4gPj4gKyAg ICAgICAgICAgICAgICFETEJPV19JU19ETUxfQURBUFRJVkUoDQo+PiA+PiArDQo+PiA+PiBwb29s X2NvbmZpZy0+ZGlzYWJsZV9sb2FkX2JhbGFuY2Vfb25fd3JpdGUpKQ0KPj4gPj4NCj4+ID4+IFlv dSBkb24ndCBuZWVkIHRvIHNwbGl0IHRoZSBsaW5lLg0KPj4gPj4NCj4+ID4+ICsgICAgICAgICAg ICAgICBpc19hZGFwdGl2ZSA9IERMQk9XX0lTX0RNTF9BREFQVElWRSgNCj4+ID4+ICsNCj4+ID4+ ICAgICAgICAgICAgICBwb29sX2NvbmZpZy0+ZGlzYWJsZV9sb2FkX2JhbGFuY2Vfb25fd3JpdGUp Ow0KPj4gPj4NCj4+ID4+IFlvdSBkb24ndCBuZWVkIHRvIHNwbGl0IHRoZSBsaW5lLg0KPj4gPj4N Cj4+ID4+IC0gICAgICAgICAgICAgICBpZiAocG9vbF9jb25maWctPmRpc2FibGVfbG9hZF9iYWxh bmNlX29uX3dyaXRlID09DQo+PiA+PiBETEJPV19ETUxfQURBUFRJVkUgJiYgc2Vzc2lvbl9jb250 ZXh0LT5pc19pbl90cmFuc2FjdGlvbikNCj4+ID4+ICsgICAgICAgICAgICAgICBpZiAoaXNfYWRh cHRpdmUgJiYNCj4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fY29udGV4dC0+ aXNfaW5fdHJhbnNhY3Rpb24pDQo+PiA+PiAgICAgICAgICAgICAgICAgew0KPj4gPj4gICAgICAg ICAgICAgICAgICAgICAgICAgZXJlcG9ydChERUJVRzEsDQo+PiA+Pg0KPj4gPj4gKGVycm1zZygi aXNfc2VsZWN0X29iamVjdF9pbl90ZW1wX3dyaXRlX2xpc3Q6IFwiJXNcIiwgZm91bmQgcmVsYXRp b24NCj4+ID4+IFwiJXNcIiIsIChjaGFyICopIGNvbnRleHQsIHJndi0+cmVsbmFtZSkpKTsNCj4+ ID4+IFRoaXMgbGluZSBpcyB0b28gbG9uZy4gUGxlYXNlIHNwbGl0Lg0KPj4gPj4NCj4+ID4+IEBA IC0xODgwLDcgKzE4ODksMTMgQEAgc3RhdGljIGNoYXINCj4+ID4+ICpnZXRfYXNzb2NpYXRlZF9v YmplY3RfZnJvbV9kbWxfYWRhcHRpdmVfcmVsYXRpb25zDQo+PiA+PiAgdm9pZA0KPj4gPj4gIGNo ZWNrX29iamVjdF9yZWxhdGlvbnNoaXBfbGlzdChjaGFyICpuYW1lLCBib29sIGlzX2Z1bmNfbmFt ZSkNCj4+ID4+ICB7DQo+PiA+PiAtICAgICAgIGlmIChwb29sX2NvbmZpZy0+ZGlzYWJsZV9sb2Fk X2JhbGFuY2Vfb25fd3JpdGUgPT0NCj4+ID4+IERMQk9XX0RNTF9BREFQVElWRSAmJg0KPj4gPj4g cG9vbF9jb25maWctPnBhcnNlZF9kbWxfYWRhcHRpdmVfb2JqZWN0X3JlbGF0aW9uc2hpcF9saXN0 KQ0KPj4gPj4gKyAgICAgICBib29sICAgICAgICAgICAgaXNfYWRhcHRpdmU7DQo+PiA+PiArDQo+ PiA+PiArICAgICAgIGlzX2FkYXB0aXZlID0gRExCT1dfSVNfRE1MX0FEQVBUSVZFKA0KPj4gPj4g Kw0KPj4gPj4gICAgICBwb29sX2NvbmZpZy0+ZGlzYWJsZV9sb2FkX2JhbGFuY2Vfb25fd3JpdGUp Ow0KPj4gPj4NCj4+ID4+IEkgd3JvdGUgaW4gdGhlIGNvbW1pdCBtZXNzYWdlOg0KPj4gPj4NCj4+ ID4+IG1vZGlmaWNhdGlvbnMgYXJlIG9ubHkgZGV0ZWN0ZWQgaW4gdGhlIHNhbWUgdHJhbnNhY3Rp b24pLiBOb3RlLA0KPj4gPj4gaG93ZXZlciwgeW91IGNhbm5vdCB1c2UgZG1sX2FkYXB0aXZlX29i amVjdF9yZWxhdGlvbnNoaXBfbGlzdCB0byB0cmFjaw0KPj4gPj4gZGVwZW5kZW5jeSBhbW9uZyB0 YWJsZSBhbmQgb3RoZXIgb2JqZWN0cy4NCj4+ID4+DQo+PiA+PiBJbiBteSB1bmRlcnN0YW5kaW5n IHRoZSBmZWF0dXJlIGRvZXMgbm90IHVzZQ0KPj4gPj4gZG1sX2FkYXB0aXZlX29iamVjdF9yZWxh dGlvbnNoaXBfbGlzdC4gSWYgdGhpcyBpcyBjb3JyZWN0LCB3aHkNCj4+ID4+IGNoZWNrX29iamVj dF9yZWxhdGlvbnNoaXBfbGlzdCgpIGlzIGNhbGxlZCBoZXJlIGluIGNhc2UNCj4+ID4+IGRtbF9h ZGFwdGl2ZV9nbG9iYWw/ICBJZiB0aGUgZmVhdHVyZSB1c2VzDQo+PiA+PiBkbWxfYWRhcHRpdmVf b2JqZWN0X3JlbGF0aW9uc2hpcF9saXN0LCB0ZXN0IGNhc2VzIHNob3VsZCBiZSBpbmNsdWRlZC4N Cj4+ID4+DQo+PiA+PiBkaWZmIC0tZ2l0IGEvc3JjL3V0aWxzL3Bvb2xfdHJhY2tfdGFibGVfbXV0 YXRpb24uYw0KPj4gPj4gYi9zcmMvdXRpbHMvcG9vbF90cmFja190YWJsZV9tdXRhdGlvbi5jDQo+ PiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gPj4gaW5kZXggMDAwMDAwMDAwLi45YmU0NmIy OGYNCj4+ID4+IC0tLSAvZGV2L251bGwNCj4+ID4+ICsrKyBiL3NyYy91dGlscy9wb29sX3RyYWNr X3RhYmxlX211dGF0aW9uLmMNCj4+ID4+DQo+PiA+PiBJdCBzZWVtcyBmb2xsb3dpbmcgZnVuY3Rp b25zIGFyZSBub3QgdXNlZCBhbnl3aGVyZS4gSSB3b25kZXIgaWYgdGhpcw0KPj4gPj4gZmVhdHVy ZSBhY3R1YWxseSB1c2UgInF1ZXJ5IHBhcnNlIGNhY2hlIi4NCj4+ID4+DQo+PiA+PiBwb29sX3Ry YWNrX3RhYmxlX211dGF0aW9uX2dldF9jYWNoZWRfcGFyc2UNCj4+ID4+IHBvb2xfdHJhY2tfdGFi bGVfbXV0YXRpb25fY2FjaGVfcGFyc2UNCj4+ID4+IHBvb2xfdHJhY2tfdGFibGVfbXV0YXRpb25f bm9ybWFsaXplX2FuZF9oYXNoDQo+PiA+Pg0KPj4gPj4gQmVzaWRlcyB0aGUgY29kZSByZXZpZXcs IEkgbXV0YXRlZCBvbmUgb2YgcmVncmVzc2lvbiB0ZXN0cyB0byBjaGVjaw0KPj4gPj4gd2hldGhl ciB0aGUgZmVhdHVyZSBjbyBleGlzdHMgd2l0aCBpbiB0aGUgZXhpc3RpbmcgbWVtb3J5IHF1ZXJ5 IGNhY2hlDQo+PiA+PiBmZWF0dXJlLiBBZnRlciBhdHRhY2hlZCBwYXRjaCBhcHBsaWVkLCBJIHJh biAwMDYubWVtcWNhY2hlIGFuZCBnb3QgdGhlDQo+PiA+PiBmb2xsb3dpbmcgcmVzdWx0Lg0KPj4g Pj4NCj4+ID4+IGNkIHNyYy90ZXN0L3JlZ3Jlc3Npb24NCj4+ID4+IC4vcmVncmVzcy5zaCAwMDYN Cj4+ID4+IGNyZWF0aW5nIHBncG9vbC1JSSB0ZW1wb3JhcnkgaW5zdGFsbGF0aW9uIC4uLg0KPj4g Pj4gbW92aW5nIHBncG9vbF9zZXR1cCB0byB0ZW1wb3JhcnkgaW5zdGFsbGF0aW9uIHBhdGggLi4u DQo+PiA+PiBtb3Zpbmcgd2F0Y2hkb2dfc2V0dXAgdG8gdGVtcG9yYXJ5IGluc3RhbGxhdGlvbiBw YXRoIC4uLg0KPj4gPj4gdXNpbmcgcGdwb29sLUlJIGF0DQo+PiA+Pg0KPj4gL2hvbWUvdC1pc2hp aS93b3JrL1BncG9vbC1JSS9jdXJyZW50L3BncG9vbDIvc3JjL3Rlc3QvcmVncmVzc2lvbi90ZW1w L2luc3RhbGxlZA0KPj4gPj4gKioqKioqKioqKioqKioqKioqKioqKioqKg0KPj4gPj4gUkVHUkVT U0lPTiBNT0RFICAgICAgICAgIDogaW5zdGFsbA0KPj4gPj4gUGdwb29sLUlJIHZlcnNpb24gICAg ICAgIDogcGdwb29sLUlJIHZlcnNpb24gNC44ZGV2ZWwgKG1pdHN1a2FrZWJvc2hpKQ0KPj4gPj4g UGdwb29sLUlJIGluc3RhbGwgcGF0aCAgIDoNCj4+ID4+DQo+PiAvaG9tZS90LWlzaGlpL3dvcmsv UGdwb29sLUlJL2N1cnJlbnQvcGdwb29sMi9zcmMvdGVzdC9yZWdyZXNzaW9uL3RlbXAvaW5zdGFs bGVkDQo+PiA+PiBQb3N0Z3JlU1FMIGJpbiAgICAgICAgICAgOiAvdXNyL2xvY2FsL3Bnc3FsL2Jp bg0KPj4gPj4gUG9zdGdyZVNRTCBNYWpvciB2ZXJzaW9uIDogMTgNCj4+ID4+IHBnYmVuY2ggICAg ICAgICAgICAgICAgICA6IC91c3IvbG9jYWwvcGdzcWwvYmluL3BnYmVuY2gNCj4+ID4+IFBvc3Rn cmVTUUwgamRiYyAgICAgICAgICA6DQo+PiA+PiAvdXNyL2xvY2FsL3Bnc3FsL3NoYXJlL3Bvc3Rn cmVzcWwtOS4yLTEwMDMuamRiYzQuamFyDQo+PiA+PiAqKioqKioqKioqKioqKioqKioqKioqKioq DQo+PiA+PiB0ZXN0aW5nIDAwNi5tZW1xY2FjaGUuLi5mYWlsZWQuDQo+PiA+PiBvdXQgb2YgMSBv azowIGZhaWxlZDoxIHRpbWVvdXQ6MA0KPj4gPj4NCj4+ID4+IGxvZy8wMDYubWVtcWNhY2hlIHNo b3dzOg0KPj4gPj4NCj4+ID4+IC4uL2V4cGVjdGVkLnR4dCByZXN1bHQudHh0IGRpZmZlcjogY2hh ciAxLCBsaW5lIDENCj4+ID4+DQo+PiA+PiBTbyBJIGNoZWNrZWQgdGhlIHRlc3Qgc2NyaXB0IGFu ZCBmb3VuZCB0aGUgZXJyb3Igd2FzIGdlbmVyYXRlZCBieSBhDQo+PiA+PiBKYXZhIHByb2dyYW0g dGVzdC4NCj4+ID4+DQo+PiA+PiAgICAgICAgIGphdmEgamRiY3Rlc3QgPiByZXN1bHQudHh0IDI+ JjENCj4+ID4+ICAgICAgICAgY21wIC4uL2V4cGVjdGVkLnR4dCByZXN1bHQudHh0DQo+PiA+PiAg ICAgICAgIGlmIFsgJD8gIT0gMCBdO3RoZW4NCj4+ID4+ICAgICAgICAgICAgICAgICAuL3NodXRk b3duYWxsDQo+PiA+PiAgICAgICAgICAgICAgICAgZXhpdCAxDQo+PiA+PiAgICAgICAgIGZpDQo+ PiA+Pg0KPj4gPj4gSW4gamRiY3Rlc3QuamF2YToNCj4+ID4+DQo+PiA+PiAgICAgICAgICAgICAg ICAgLyoNCj4+ID4+ICAgICAgICAgICAgICAgICAgKiBDYWNoZSB0ZXN0IGluIGFuIGV4cGxpY2l0 IHRyYW5zYWN0aW9uDQo+PiA+PiAgICAgICAgICAgICAgICAgICovDQo+PiA+PiAgICAgICAgICAg ICAgICAgY29ubi5zZXRBdXRvQ29tbWl0KGZhbHNlKTsNCj4+ID4+ICAgICAgICAgICAgICAgICAv LyBleGVjdXRlIERNTC4gVGhpcyBzaG91bGQgcHJldmVudCBTRUxFQ1RzIGZyb20gdXNpbmcNCj4+ ID4+IHF1ZXJ5IGNhY2hlIGluIHRoZSB0cmFuc2FjdGlvbi4NCj4+ID4+ICAgICAgICAgICAgICAg ICBzcWwgPSAiVVBEQVRFIHQxIFNFVCBpID0gMjsiOw0KPj4gPj4gICAgICAgICAgICAgICAgIHBz dCA9IGNvbm4uY3JlYXRlU3RhdGVtZW50KCk7DQo+PiA+PiAgICAgICAgICAgICAgICAgcHN0LmV4 ZWN1dGVVcGRhdGUoc3FsKTsNCj4+ID4+ICAgICAgICAgICAgICAgICBwc3QuY2xvc2UoKTsNCj4+ ID4+ICAgICAgICAgICAgICAgICAvLyBzaG91bGQgbm90IHVzZSB0aGUgY2FjaGUgYW5kIHNob3Vs ZCByZXR1cm4gIjIiLA0KPj4gcmF0aGVyDQo+PiA+PiB0aGFuICIxIg0KPj4gPj4gICAgICAgICAg ICAgICAgIHByZXN0ID0gY29ubi5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgKiBGUk9NIHQxIik7 DQo+PiA+PiAgICAgICAgICAgICAgICAgcnMgPSBwcmVzdC5leGVjdXRlUXVlcnkoKTsNCj4+ID4+ DQo+PiA+PiBUaGUgZXhwZWN0ZWQgZmlsZSAoZXhwZWN0ZWQudHh0KSBoYXMgIjIiIGJ1dCB0aGUg cmVzdWx0IGZpbGUNCj4+ID4+ICh0ZXN0ZGlyL3Jlc3VsdC50eHQpIHdhcyAiMSIuICBUaGlzIGlz IHRoZSByZWFzb24gd2h5IHRoZSB0ZXN0DQo+PiA+PiBmYWlsZWQuIEkgd29uZGVyIGlmIHRoZXJl J3Mgc29tZXRoaW5nIHdyb25nIHdpdGggdGhlIGZlYXR1cmUgd2hlbiB0aGUNCj4+ID4+IHF1ZXJ5 IGNhY2hlIGlzIGVuYWJsZWQuIENhbiB5b3UgbG9vayBpbnRvIHRoaXM/DQo+PiA+Pg0KPj4gPj4g UmVnYXJkcywNCj4+ID4+IC0tDQo+PiA+PiBUYXRzdW8gSXNoaWkNCj4+ID4+IFNSQSBPU1MgSy5L Lg0KPj4gPj4gRW5nbGlzaDogaHR0cDovL3d3dy5zcmFvc3MuY28uanAvaW5kZXhfZW4vDQo+PiA+ PiBKYXBhbmVzZTpodHRwOi8vd3d3LnNyYW9zcy5jby5qcA0KPj4gPj4NCj4+ID4NCj4+ID4NCj4+ ID4gLS0NCj4+ID4gTmFkYXYgU2hhdHoNCj4+ID4gVGFpbG9yIEJyYW5kcyB8IENUTw0KPj4NCj4g DQo+IA0KPiAtLSANCj4gTmFkYXYgU2hhdHoNCj4gVGFpbG9yIEJyYW5kcyB8IENUTw0K