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 1q2YMt-0002PK-U4 for pgsql-hackers@arkaria.postgresql.org; Fri, 26 May 2023 14:24:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q2YMr-0004Yi-Uu for pgsql-hackers@arkaria.postgresql.org; Fri, 26 May 2023 14:24:33 +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 1q2YMr-0004YY-EI for pgsql-hackers@lists.postgresql.org; Fri, 26 May 2023 14:24:33 +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.94.2) (envelope-from ) id 1q2YMm-002HrN-0s for pgsql-hackers@postgresql.org; Fri, 26 May 2023 14:24:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Content-Type:In-Reply-To:Subject:From: References:Cc:To:MIME-Version:Date:Message-ID:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=c+TYqkk76G1ysiHL8ZeUrLTnrcVbzVMtyzpoHP2fl7w=; b=jozrh0fr9mSHUTIgOtqm0w0glT oenOS+ZGZfbSVKAEAJ2PZjJdU9m3GCdLoKxTEy18iGxMCc1mgF9JfLJ+C79xAG6rn+1PhlaGQI8ZF TzISIX3UVNX7Vj8ZmnS+OYM9nC53e/6x5LARGkRfoQWMGOTXlV6gI/5K1AMSbU/MSHfkq7k8hYi/9 HxbXVe5hpF6HMtU9CPibZOFhD9Q2I0E5IcAKIuJ8bxHJZ2cz85RXx/9EQemaXBmylDpybwimS7fY2 cssx15Mfw5gNe9SIth/LnrvmKrEk35PIeITZmJZ2FOgLImH9lff4i5ok6dHCzcLmPognmNtoyT/u1 Auz9LoJw==; Received: from [52.119.84.106] (helo=[192.168.88.177]) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1q2YMj-005hiC-Vz; Fri, 26 May 2023 14:24:28 +0000 Message-ID: <221cf48d-7f5d-120c-e227-2bebdde40ccb@postgresql.org> Date: Fri, 26 May 2023 10:24:21 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Content-Language: en-US To: Nathan Bossart , pgsql-hackers@postgresql.org Cc: mail@joeconway.com References: <20230422000723.GB1527017@nathanxps13> From: "Jonathan S. Katz" Subject: Re: vector search support In-Reply-To: <20230422000723.GB1527017@nathanxps13> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------UmLKEjYs0gEFFTq3c05A3isk" X-Host-Lookup-Failed: Reverse DNS lookup failed for 52.119.84.106 (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------UmLKEjYs0gEFFTq3c05A3isk Content-Type: multipart/mixed; boundary="------------HQOt6a0GoGdpHRK5teY1oId4"; protected-headers="v1" From: "Jonathan S. Katz" To: Nathan Bossart , pgsql-hackers@postgresql.org Cc: mail@joeconway.com Message-ID: <221cf48d-7f5d-120c-e227-2bebdde40ccb@postgresql.org> Subject: Re: vector search support References: <20230422000723.GB1527017@nathanxps13> In-Reply-To: <20230422000723.GB1527017@nathanxps13> --------------HQOt6a0GoGdpHRK5teY1oId4 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGksDQoNCk9uIDQvMjEvMjMgODowNyBQTSwgTmF0aGFuIEJvc3NhcnQgd3JvdGU6DQo+IEF0 dGFjaGVkIGlzIGEgcHJvb2Ytb2YtY29uY2VwdC93b3JrLWluLXByb2dyZXNzIHBhdGNoIHNl dCB0aGF0IGFkZHMNCj4gZnVuY3Rpb25zIGZvciAidmVjdG9ycyIgcmVwcmXRlWVudGVkIHdp dGggb25lLWRpbWVuc2lvbmFsIGZsb2F0OCBhcnJheXMuDQo+IFRoZXNlIGZ1bmN0aW9ucyBt YXkgYmUgdXNlZCBpbiBhIHZhcmlldHkgb2YgYXBwbGljYXRpb25zLCBidXQgSSBhbQ0KPiBw cm9wb3NpbmcgdGhlbSB3aXRoIHRoZSBBSS9NTCB1c2UtY2FzZXMgaW4gbWluZC4gIEkgYW0g cG9zdGluZyB0aGlzIGVhcmx5DQo+IGluIHRoZSB2MTcgY3ljbGUgaW4gaG9wZXMgb2YgZ2F0 aGVyaW5nIGZlZWRiYWNrIHByaW9yIHRvIFBHQ29uLg0KDQpUaGFua3MgZm9yIHByb3Bvc2lu ZyB0aGlzLiBMb29raW5nIGZvcndhcmQgdG8gZGlzY3Vzc2luZyBtb3JlIGluIHBlcnNvbi4g DQpUaGVyZSdzIGRlZmluaXRlbHkgZGVtYW5kIHRvIHVzZSBQb3N0Z3JlU1FMIHRvIHN0b3Jl IC8gc2VhcmNoIG92ZXIgDQp2ZWN0b3IgZGF0YSwgYW5kIEkgZG8gdGhpbmsgd2UgbmVlZCB0 byBpbXByb3ZlIHVwb24gdGhpcyBpbiBjb3JlLg0KDQo+IFdpdGggdGhlIGFjY2Vzc2liaWxp dHkgb2YgQUkvTUwgdG9vbHMgc3VjaCBhcyBsYXJnZSBsYW5ndWFnZSBtb2RlbHMgKExMTXMp LA0KPiB0aGVyZSBoYXMgYmVlbiBhIGRlbWFuZCBmb3Igc3RvcmluZyBhbmQgbWFuaXB1bGF0 aW5nIGhpZ2gtZGltZW5zaW9uYWwNCj4gdmVjdG9ycyBpbiBQb3N0Z3JlU1FMLCBwYXJ0aWN1 bGFybHkgYXJvdW5kIG5lYXJlc3QtbmVpZ2hib3IgcXVlcmllcy4gIE1hbnkNCj4gb2YgdGhl c2UgdmVjdG9ycyBoYXZlIG1vcmUgdGhhbiAxNTAwIGRpbWVuc2lvbnMuIA0KDQoxNTM2IHNl ZW1zIHRvIGJlIGEgcG9wdWxhciBvbmUgZnJvbSBMTE1zLCBidXQgSSd2ZSBiZWVuIHNlZWlu ZyBtdWNoIA0KaGlnaGVyIGRpbWVuc2lvbmFsaXR5ICg4SywgMTZLIGV0YykuIE15IGh1bmNo IGlzIHRoYXQgYXQgYSBwcmFjdGljYWwgDQpsZXZlbCwgYXBwcyBhcmUgZ29pbmcgdG8gZmF2 b3IgZGF0YSBzZXRzIC8gc291cmNlcyB0aGF0IHVzZSBhIHJlZHVjZWQgDQpkaW1lbnNpb25h bGl0eSwgYnV0IEkgd291bGRuJ3QgYmUgc2hvY2tlZCBpZiB3ZSBzZWUgdmVjdG9ycyBvZiBh bGwgc2l6ZXMuDQoNCj4gVGhlIGN1YmUgZXh0ZW5zaW9uIFswXQ0KPiBwcm92aWRlcyBzb21l IG9mIHRoZSBkaXN0YW5jZSBmdW5jdGlvbmFsaXR5IChlLmcuLCB0YXhpY2FiLCBFdWNsaWRl YW4sIGFuZA0KPiBDaGVieXNoZXYpLCBidXQgaXQgaXMgbWlzc2luZyBzb21lIHBvcHVsYXIg ZnVuY3Rpb25zIChlLmcuLCBjb3NpbmUNCj4gc2ltaWxhcml0eSwgZG90IHByb2R1Y3QpLCBh bmQgaXQgaXMgbGltaXRlZCB0byAxMDAgZGltZW5zaW9ucy4gIFdlIGNvdWxkDQo+IGV4dGVu ZCBjdWJlIHRvIHN1cHBvcnQgbW9yZSBkaW1lbnNpb25zLCBidXQgdGhpcyB3b3VsZCByZXF1 aXJlIHJld29ya2luZw0KPiBpdHMgaW5kZXhpbmcgY29kZSBhbmQgZmlsbGluZyBpbiBnYXBz IGJldHdlZW4gdGhlIGN1YmUgZGF0YSB0eXBlIGFuZCB0aGUNCj4gYXJyYXkgdHlwZXMuICBG b3Igc29tZSBwcmV2aW91cyBkaXNjdXNzaW9uIGFib3V0IHVzaW5nIHRoZSBjdWJlIGV4dGVu c2lvbg0KPiBmb3IgdGhpcyBraW5kIG9mIGRhdGEsIHNlZSBbMV0uDQoNCkkndmUgc3RhcmVk IGF0IHRoZSBjdWJlIGNvZGUgcXVpdGUgYSBiaXQgb3ZlciB0aGUgcGFzdCBmZXcgbW9udGhz LiBUaGVyZSANCmFyZSBkZWZpbml0ZWx5IHNvbWUgY2xldmVyIG1ldGhvZHMgaW4gaXQgZm9y IGhhbmRsaW5nIHNlYXJjaGVzIG92ZXIgDQoobm93KSBsb3dlciBkaW1lbnNpb25hbGl0eSBk YXRhLCBidXQgSSBnZW5lcmFsbHkgYWdyZWUgd2Ugc2hvdWxkIGFkZCANCmZ1bmN0aW9uYWxp dHkgdGhhdCdzIHNwZWNpZmljIHRvIEFSUkFZIHR5cGVzLg0KDQpJJ2xsIHN0YXJ0IG1ha2lu ZyBzcGVjaWZpYyBjb21tZW50cyBvbiB0aGUgcGF0Y2hlcyBiZWxvdy4NCg0KDQo+IGZsb2F0 OFtdIGlzIHdlbGwtc3VwcG9ydGVkIGFuZCBhbGxvd3MgZm9yIGVmZmVjdGl2ZWx5IHVubGlt aXRlZCBkaW1lbnNpb25zDQo+IG9mIGRhdGEuICBmbG9hdDggbWF0Y2hlcyB0aGUgY29tbW9u IG91dHB1dCBmb3JtYXQgb2YgbWFueSBBSSBlbWJlZGRpbmdzLA0KPiBhbmQgaXQgYWxsb3dz IHVzIG9yIGV4dGVuc2lvbnMgdG8gaW1wbGVtZW50IGluZGV4aW5nIG1ldGhvZHMgYXJvdW5k IHRoZXNlDQo+IGZ1bmN0aW9ucy4gIFRoaXMgcGF0Y2ggc2V0IGRvZXMgbm90IHlldCBjb250 YWluIGluZGV4aW5nIHN1cHBvcnQsIGJ1dCB3ZQ0KPiBhcmUgZXhwbG9yaW5nIHVzaW5nIEdp U1Qgb3IgR0lOIGZvciB0aGUgdXNlLWNhc2VzIGluIHF1ZXN0aW9uLiAgSXQgbWlnaHQNCj4g YWxzbyBiZSBkZXNpcmFibGUgdG8gYWRkIHN1cHBvcnQgZm9yIG90aGVyIGxpbmVhciBhbGdl YnJhIG9wZXJhdGlvbnMgKGUuZy4sDQo+IG9wZXJhdGlvbnMgb24gbWF0cmljZXMpLiAgVGhl IGF0dGFjaGVkIHBhdGNoZXMgbGlrZWx5IG9ubHkgc2NyYXRjaCB0aGUNCj4gc3VyZmFjZSBv ZiB0aGUgInZlY3RvciBzZWFyY2giIHVzZS1jYXNlLg0KPiANCj4gVGhlIHBhdGNoIHNldCBp cyBicm9rZW4gdXAgYXMgZm9sbG93czoNCj4gDQo+ICAgKiAwMDAxIGRvZXMgc29tZSBtaW5v ciByZWZhY3RvcmluZyBvZiBkc3FydCgpIGluIHByZXBhcmF0aW9uIGZvciAwMDAyLg0KDQpU aGlzIHNlZW1zIHByZXR0eSBiZW5pZ24gYW5kIG1heSBhcyB3ZWxsIGRvIGFueXdheSwgdGhv dWdoIHdlIG1heSBuZWVkIA0KdG8gZXhwYW5kIG9uIGl0IGJhc2VkIG9uIGNvbW1lbnRzIG9u IG5leHQgcGF0Y2guIFF1ZXN0aW9uIG9uOg0KDQorc3RhdGljIGlubGluZSBmbG9hdDgNCitm bG9hdDhfc3FydChjb25zdCBmbG9hdDggdmFsKQ0KK3sNCisJZmxvYXQ4CQlyZXN1bHQ7DQor DQorCWlmICh1bmxpa2VseSh2YWwgPCAwKSkNCg0KU2hvdWxkIHRoaXMgYmU6DQoNCiAgIGlm ICh1bmxpa2VseShmbG9hdDhfbHQodmFsLCAwKSkNCg0KU2ltaWxhcmx5Og0KDQorCWlmICh1 bmxpa2VseShyZXN1bHQgPT0gMC4wKSAmJiB2YWwgIT0gMC4wKQ0KDQogICBpZiAodW5saWtl bHkoZmxvYXQ4X2VxKHJlc3VsdCwwLjApKSAmJiBmbG9hdDhfbmUodmFsLCAwLjApKQ0KDQoN Cj4gICAqIDAwMDIgYWRkcyBzZXZlcmFsIHZlY3Rvci1yZWxhdGVkIGZ1bmN0aW9ucywgaW5j bHVkaW5nIGRpc3RhbmNlIGZ1bmN0aW9ucw0KPiAgICAgYW5kIGEga21lYW5zKysgaW1wbGVt ZW50YXRpb24uDQoNCk5pY2UuIEdlbmVyYWxseSBJIGxpa2UgdGhpcyBwYXRjaC4gVGhlIGZ1 bmN0aW9ucyBzZWVtcyB0byBtYXRjaCB0aGUgbW9zdCANCmNvbW1vbmx5IHVzZWQgdmVjdG9y IGRpc3RhbmNlIGZ1bmN0aW9ucyBJJ20gc2VlaW5nLCBhbmQgaXQgaW5jbHVkZXMgYSANCmZ1 bmN0aW9uIHRoYXQgY2FuIGxldCBhIHVzZXIgc3BlY2lmeSBhIGNvbnN0cmFpbnQgb24gYW4g QVJSQVkgY29sdW1uIHNvIA0KdGhleSBjYW4gZW5zdXJlIGl0IGNvbnRhaW5zIHZhbGlkIHZl Y3RvcnMuDQoNCldoaWxlIEkgdGhpbmsgc3VwcG9ydGluZyBmbG9hdDggaXMgdXNlZnVsLCBJ J3ZlIGJlZW4gc2VlaW5nIGEgbWl4IG9mIA0KZGF0YSB0eXBlcyBpbiB0aGUgZGlmZmVyZW50 IEFJL01MIHZlY3RvciBlbWJlZGRpbmdzLCBpLmUuIGZsb2F0NCAvIA0KZmxvYXQ4LiBBZGRp dGlvbmFsbHksIGl0IGNvdWxkIGJlIGhlbHBmdWwgdG8gc3VwcG9ydCBpbnRlZ2VycyBhcyB3 ZWxsLCANCnBhcnRpY3VsYXJseSBiYXNlZCBvbiBzb21lIG9mIHRoZSBkaW1lbnNpb25hbGl0 eSByZWR1Y3Rpb24gdGVjaG5pcXVlcyANCkkndmUgc2Vlbi4gSSB0aGluayB0aGlzIGhvbGRz IGRvdWJsZSB0cnVlIGZvciBrbWVhbnMsIHdoaWNoIGlzIG9mdGVuIA0KdXNlZCBpbiB0aG9z ZSBjYWxjdWxhdGlvbnMuDQoNCkknZCBzdWdnZXN0IGVuc3VyZSB0aGVzZSBmdW5jdGlvbnMg c3VwcG9ydDoNCg0KKiBmbG9hdDQsIGZsb2F0OA0KKiBpbnQyLCBpbnQ0LCBpbnQ4DQoNClRo ZXJlJ3MgcHJvYmFibHkgc29tZSBudWFuY2Ugb2YgaG93IHdlIGRvY3VtZW50IHRoaXMgdG9v LCBnaXZlbiBvdXIgDQpkb2NzWzFdIHNwZWNpZnkgcmVhbCAvIGRvdWJsZSBwcmVjaXNpb24s IGFuZCBzbWFsbGludCwgaW50LCBiaWdpbnQuDQoNCihTZXBhcmF0ZWx5LCB3ZSBtZW50aW9u IHRoZSBpbnQyL2ludDQvaW50OCBhbGlhc2VzIGluIFsxXSwgYnV0IG5vdCANCmZsb2F0NC9m bG9hdDgsIHdoaWNoIHNlZW1zIGxpa2UgYSBzbWFsbCBhZGRpdGlvbiB3ZSBzaG91bGQgbWFr ZSkuDQoNCklmIHlvdSBhZ3JlZSwgSSdkIGJlIGhhcHB5IHRvIHJldmlldyBtb3JlIGNsb3Nl bHkgb25jZSB0aGF0J3MgaW1wbGVtZW50ZWQuDQoNCk90aGVyIHRoaW5nczoNCg0KKiBrbWVh bnMgLS0gd2UncmUgdXNpbmcga21lYW5zKyssIHNob3VsZCB0aGUgZnVuY3Rpb24gbmFtZSBy ZWZsZWN0IHRoYXQ/IA0KRG8geW91IHRoaW5rIHdlIGNvdWxkIGVuZCB1cCB3aXRoIGEgZGlm ZmVyZW50IGttZWFucyBhbGdvIGluIHRoZSBmdXR1cmU/IA0KTWF5YmUgd2UgYWxsb3cgdGhl IHVzZXIgdG8gc3BlY2lmeSB0aGUga21lYW5zIGFsZ28gZnJvbSB0aGUgZnVuY3Rpb24gDQpu YW1lICh3aXRoIHRoZSBkZWZhdWx0IC8gb25seSBvcHRpb24gdG9kYXkgYmVpbmcga21lYW5z KyspPw0KDQo+ICAgKiAwMDAzIGFkZHMgc3VwcG9ydCBmb3Igb3B0aW9uYWxseSB1c2luZyB0 aGUgT3BlbkJMQVMgbGlicmFyeSwgd2hpY2ggaXMgYW4NCj4gICAgIGltcGxlbWVudGF0aW9u IG9mIHRoZSBCYXNpYyBMaW5lYXIgQWxnZWJyYSBTdWJwcm9ncmFtcyBbMl0NCj4gICAgIHNw ZWNpZmljYXRpb24uICBCYXNpYyB0ZXN0aW5nIHdpdGggdGhpcyBsaWJyYXJ5IHNob3dlZCBh IHNtYWxsDQo+ICAgICBwZXJmb3JtYW5jZSBib29zdCwgYWx0aG91Z2ggcGVyaGFwcyBub3Qg ZW5vdWdoIHRvIGp1c3RpZnkgZ2l2aW5nIHRoaXMNCj4gICAgIHBhdGNoIHNlcmlvdXMgY29u c2lkZXJhdGlvbi4NCg0KSXQnZCBiZSBnb29kIHRvIHNlZSB3aGF0IGVsc2Ugd2UgY291bGQg dXNlIE9wZW5CTEFTIHdpdGguIE1heWJlIHRoYXQncyBhIA0KZGlzY3Vzc2lvbiBmb3IgUEdD b24uDQoNCj4gT2YgY291cnNlLCB0aGVyZSBhcmUgbWFueSBvcGVuIHF1ZXN0aW9ucy4gIEZv ciBleGFtcGxlLCBzaG91bGQgUG9zdGdyZVNRTA0KPiBzdXBwb3J0IHRoaXMgc3R1ZmYgb3V0 LW9mLXRoZS1ib3ggaW4gdGhlIGZpcnN0IHBsYWNlPyAgDQoNClllcyA6KSBPbmUgY2FuIGFy Z3VlIGFuIGV4dGVuc2lvbiAoYW5kIHBndmVjdG9yWzJdIGFscmVhZHkgZG9lcyBhIGxvdCAN CmhlcmUpLCBidXQgSSB0aGluayBuYXRpdmUgc3VwcG9ydCB3b3VsZCBiZSBnZW5lcmFsbHkg aGVscGZ1bCBmb3IgdXNlcnMuIA0KSXQgZG9lcyByZW1vdmUgdGhlIGZyaWN0aW9uIG9mIHN0 YXJ0aW5nIG91dC4NCg0KVGhlcmUncyBhbHNvIGFuIGludGVyZXN0aW5nIHVzZS1jYXNlIGRv d250aHJlYWQgKEknbGwgY29tbWVudCBvbiB0aGF0IA0KdGhlcmUpIHRoYXQgZGVtb25zdHJh dGVzIHdoeSBpdCdzIGhlbHBmdWwgdG8gaGF2ZSB2YXJpYWJpbGl0eSBpbiB2ZWN0b3IgDQpz aXplIGluIGFuIEFSUkFZIGNvbHVtbiwgd2hpY2ggaXMgYW4gYXJndW1lbnQgZm9yIHN1cHBv cnRpbmcgaXQgdGhlcmUuDQoNCj4gQW5kIHNob3VsZCB3ZQ0KPiBpbnRyb2R1Y2UgYSB2ZWN0 b3IgZGF0YSB0eXBlIG9yIFNRTCBkb21haW5zIGZvciB0cmVhdGluZyBmbG9hdDhbXSBhcw0K PiB2ZWN0b3JzPyAgSU1ITyB0aGVzZSB2ZWN0b3Igc2VhcmNoIHVzZS1jYXNlcyBhcmUgYW4g ZXhjaXRpbmcgb3Bwb3J0dW5pdHkNCj4gZm9yIHRoZSBQb3N0Z3JlU1FMIHByb2plY3QsIHNv IEkgYW0gZWFnZXIgdG8gaGVhciB3aGF0IGZvbGtzIHRoaW5rLg0KDQpIYXZpbmcgYSB2ZWN0 b3IgdHlwZSBjb3VsZCBnaXZlIHVzIHNvbWUgYWR2YW50YWdlcyBpbiBob3cgd2UgDQpzdG9y ZS9zZWFyY2ggb3ZlciB0aGUgZGF0YS4gRm9yIGV4YW1wbGUsIHdlIHBlcmZvcm0gdmFsaWRh dGlvbiBjaGVja3MgdXAgDQpmcm9udCwgbm9ybWFsaXplIHRoZSB2ZWN0b3IsIGV0Yy4gYW5k IGFueSBpbmRleCBpbXBsZW1lbnRhdGlvbnMgd2lsbCANCmhhdmUgbGVzcyB3b3JrIHRvIGRv IG9uIHRoYXQgZnJvbnQuIFdlIG1heSBhbHNvIGJlIGFibGUgdG8gZ2l2ZSBtb3JlIA0Kb3B0 aW9ucyB0byB0dW5lIGhvdyB0aGUgdmVjdG9yIGlzIHN0b3JlZCwgZS5nLiBwZXJmb3JtIGlu dmVyc2lvbiBvbiANCmluc2VydC91cGRhdGUuDQoNCkFnYWluLCBpdCdzIGEgZmFpciBhcmd1 bWVudCB0aGF0IHRoaXMgY2FuIGJlIGRvbmUgaW4gYW4gZXh0ZW5zaW9uLCBidXQgDQpoaXN0 b3JpY2FsbHkgd2UndmUgc2VlbiByZWR1Y2VkIGZyaWN0aW9uIHdoZW4gd2UgYWRkIHN1cHBv cnQgaW4gY29yZS4gDQpJdCdkIGFsc28gbWFrZSBidWlsZGluZyBhZGRpdGlvbmFsIGZ1bmN0 aW9uYWxpdHkgZWFzaWVyLCB3aGV0aGVyIGluIGNvcmUgDQpvciBhbiBleHRlbnNpb24uDQoN ClRoYW5rcywNCg0KSm9uYXRoYW4NCg0KWzFdIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3Jn L2RvY3MvY3VycmVudC9kYXRhdHlwZS1udW1lcmljLmh0bWwNClsyXSBodHRwczovL2dpdGh1 Yi5jb20vcGd2ZWN0b3IvcGd2ZWN0b3INCg== --------------HQOt6a0GoGdpHRK5teY1oId4-- --------------UmLKEjYs0gEFFTq3c05A3isk Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEE+oS2la8r95ogZD/x8QSccp8cZScFAmRwwRUFAwAAAAAACgkQ8QSccp8cZSfF jBAAhkNf2HyZbJqBfBB1pRMDzyEU4DCQ/6g7j0zXHVGd0sHOa7ZZakMKL956tc8XGD+LcG30GS0O wSIuLkrK4o5bQAQYjLT5lDeSfREfIjRKILScNG4x0PL4UpVilwFNBTs9EXiqM2AeatA8ujwQevtT XmHf7rjuIKEDei+1sJZO27FKwpGJs1PGyPY7VV7cxjKnHEWZC73kLGfkbfGKt8q1UsP+/gtpaP2+ lJIjyekJdwuuAwNKwxB44kNYMYFYZ5yg9slTdh/MexsUoNotxMTFh9KLHd7o2Mx0cA7QghgOt6wa P6eW+EvPT1SwER0j/+6PfmhjM5bB6qTD8/GyLXR4Rj4IoHVdvM/DOtrQxWxObAvE3gDGkM77DR5m UGimTkxDdSdVvsfyMiNxizeiVG5rWVSzI5athr0TdvWmBKG6h82WYSoHneJ+y+oCipdDG90NUB8L /LxVQZBtknCBpJfj40ouetW7Fj5ampZbI4zXmgvE7rIjB3aKnd1u4XaYJWxKrNdpcMYHdR4e63rD CLphcI4GaQzOMr7gNktitMd4ErKHrDUn+5zhLF5yFU+V835a6o7/5RVuxdhaAeoIdPATgM+iDfeJ pxKKE9vRMUs5KGF8OEt1+ThYWJXbFA+DapZhBeKDZiDcl9Qw9RUogRtvetCtREZ1Ve4P3OAPfadL eAg= =M3uU -----END PGP SIGNATURE----- --------------UmLKEjYs0gEFFTq3c05A3isk--