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 1wGHQs-00641h-0w for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Apr 2026 14:23:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wGHQr-006m8T-1B for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Apr 2026 14:23:01 +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.96) (envelope-from ) id 1wGHQp-006m8J-2j for pgsql-hackers@lists.postgresql.org; Fri, 24 Apr 2026 14:23:01 +0000 Received: from dispatch1-usg1.ppe-hosted.com ([205.220.189.236]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wGHQk-00000002aUI-3BBv for pgsql-hackers@lists.postgresql.org; Fri, 24 Apr 2026 14:22:56 +0000 Received: from m0423791.ppops.net (ip6-localhost [127.0.0.1]) by engine.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 268DD20064; Fri, 24 Apr 2026 14:22:54 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from CY3PR05CU001.outbound.protection.outlook.com (mail-westcentralusazon11023098.outbound.protection.outlook.com [40.93.201.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mx1-usg1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 23D7AB40062; Fri, 24 Apr 2026 14:22:53 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fQNF1aP5Ly8ii4YOewwb2DOIvAvNDHvI47qi1R/BUmVkOBR6Udof9g3NHi+oeAKZIw1WDzmP4WeJwszwOluGKb+4qJG2b29V4+61a7Iu0oqLqEXDRjwaWBdc3u+vGdjZ2oglZbZYZv5ZfW3m0QBXaOe9oQI5sLJquTwetNr3erDhagdhF8bhrxLspqx7NjO0o35thoSuMKK7mZ62MFwWA/yTZu2g2ZTPHyvuSrAs155c+E6FvAlcWI/SasOuuiSPQXVffP9apfs3jwNCoxD16BKPPX2DNseuAqYPxl+jw21uwiMhNP035dE43SczMhBjhOpfgCFW4WqREkatLHa7YA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=ng7f96gEzCRhiqtOURlZDKHTetHPRXnk6rjX9xO5avU=; b=oNf7xNM871BNHUTMffhGkYEItugPIEUq84FIZbdxzWlFSBsJvwzt4TNmyjxLhsdBppFDCbeHwiUQv9A8YpWm1wglokDdfBzNb4Q36ncP978ZhcZTqksi2qAhNIuAmJ2ubr8qJOJz/lUJqKPjK6NZYbYzOBXw5PElMJymUhjhoxpTSejvSXOsBgh/4iu2cMQrGWJouHA5tODqcr0Pk4dLF2PKfAQ3+7QeO9ICyuM65NAoEWePEJeu+2dO/Ev985tyzgI2dYnH31XqWRUJQtW28OR/xEWYPKfH9Ay6bai6KNycES/Yz46OYK/ghguvlCwiyRqIrS4E74FGDps9MASeWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=lamco.io; dmarc=pass action=none header.from=lamco.io; dkim=pass header.d=lamco.io; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=lamco.io; Received: from CH0PR07MB9822.namprd07.prod.outlook.com (2603:10b6:610:190::5) by PH0PR07MB8749.namprd07.prod.outlook.com (2603:10b6:510:87::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 24 Apr 2026 14:07:37 +0000 Received: from CH0PR07MB9822.namprd07.prod.outlook.com ([fe80::87f5:6b57:7b0c:97e0]) by CH0PR07MB9822.namprd07.prod.outlook.com ([fe80::87f5:6b57:7b0c:97e0%3]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026 14:07:35 +0000 Content-Type: multipart/mixed; boundary="===============8962837935212101220==" From: Greg Lamberson To: pgsql-hackers@lists.postgresql.org Cc: lepihov@gmail.com, asifrana@gmail.com Subject: Re: Comments on Custom RMGRs Date: Fri, 24 Apr 2026 09:07:32 -0500 Message-ID: <177703965221.23552.11169540665349000505@lamco.io> In-Reply-To: References: X-ClientProxiedBy: CH0PR13CA0054.namprd13.prod.outlook.com (2603:10b6:610:b2::29) To CH0PR07MB9822.namprd07.prod.outlook.com (2603:10b6:610:190::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH0PR07MB9822:EE_|PH0PR07MB8749:EE_ X-MS-Office365-Filtering-Correlation-Id: 503f0f1c-7ead-4b63-fa0f-08dea20ad59d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|18002099003|22082099003|56012099003|11006099003; X-Microsoft-Antispam-Message-Info: XRGDftymybpTDgk7oRoH4VqYGJFyXMTWR1pex3i53izGgWTgsTZnHC4E0R0qtJtstfAuDXAbCh7FJOLDX0ZnHzPsYguTke9QJ0hs6mo7zaKcGg7JLHp6PaLKM/tNrZ12L5Gk3C7m8N1lTknOT1zv/JM95p64vQEWijmRDY5kOKE2wWQzp0kkE1NhN1hOG3xBxBwd0d4SiEEhEX5PKAUdibTF2/BA0ylWKJEACD4TZuGKP0IzDeN47JcijEnEcra4q9yYIFcZDNSOXwQ2tvSn6wF6SkloqUUrhzwJBWiOJnpqI0hTkkFmDqVc+IgNFRkTLQR3SCPG/3uKH8V/R07PwYQyt40MPi4BUv3FJYoyw8XHvJnB3QfMYeRQmD7T/ZmvTCL38NW7sc/5yRjrKoHeAV+SMEIsuWP5ao3GjzSlISHWYy+OhZ1CFT7g2SLZPKSfxxmsRJTKnUPvwOSbaMkDNxiGBfPIes1KSr7o/N3cI/frNyKRkMGDJWSZ9H7GAEmCIwdic+a0k+BtKHB/l4T8WpJU40orb9XjxXBIiePCwTTCwpWgc0LKReV7NpN9qk9E3AgpEuJcZWVg83jQxFlPyg13IeTYg6CQ4s63kkJGgT6lwbFF6QFRCVTyIjtkQj+7KMs+o7tHUv0M4ziNUEBMS9HLSa/UJdCFkirDgnG971CEea8WM498Fq0c+LDtR1r5RCQLE2t5qcq2gnTHnb7kSHKArvxzx9y/hc/gnxOaYzY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR07MB9822.namprd07.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(10070799003)(1800799024)(366016)(18002099003)(22082099003)(56012099003)(11006099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cXRrK2M5Zzg1U25sdG5iUUJBbHVpQzNCTDJnZTNSRFdpM0M2UDdhZ1ZyWDQx?= =?utf-8?B?RmNQaUFCMGFuemgrc3FWajFPL1FIYlpmTXZvYTN6Q1JvQVdhUnAxOXNhSUZ4?= =?utf-8?B?TVRtL2lnN2EyRlVyMFJyc0lBNnArRHhHN1h4bFZCajl4ZUJLd1ZBZHZxOHpK?= =?utf-8?B?b1B5SHNzOEl4bUptTnJqWDZ0dUF6aVNsSFRLOWNJOVNSK0VWS3p1cmk1RU1U?= =?utf-8?B?cGx1Z3VwN1Z6UnVZcGkvclNFZVN6WlZUSnpPNlhaeW1iZVAyODlnemM1b2Vz?= =?utf-8?B?YzB5ZVlNK3FVQ1MvdkphejRwNGZCRlpOeU9tOE42Zm41bHlJYS9Db3UzbWhM?= =?utf-8?B?VDVDOTlLSVY4VlNQaDZBdG81M1hUenloNmFVajltTzBOSXEyNzA3dHdvdUJS?= =?utf-8?B?c3Z6TDd0dGlMNGJvZVpjY0hqVDRmL1RLYTFFaE01N2dxK1BqMkhKWmQwMXl1?= =?utf-8?B?LytGR3pMZ2Z6Y0lQSGpVcU9LbWR3ZDg4Z2oyaTFMSlhSd1BjMUZUSzF3SGtl?= =?utf-8?B?NEpSY3drYkwvemR2aHV4OU1aR1FTb05qZDBWS29vQ2pjK1BBNENlWmNINU9s?= =?utf-8?B?blFUU3l5aWZXY1NBckpQT24vY0hPWU5VWUVpdkUzaThLOVpSaGhxN1B2aHNF?= =?utf-8?B?WDFLRVRxbXptZ0M2M2V0UlFYNE5IWFNYTHgyYlo0SmZmUFNtSjJrdm9QZHdM?= =?utf-8?B?cytLQWZWNjk0K3RUQUlKY3loeC8yMGlKVENTR3haakVpY1I0VkRoL0thcER2?= =?utf-8?B?by9lcGJvMEl2Q2t1NmxXS24wS2VyZk9HMVdJQUFtYm5ybWRHWkNuNzJISEFn?= =?utf-8?B?bFU4QnJHTFBNcUd0OWFROEJWRGpWNUVNeGlNRlJqV05HNFdZMXVKMWgzWDVK?= =?utf-8?B?eFhpOHAzTEUrQVI0UDczaEtTU3VlQnVyT2JlRjJQREM0eEE3a0RhT0ZGZ2FM?= =?utf-8?B?aExEckVLMXV1N2NWbU03Q09PVk1VMGtYOWFpb3puSHJITnMxQitnb3lCcWtu?= =?utf-8?B?U0VSQkVsdnhuYkRJR3Z0VWk0SmNWNXRhS04xUUdBb2piZ3czUVhTZmNwNDlT?= =?utf-8?B?Q2RWSlNKVHNPNmxaR3M1UHZVVldXYkhsN3U0a3Q4MDFVY0hPRGQwcnBOczhI?= =?utf-8?B?T1BOYUdMeFlTVnVFL0V5UHpRT0cvRUdRbUhjZUZnY0NxY3lscm1rLzVMRytI?= =?utf-8?B?cTdlN3YzNHpRcHNZWE4zV1huUkN5UWdKMjZHN3B6M2NMQkZUVkVzQW5OWk9u?= =?utf-8?B?VXFrS0p3aURxWDV3M0F2TDFXRk4vazRQYlFkdS85dFNyMXRDTHF3SUF1NnFm?= =?utf-8?B?ZUJRZkdnMHVOZHl3SGVwa2VxbkpmRE4zcFkycHJwMmZnQVlZVURVMGM0OHM0?= =?utf-8?B?WlcwamxjUWJ0NmFkM3JrZVhQNXYxbTZCV2JsTkhUOWxRM2I2aklZeEhvOWp0?= =?utf-8?B?K1N3TmgvTjhIVE5tcWl6NzdVYUhYY25QNXZHK3psYXRUeGZwMmtvNk1wZDA5?= =?utf-8?B?dUI3WTFDeSswK3ByM0UxY2I3QUR5bGN4MWNJcGtyUmZhTnRWK25wREQ0TTRJ?= =?utf-8?B?YUtiOGNpMVU2SXNBdURXS0lrWStCTGRjM09wdVlLbk1JN1JpV2VQSnljN3RV?= =?utf-8?B?L1lja0VoT3ZQM0FjQUg2dnhWVGh3Y2FYcEQzSUxJaUxZaSt3SUE5ei9XdkEy?= =?utf-8?B?S3RDRXZXNUtkU09JK1hNUmhGSERVbWMzU3d6T0FQeStTa2VsSFpVRGt5TkFN?= =?utf-8?B?VTRCNjZyQzJTZ2o2L0RWZEJ3a1haeWpOU2NvU1JRd1dKNlBLcXNMemJDcGVs?= =?utf-8?B?TUpWZjV1Z2JFOUZaYnFTZVhleFAvd3M0RWJGRFJWRG5nYzhxc0tSSzlCTFdk?= =?utf-8?B?ekZXb0FGQnRIU3NxSkRLcGFieEV6T3JzVkw0T0o3SjRKUmpRbytlVURYVFV2?= =?utf-8?B?cFdBdnQxeVhWcXdLSDcyWWZaU1dMY003V1hRbUI1SnlZT2g0VlJXb3hsNkVp?= =?utf-8?B?Y0UwclVVajBaTVAwcFlqUS9mZ1ZUalJ3RmtHQzV5REZ2VEdJQ2Rtb0s5N3ZD?= =?utf-8?B?S2R3S3c4KzNIMGptVjFGMUhQTUdISlNRclNWdEFJdnZrczZ6bmc1aTgzd2xV?= =?utf-8?B?R0ZHZTZ4ZUZuVWNxeEVuNHVwTVdGWUdrbURlTlIraHJoRnBNRENadXhib3hk?= =?utf-8?B?R21vT0VpN2wzZ2ZNalh1NUljS2QrUlJYVGZBZjJzODdwbzQvdDdhcGJVZVMr?= =?utf-8?B?Zk5LNVVNTUxZQXNIN0hxYTNkYmxNbHBZOEo2WGVuNDIxWERURzM5MEhYUXpU?= =?utf-8?B?MzJka1BxQWwwTVhabXZzRDFpWW4vT0ExS2hQM3crMVZKemV2cHZVdz09?= X-Exchange-RoutingPolicyChecked: ArpLH5tU0zdQOI2uULcy/dsRFAIojoq9IHvgHeUOOAtFxTHTkaXpPMXDf5PPSjDlhR/LnZJ6ziJ7/BtmE8ER5g2+RovmRfbgRmHYeYXXtjg6jd/Zd7BCZIH284YGthvSN8AVOLoQSZKQ9JPAlrQugfGzqJTQSDgoxA7cZGGhFzUn1NzrCh+VN3SqzQXBHLNGCb43mBusgMjqtrS79RGwUJUgO2yW5VkOdu4KrE8pz08eDGXfFmZckKvzpvd6IwYvda1AG7sYQh9vmNgSqJxOT6MNvG1ZqU5vQAf+LTqJv0NXXmeb9YuvpzJSvtUYzYlsh+SKpG33e8Lw8Q6TNa6ngA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: J+pLUx39YSIKa2yncFRfvr0Doo16un/aVKdbjqo37tZhBJIIoUxFQqq20kUh6P2Wq6Ww8wJwLtc9Rs7vMaTLNRXAr4M4j2qjDgY3DI7BLjp0Eb+6cPUf2uJdsw5OY9SBaTmfRNJ6NvwQz4I56/QqLin4eDRdcP59QaiqcJi4ejHJKKlguUXAWocJCVvM0NfgYBHkv27rPFfvEWuA9tCwO5Foqx/H/S6JYRlhfHq42iIqNVN3ffvhZhiAkG0wcon0Bx1E4wX4VjXkxnCwZAg3HIBShYLjy6Pftd+m/2tj5Ly5IoRUBDx8wzxSGBPDTU+UjUVaicJdJlhOE3iRU4wEYTF22C78pf1+yJUs+8TMMAzziZIJFYeqJgz1Z1tVOnDjLGl0gdK2rPSG513V9UcW9dLHNh7RIAHXxQSPtPYT9XCJnF5FzbbautDTsNLkhxXo79rs/BscY5rwK4QzBj30xzJySD1w6XEcQnVhU1iV7/72chr8aMwn9a8SDl/KCgXylxlNdE6SWDVB5QJqy5uAKbml2P/53JfSljgP735MnJbfEgNctSbk67ASTGz1giXjLtXWWRo0Q9VVC66hXAfLPEdtrG2dU4uFUzIRPgaxJRc= X-OriginatorOrg: lamco.io X-MS-Exchange-CrossTenant-Network-Message-Id: 503f0f1c-7ead-4b63-fa0f-08dea20ad59d X-MS-Exchange-CrossTenant-AuthSource: CH0PR07MB9822.namprd07.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 14:07:35.5635 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 41970caf-9d15-4ba7-bce3-02b104df56b0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: d7J+MCAxBNWTJK2J1csb/ezJEkrOPdKjrBMye9kxnavy3Bh9Uxlr0i2v7gUMjJn0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR07MB8749 X-MDID: 1777040573-uuFYE9dPKitm X-PPE-STACK: {"stack":"usg1"} X-MDID-O: usg1;us-east-1d;1777040573;uuFYE9dPKitm;;86dd4b60cbb6ca01f978e423a4aa99b5 X-PPE-TRUSTED: V=1;DIR=OUT; List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============8962837935212101220== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQW5kcmVpLAoKVGhhbmtzIGZvciByZXZpdmluZyB0aGlzIHRocmVhZCBhbmQgZm9yIHJlc3Bv bmRpbmcgdG8gSGVpa2tpJ3MKImRlc2lnbiB0aGlzIGFzIGFuIGluZGVwZW5kZW50IGhvb2ssIHNl cGFyYXRlIGZyb20gcm1ncnMiIHBvaW50LgpNb3ZpbmcgYXdheSBmcm9tIHRoZSBybWdyIGNhbGxi YWNrIHdhcyB0aGUgcmlnaHQgY2FsbC4gIEkgcmVhZCBiYWNrCnRocm91Z2ggdGhlIDIwMjIgdG8g MjAyNCBkaXNjdXNzaW9uIHRvIGdldCBteSBoZWFkIGFyb3VuZCB0aGUgcHJpb3IKY29uY2VybnMs IGFuZCBoYXZlIGEgbnVtYmVyIG9mIGNvbW1lbnRzIG9uIHYxLgoKMS4gUmVncmVzc2lvbiBvbiBw aGFzZWQgaW52b2NhdGlvbi4KCkRhbmlsJ3Mgcm1ncl8wMDMudjMucGF0Y2ggY2FsbGVkIHRoZSBo b29rIGF0IHR3byBwb2ludHMsClJNR1JfQ0hFQ0tQT0lOVF9CRUZPUkVfQlVGRkVSUyBhbmQgUk1H Ul9DSEVDS1BPSU5UX0FGVEVSX0JVRkZFUlMsIGluCnJlc3BvbnNlIHRvIEFuZHJlcydzIDIwMjIg cmVxdWVzdCBmb3IgIm11bHRpcGxlIGNhbGxzIHRvIHN1Y2ggYQpjYWxsYmFjaywgd2l0aCBhIHBh cmFtZXRlciB3aGVyZSBpbiBDaGVja1BvaW50R3V0cygpIHdlIGFyZS4iICBKZWZmCkRhdmlzIHNw ZWNpZmljYWxseSBhcHByb3ZlZCB0aGF0IGRpcmVjdGlvbjoKCiAgICBZb3UndmUgbW92ZWQgdGhl IGRpc2N1c3Npb24gZm9yd2FyZDogLi4uIDIuIFRoZSBob29rIGlzIGNhbGxlZCBhdAogICAgbXVs dGlwbGUgcG9pbnRzLiAgVGhvc2UgYXQgbGVhc3QgcGFydGlhbGx5IGFkZHJlc3MgdGhlIGNvbmNl cm5zCiAgICByYWlzZWQgYnkgQW5kcmVzIGFuZCBSb2JlcnQuCiAgICAgICAgW0plZmYgRGF2aXMs IDIwMjQtMDMtMjldCgp2MSByZXZlcnRzIHRvIGEgc2luZ2xlIGNhbGwgcG9pbnQgKGFmdGVyIENo ZWNrUG9pbnRCdWZmZXJzLCBiZWZvcmUKUHJvY2Vzc1N5bmNSZXF1ZXN0cyksIHdpdGggbm8gcGhh c2UgcGFyYW1ldGVyLiAgSSB0aGluayB0aGlzIG5lZWRzCmp1c3RpZmljYXRpb24gaW4gdGhlIGNv bW1pdCBtZXNzYWdlLCBvciBiZXR0ZXIsIHRoZSBwaGFzZWQgbW9kZWwKc2hvdWxkIGJlIHJlaW5z dGF0ZWQuICBIZWlra2kncyAyMDI0IHBvc3QgZGVzY3JpYmVkIGEgdXNlIGNhc2Ugd2hlcmUKIndl IHdhbnRlZCB0byB3cml0ZSBhIG5ldyBXQUwgcmVjb3JkIGF0IHNodXRkb3duLCBhbmQgaW4KQ2hl Y2tQb2ludEd1dHMoKSwgaXQncyBhbHJlYWR5IHRvbyBsYXRlIGZvciB0aGF0LiAgSXQgbmVlZHMg dG8gYmUKZG9uZSBlYXJsaWVyLCBiZWZvcmUgc3RhcnRpbmcgdGhlIHNodXRkb3duIGNoZWNrcG9p bnQuIiAgVGhlIGN1cnJlbnQKc2luZ2xlLXBvaW50IGhvb2sgY2Fubm90IHNlcnZlIHRoYXQgdXNl IGNhc2UuCgpJZiB5b3UgYmVsaWV2ZSB0aGUgc2luZ2xlLXBvaW50IG1vZGVsIGlzIHN1ZmZpY2ll bnQsIGl0IHdvdWxkIGhlbHAKdG8gZW51bWVyYXRlIHdoaWNoIG9mIHRoZSBlYXJsaWVyIHVzZSBj YXNlcyAoQkRSLXN0eWxlIGRhdGEKc3RydWN0dXJlcywgdW5sb2dnZWQgaW5kZXhlcywgU3RvbmVi cmFrZXItc3R5bGUgbm9uLXNtZ3Igc3RvcmFnZSwKSGVpa2tpJ3MgcHJlLXNodXRkb3duIFdBTCBy ZWNvcmQpIGFyZSBhY3R1YWxseSBzZXJ2YWJsZSBieSB2MSwgYW5kCndoaWNoIGFyZSBiZWluZyBk ZWxpYmVyYXRlbHkgbGVmdCBvdXQgb2Ygc2NvcGUuCgoyLiBSZXN0YXJ0cG9pbnQgYmVoYXZpb3Ig aXMgdW5zcGVjaWZpZWQuCgpDaGVja1BvaW50R3V0cygpIGlzIHNoYXJlZCBiZXR3ZWVuIHJlZ3Vs YXIgY2hlY2twb2ludHMgYW5kCnJlc3RhcnRwb2ludHMgb24gaG90IHN0YW5kYnlzLiAgVGhlIHBh dGNoIGRvZXMgbm90IHNheSB3aGV0aGVyCkNoZWNrcG9pbnRfaG9vayBmaXJlcyBkdXJpbmcgcmVz dGFydHBvaW50cy4gIFRoaXMgbWF0dGVycyB0bwpleHRlbnNpb24gYXV0aG9yczogYSBob29rIHRo YXQgd3JpdGVzIGFwcGxpY2F0aW9uIHN0YXRlIHRvIGRpc2sgYXQKZXZlcnkgcmVzdGFydHBvaW50 IGlzIHZlcnkgZGlmZmVyZW50IGZyb20gb25lIHRoYXQgZmlyZXMgb25seSBvbgpwcmltYXJ5LWlu aXRpYXRlZCBjaGVja3BvaW50cy4gIFBsZWFzZSBkb2N1bWVudCB0aGUgaW50ZW5kZWQKYmVoYXZp b3IsIGFuZCBpZiBib3RoIGNhc2VzIGFyZSBzdXBwb3NlZCB0byBmaXJlLCBjb25zaWRlciB3aGV0 aGVyIGEKQ0hFQ0tQT0lOVF9JU19SRVNUQVJUUE9JTlQgZmxhZyBiaXQgaXMgd2FycmFudGVkLgoK My4gU2h1dGRvd24gYW5kIGVuZC1vZi1yZWNvdmVyeSBoYW5kbGluZy4KClRoZSBleGFtcGxlIHNr aXBzIHdvcmsgb24gQ0hFQ0tQT0lOVF9FTkRfT0ZfUkVDT1ZFUlkgYnV0IG5vdCBvbgpDSEVDS1BP SU5UX0lTX1NIVVRET1dOLiAgVGhlIHJpZ2h0IGJlaGF2aW9yIGF0IHNodXRkb3duIGlzIGEgcmVh bApkZXNpZ24gcXVlc3Rpb24gKGRvIHdlIGZsdXNoIHBlcnNpc3RlbnQgc3RhdGUgb25lIGxhc3Qg dGltZSwgb3IgZG8Kd2Ugc2tpcCBiZWNhdXNlIHRoZSBuZXh0IHN0YXJ0IHdpbGwgcmVpbml0aWFs aXplPykuICBBIGNvbW1lbnQgaW4KeGxvZy5jIG5lYXIgdGhlIGhvb2sgaW52b2NhdGlvbiBkZXNj cmliaW5nIHRoZSBjb250cmFjdCB3b3VsZCBoZWxwLgoKNC4gSG9vayBjaGFpbmluZyBpcyBicm9r ZW4gaW4gdGhlIGV4YW1wbGUuCgpJbiB0ZXN0X2RzbV9yZWdpc3RyeS5jOgoKICAgIHN0YXRpYyBD aGVja3BvaW50X2hvb2tfdHlwZSBwcmV2X0NoZWNrcG9pbnRfaG9vayA9IE5VTEw7CiAgICAuLi4K ICAgIHZvaWQgX1BHX2luaXQodm9pZCkKICAgIHsKICAgICAgICBwcmV2X0NoZWNrcG9pbnRfaG9v ayA9IENoZWNrcG9pbnRfaG9vazsKICAgICAgICBDaGVja3BvaW50X2hvb2sgPSBwZ3NzX0NoZWNr cG9pbnQ7CiAgICB9CgpwcmV2X0NoZWNrcG9pbnRfaG9vayBpcyBzYXZlZCBidXQgbmV2ZXIgaW52 b2tlZCBpbnNpZGUKcGdzc19DaGVja3BvaW50KCkuICBFdmVyeSBvdGhlciBjaGFpbmFibGUgaG9v ayBpbiBQRyAoZW1pdF9sb2dfaG9vaywKcGxhbm5lcl9ob29rLCBQcm9jZXNzVXRpbGl0eV9ob29r LCBFeGVjdXRvclN0YXJ0X2hvb2ssIGFuZCBzbyBvbikKaW52b2tlcyB0aGUgcHJpb3IgaG9vay4g IFdpdGhvdXQgdGhhdCwgaWYgdHdvIGV4dGVuc2lvbnMgYm90aAppbnN0YWxsIENoZWNrcG9pbnRf aG9vaywgd2hpY2hldmVyIHdhcyBsb2FkZWQgZmlyc3QgZ2V0cyBzaWxlbnRseQpkcm9wcGVkLiAg VGhpcyBpcyBhIG9uZS1saW5lIGZpeCBidXQgdGhlIGV4YW1wbGUgc2V0cyB0aGUgd3JvbmcKcHJl Y2VkZW50IGZvciBmdXR1cmUgY29uc3VtZXJzLgoKNS4gQ29weS1wYXN0ZSBsZWZ0b3ZlcnMgZnJv bSB0aGUgZWFybGllciBwZ3NzIGV4YW1wbGUuCgogICAgI2RlZmluZSBURFJfRFVNUF9GSUxFIFBH U1RBVF9TVEFUX1BFUk1BTkVOVF9ESVJFQ1RPUlkgXAogICAgICAgICAgICAgICAgICAgICAgICAg ICIvcGdfc3RhdF9zdGF0ZW1lbnRzLnN0YXQiCgp0ZXN0X2RzbV9yZWdpc3RyeSB3cml0ZXMgdG8g YSBmaWxlIGxpdGVyYWxseSBuYW1lZApwZ19zdGF0X3N0YXRlbWVudHMuc3RhdC4gIElmIGJvdGgg dGVzdF9kc21fcmVnaXN0cnkgYW5kIHRoZSByZWFsCnBnX3N0YXRfc3RhdGVtZW50cyBleHRlbnNp b24gYXJlIGxvYWRlZCwgdGhlIHR3byB3cml0ZSB0byB0aGUgc2FtZQpwYXRoLiAgTGlrZXdpc2Ug dGhlIGZ1bmN0aW9uIG5hbWUgcGdzc19DaGVja3BvaW50IGxpdmVzIGluc2lkZQp0ZXN0X2RzbV9y ZWdpc3RyeS5jIHdoZXJlIGl0IHNob3VsZCBiZSB0ZHJfQ2hlY2twb2ludCBvciBzaW1pbGFyLgoK Ni4gUHJlbG9hZC1waGFzZSBndWFyZC4KClRoZSBwYXRjaCBhbGxvd3MgYXNzaWdubWVudCB0byBD aGVja3BvaW50X2hvb2sgYXQgYW55IHRpbWUuICBJZiBhbgpleHRlbnNpb24gaXMgbG9hZGVkIHZp YSBzZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzIG9yIHZpYSBhIHJ1bnRpbWUKTE9BRCwgaXQgd2ls bCBtdXRhdGUgdGhhdCBiYWNrZW5kJ3Mgb3duIENoZWNrcG9pbnRfaG9vayBwb2ludGVyLAp3aGlj aCBvbiBmb3JrLWJhc2VkIHBsYXRmb3JtcyBkaXZlcmdlcyBmcm9tIHRoZSBwb3N0bWFzdGVyJ3Ms IGFuZApvbiBFWEVDX0JBQ0tFTkQgcGxhdGZvcm1zIGludGVyYWN0cyBvZGRseSB3aXRoIGVhY2gg Y2hpbGQncwpyZS1leGVjdXRpb24gb2YgcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMu ICBDb25zaWRlcgpyZWplY3RpbmcgaW5zdGFsbGF0aW9uIGFmdGVyIHByb2Nlc3Nfc2hhcmVkX3By ZWxvYWRfbGlicmFyaWVzX2RvbmUKaXMgc2V0LCBzaW1pbGFyIHRvIGhvdyByZWdpc3Rlcl9zeW5j X2hhbmRsZXIoKSBpbiBDRiA2Njg5IGlzCnN0cnVjdHVyZWQuICBPciwgaWYgdGhlIGludGVudCBp cyB0byBhbGxvdyBsYXRlciBpbnN0YWxsYXRpb24sCmRvY3VtZW50IHRoZSBwZXItcHJvY2VzcyBz ZW1hbnRpY3MgY2xlYXJseS4KCjcuIEVycm9yIGxldmVsIGluIHRoZSBjYWxsYmFjay4KCkRhbmls IEFuaXNpbW93IG5vdGVkIGluIDIwMjQgdGhhdCBlcmVwb3J0KEVSUk9SKSBmcm9tIGFuIHJtZ3IK Y2hlY2twb2ludCBjYWxsYmFjayBjYXVzZWQgdGhlIHNlcnZlciB0byBmYWlsIHRvIHN0YXJ0IGVu dGlyZWx5CmFmdGVyIGVuZC1vZi1yZWNvdmVyeSwgbGVhdmluZyB0aGUgYWRtaW4gd2l0aCBubyB3 YXkgZm9yd2FyZC4gIFRoZQpzYW1lIGZhaWx1cmUgbW9kZSBleGlzdHMgZm9yIENoZWNrcG9pbnRf aG9vay4gIFRoZSBkb2MgY29tbWVudAphYm92ZSB0aGUgaG9vayBkZWNsYXJhdGlvbiBzaG91bGQg YWR2aXNlIGV4dGVuc2lvbiBhdXRob3JzIHRvIHVzZQpMT0cgbGV2ZWwgYW5kIHRvIHJldHVybiBv biBmYWlsdXJlLCBuZXZlciBFUlJPUi4gIFRoZSBleGFtcGxlCmFscmVhZHkgZG9lcyB0aGlzIGNv cnJlY3RseTsgdGhlIGFkdmljZSBqdXN0IG5lZWRzIHRvIGJlIGNhcHR1cmVkCndoZXJlIGZ1dHVy ZSBpbXBsZW1lbnRlcnMgd2lsbCByZWFkIGl0LgoKOC4gRG9jdW1lbnRhdGlvbi4KCkZvciBhIG5l dyBwdWJsaWMgaG9vayB3aXRoIHRoaXMgbXVjaCBkaXNjdXNzaW9uIGJlaGluZCBpdCwgYQpoZWFk ZXIgY29tbWVudCBkZXNjcmliaW5nIHRoZSBjb250cmFjdCwgd2hhdCBpcyBzYWZlIHRvIGRvIGlu IHRoZQpjYWxsYmFjaywgd2hpY2ggcGhhc2VzIGFyZSBzdXBwb3J0ZWQgKG9uZSBpbiB2MSwgc2Vl IGl0ZW0gMSksCmJlaGF2aW9yIGF0IHNodXRkb3duIGFuZCBlbmQtb2YtcmVjb3ZlcnkgYW5kIHJl c3RhcnRwb2ludCwgZXJyb3ItCmxldmVsIGV4cGVjdGF0aW9ucywgYW5kIGNoYWluaW5nIGV4cGVj dGF0aW9ucywgd291bGQgZ28gYSBsb25nIHdheQp0b3dhcmQgYW5zd2VyaW5nIHRoZSAid2Ugc2hv dWxkIGRvY3VtZW50IHdoYXQgaXMgbGVnYWwgdG8gZG8gYXQKdGhhdCBwb2ludCIgY29uY2VybiBB bmRyZXMgcmFpc2VkIGluIDIwMjIuICBTR01MIGNvdmVyYWdlIHBhcmFsbGVsCnRvIGN1c3RvbS1y bWdyLnNnbWwgd291bGQgYmUgaWRlYWwgZm9yIGEgZmVhdHVyZSBvZiB0aGlzIGtpbmQsIGJ1dAph dCBtaW5pbXVtIHRoZSBoZWFkZXIgZGVjbGFyYXRpb24gbmVlZHMgbW9yZSB0aGFuIGl0cyBjdXJy ZW50IG9uZQpzZW50ZW5jZS4KCjkuIFRlc3QgbW9kdWxlIHBsYWNlbWVudC4KCk92ZXJsb2FkaW5n IHRlc3RfZHNtX3JlZ2lzdHJ5IHdpdGggMTY1IGxpbmVzIGZvY3VzZWQgb24gdGhlCmNoZWNrcG9p bnQgaG9vayAobG9hZF9odGFiLCBwZ3NzX0NoZWNrcG9pbnQsIGZpbGUgZm9ybWF0IGNvbnN0YW50 cykKYmx1cnMgd2hhdCB0aGF0IG1vZHVsZSB3YXMgY3JlYXRlZCB0byBkZW1vbnN0cmF0ZS4gIENv bnNpZGVyIGEKZGVkaWNhdGVkIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9jaGVja3BvaW50X2hvb2sg d2l0aCBpdHMgb3duCk1ha2VmaWxlLCBtZXNvbi5idWlsZCwgYW5kIFRBUCB0ZXN0LCBzaW1pbGFy IHRvIHRlc3RfY3VzdG9tX3JtZ3JzLgpUaGF0IGFsc28gZ2l2ZXMgdGhlIGV4YW1wbGUgYSBuYXR1 cmFsIGhvbWUgZm9yIGEgY2xlYW5lciBkZW1vIG9mCnRoZSByb3VuZC10cmlwIChpbnNlcnQsIGNo ZWNrcG9pbnQsIGNyYXNoLCBzdGFydCwgdmVyaWZ5KS4KCjEwLiBNaW5vci4KCiAgLSBOYW1pbmc6 IENoZWNrcG9pbnRfaG9vayBpcyBjYXBpdGFsaXplZCBpbmNvbnNpc3RlbnRseSB3aXRoCiAgICBl bWl0X2xvZ19ob29rLCBwbGFubmVyX2hvb2ssIGFuZCBFeGVjdXRvclN0YXJ0X2hvb2sgc3R5bGUu CiAgICBDb25zaWRlciBjaGVja3BvaW50X2hvb2sgZm9yIGNvbnNpc3RlbmN5LgogIC0gVGhlIGNv bW1lbnQgaW4geGxvZy5jIHNheXMgIkFsbG93IGEgcGx1Z2luIHRoYXQgZGVwZW5kcyBvbiBhCiAg ICBjdXN0b20gUk1HUi4uLiIgYnV0IHlvdXIgY292ZXIgbGV0dGVyIGV4cGxpY2l0bHkgZnJhbWVz IHRoZSBob29rCiAgICBhcyBhbiBhbHRlcm5hdGl2ZSB0byByZWdpc3RlcmluZyBhbiBSTUdSLiAg VGhlIGNvbW1lbnQgc2hvdWxkCiAgICBtYXRjaCB0aGUgaW50ZW5kZWQgdXNlLgogIC0gVGhlIHRl c3QgYXNzZXJ0aW9uICJWYWx1ZSBpbnNlcnRlZCBhZnRlciB0aGUgY2hlY2twb2ludCB3YXMKICAg IGxvc3QiIGRlbW9uc3RyYXRlcyB0aGUgY29ycmVjdCBuby1XQUwtbG9nZ2luZyBiZWhhdmlvciwg YnV0IGEKICAgIGNvbW1lbnQgZXhwbGFpbmluZyB0aGF0IHRoaXMgaXMgaW50ZW50aW9uYWwgKGRh dGEgYmV0d2VlbgogICAgY2hlY2twb2ludHMgaXMgbm90IGNyYXNoLXNhZmUgdGhyb3VnaCB0aGlz IGhvb2sgYWxvbmUsIGV4dGVuc2lvbnMKICAgIHRoYXQgbmVlZCBzdHJvbmdlciBndWFyYW50ZWVz IG11c3QgY29tYmluZSB0aGUgaG9vayB3aXRoIGEKICAgIGN1c3RvbSBSTUdSIG9yIHdpdGggV0FM LWxvZ2dlZCByZWNvcmRzKSB3b3VsZCBoZWxwIGEgcmVhZGVyCiAgICB1bmRlcnN0YW5kIHRoZSBp bnRlbmRlZCB1c2UgcGF0dGVybi4KCk92ZXJhbGwgdGhlIGRpcmVjdGlvbiBpcyByaWdodCBhbmQg bXVjaCBiZXR0ZXIgdGhhbiB0aGUgcm1nci1jb3VwbGVkCnZlcnNpb25zLiAgSSB0aGluayB0aGUg bWFpbiB0aGluZ3MgdGhhdCBuZWVkIHRvIGhhcHBlbiBmb3IgdGhpcyB0bwptb3ZlIHRvd2FyZCBj b21taXQgYXJlICgxKSBkZWNpZGUgb24gYW5kIGp1c3RpZnkgdGhlIHBoYXNlZCB2cwpzaW5nbGUt cG9pbnQgbW9kZWwsIHdpdGggcmVmZXJlbmNlIHRvIHRoZSB1c2UgY2FzZXMgZW51bWVyYXRlZAp1 cHRocmVhZCwgYW5kICgyKSB3cml0ZSB0aGUgY29udHJhY3QgZG9jdW1lbnRhdGlvbiB0aGF0IEFu ZHJlcwphc2tlZCBmb3IgdGhyZWUgeWVhcnMgYWdvLiAgVGhlIGltcGxlbWVudGF0aW9uIGRldGFp bHMgaW4gaXRlbXMKNCB0aHJvdWdoIDEwIGFyZSBxdWljayBmaXhlcyBvbmNlIHRoZSBkZXNpZ24g cXVlc3Rpb25zIGFyZQpzZXR0bGVkLgoKVGhhbmtzLApHcmVnCg== --===============8962837935212101220==--