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 1kBBTn-0000Cd-ET for pgsql-docs@arkaria.postgresql.org; Thu, 27 Aug 2020 06:33:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kBBTk-0003Ve-KW for pgsql-docs@arkaria.postgresql.org; Thu, 27 Aug 2020 06:33:44 +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 1kBBTi-0003VD-SJ for pgsql-docs@lists.postgresql.org; Thu, 27 Aug 2020 06:33:44 +0000 Received: from wout4-smtp.messagingengine.com ([64.147.123.20]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kBBTZ-0002Zb-Qb; Thu, 27 Aug 2020 06:33:42 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id AA5391D8; Thu, 27 Aug 2020 02:33:29 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Thu, 27 Aug 2020 02:33:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paquier.xyz; h= date:from:to:cc:subject:message-id:references:mime-version :content-type:in-reply-to; s=fm2; bh=1+RS5+QYlp4RavWxakZn1ipWyWz /Ukr2+Mcq9hjfGw8=; b=E4vttt0vI37bh+fmwG+mWGpLRWGUxU8A7WV3IPf9EvK CcyQ73v7IkqcXfgBEcDK+D+HXrb8SfhTeXz90IxT7i51Dfe0OQlRGSZdoQ819PFx l+eZpBM3LL3Wz/2h2pEFWmqn33XMHTJ8ULBs038b6h82xJHTmbwe2/FH7QgBWlDB iP+sO7ziNXkF6Tugq4qGQ49avF57YdPC8tgb34in2OirCevZdNHNKR3lJLtC8Bzh PYihxwNuUxLJ/TtZ+PykXY/TowxLYYm2OLMQ+/72WCiB83t6Ibf3Vk3R2AdH4RjR eDtOyqIRopnZkKNh0OFpPz0mhRefziauPtxpbuMZUnw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=1+RS5+ QYlp4RavWxakZn1ipWyWz/Ukr2+Mcq9hjfGw8=; b=glZT1aYr6o3/kYgVuqy/BX EW14AESMUFvA47XkaDkTUVkC0gON7n/S9lZDBpINk1vxbLBXQpXqOCaFDOsxI/Zd 1TqtqEBkMGzM5tHIz2XaV+zxM/MNNGaqMDTa/KnXqbu0HYi/cn8C3ca8fu78SRYe 7N28GqBTGpiDTmCciHZp5yaAAHEzpEXjzLwJb1p0Btytj2pmusowT9XFKwusWmHT xGT7kXjdXqD5ZKFmgBc+sFH6AkAGfl6VGfFhOyGypMYiKv1HwAKrR+r5uChcIGS/ sfzFn2RifBCmFoODZaqcFyHUwHKIn2PrUuw6csRhLeRVCgmk8tLnBgqWhEN49GHA == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedruddvfedguddtlecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enfghrlhcuvffnffculdejtddmnecujfgurhepfffhvffukfhfgggtuggjsehgtderredt tddvnecuhfhrohhmpefoihgthhgrvghlucfrrghquhhivghruceomhhitghhrggvlhesph grqhhuihgvrhdrgiihiieqnecuggftrfgrthhtvghrnhepvdegudeuhfdtueeltedtveej heehieevueeigeelteegleejleeiueeiheegvefhnecukfhppeduuddurddutddvrdduke dtrddukeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho mhepmhhitghhrggvlhesphgrqhhuihgvrhdrgiihii X-ME-Proxy: Received: from paquier.xyz (ee0822lan1.rev.em-net.ne.jp [111.102.180.185]) by mail.messagingengine.com (Postfix) with ESMTPA id D403E3060272; Thu, 27 Aug 2020 02:33:25 -0400 (EDT) Date: Thu, 27 Aug 2020 15:33:22 +0900 From: Michael Paquier To: Tom Lane Cc: Alvaro Herrera , Bruce Momjian , osdba , pgsql-docs@postgresql.org, jkatz@postgresql.org Subject: Re: Document "59.2. Built-in Operator Classes" have a clerical error? Message-ID: <20200827063126.GO2017@paquier.xyz> References: <20200826225837.GA3099@alvherre.pgsql> <2985974.1598483949@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="LyciRD1jyfeSSjG0" Content-Disposition: inline In-Reply-To: <2985974.1598483949@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --LyciRD1jyfeSSjG0 Content-Type: multipart/mixed; boundary="VS++wcV0S1rZb1Fb" Content-Disposition: inline --VS++wcV0S1rZb1Fb Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Wed, Aug 26, 2020 at 07:19:09PM -0400, Tom Lane wrote: > With one eye on the PDF width issue, I propose that we not draw > the distinction, but just list all the relevant operators for each > opclass (its native ones, plus the applicable "loose" operators). > Then we only need two columns, opclass and operators. Indeed, removing the types makes sense if we list them with the operators. I have been looking at your suggestions, and adding a space before the first parenthesis where the types are listed sounds good to me, but I am not sure that it is a good idea to add spaces between each type. Looking at the pdf produced, I think that we should also drop entirely colspec for the BRIN table as it gets much small in width once the data type column is removed. I also looked at rowsep for the PDF, and I tend to prefer the version where we separate each cell for the operator, as a matter of readability. This leads me to the updated version attached. BRIN has 29 different opclasses, visibly. -- Michael --VS++wcV0S1rZb1Fb Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="doc-builtin-ops-v2.patch" Content-Transfer-Encoding: quoted-printable diff --git a/doc/src/sgml/brin.sgml b/doc/src/sgml/brin.sgml index b9d596e3c4..c3298ed92b 100644 --- a/doc/src/sgml/brin.sgml +++ b/doc/src/sgml/brin.sgml @@ -120,354 +120,293 @@ LOG: request for BRIN range summarization for inde= x "brin_wi_idx" page 128 was =20 Built-in <acronym>BRIN</acronym> Operator Classes - - - - + Name - Indexed Data Type Indexable Operators - int8_minmax_ops - bigint - - < - <=3D - =3D - >=3D - > - + range_inclusion_ops + =3D (anyrange,anyrange) + < (anyrange,anyrange) + <=3D (anyrange,anyrange) + >=3D (anyrange,anyrange) + > (anyrange,anyrange) + && (anyrange,anyrange)<= /row> + @> (anyrange,anyelement) + @> (anyrange,anyrange) + <@ (anyrange,anyrange) + << (anyrange,anyrange) + >> (anyrange,anyrange) + &< (anyrange,anyrange) + &> (anyrange,anyrange) + -|- (anyrange,anyrange) + - bit_minmax_ops - bit - - < - <=3D - =3D - >=3D - > - + bit_minmax_ops + =3D (bit,bit) + < (bit,bit) + > (bit,bit) + <=3D (bit,bit) + >=3D (bit,bit) + - varbit_minmax_ops - bit varying - - < - <=3D - =3D - >=3D - > - + varbit_minmax_ops + =3D (varbit,varbit) + < (varbit,varbit) + > (varbit,varbit) + <=3D (varbit,varbit) + >=3D (varbit,varbit) + - box_inclusion_ops - box - - << - &< - && - &> - >> - ~=3D - @> - <@ - &<| - <<| - |>> - |&> - + box_inclusion_ops + @> (box,point) + << (box,box) + &< (box,box) + &> (box,box) + >> (box,box) + <@ (box,box) + @> (box,box) + ~=3D (box,box) + && (box,box) + <<| (box,box) + &<| (box,box) + |&> (box,box) + |>> (box,box) + - bytea_minmax_ops - bytea - - < - <=3D - =3D - >=3D - > - + bpchar_minmax_ops + =3D (character,character) + < (character,character) + <=3D (character,character) + > (character,character) + >=3D (character,character) + - bpchar_minmax_ops - character - - < - <=3D - =3D - >=3D - > - + bytea_minmax_ops + =3D (bytea,bytea) + < (bytea,bytea) + <=3D (bytea,bytea) + > (bytea,bytea) + >=3D (bytea,bytea) + - char_minmax_ops - "char" - - < - <=3D - =3D - >=3D - > - + char_minmax_ops + =3D ("char","char") + < ("char","char") + <=3D ("char","char") + > ("char","char") + >=3D ("char","char") + - date_minmax_ops - date - - < - <=3D - =3D - >=3D - > - + date_minmax_ops + =3D (date,date) + < (date,date) + <=3D (date,date) + > (date,date) + >=3D (date,date) + - float8_minmax_ops - double precision - - < - <=3D - =3D - >=3D - > - + float4_minmax_ops + =3D (float4,float4) + < (float4,float4) + > (float4,float4) + <=3D (float4,float4) + >=3D (float4,float4) + - inet_minmax_ops - inet - - < - <=3D - =3D - >=3D - > - + float8_minmax_ops + =3D (float8,float8) + < (float8,float8) + <=3D (float8,float8) + > (float8,float8) + >=3D (float8,float8) + - network_inclusion_ops - inet - - && - >>=3D - <<=3D - =3D - >> - << - + inet_inclusion_ops + << (inet,inet) + <<=3D (inet,inet) + >> (inet,inet) + >>=3D (inet,inet) + =3D (inet,inet) + && (inet,inet) + - int4_minmax_ops - integer - - < - <=3D - =3D - >=3D - > - + inet_minmax_ops + =3D (inet,inet) + < (inet,inet) + <=3D (inet,inet) + > (inet,inet) + >=3D (inet,inet) + - interval_minmax_ops - interval - - < - <=3D - =3D - >=3D - > - + int2_minmax_ops + =3D (int2,int2) + < (int2,int2) + > (int2,int2) + <=3D (int2,int2) + >=3D (int2,int2) + - macaddr_minmax_ops - macaddr - - < - <=3D - =3D - >=3D - > - + int4_minmax_ops + =3D (int4,int4) + < (int4,int4) + > (int4,int4) + <=3D (int4,int4) + >=3D (int4,int4) + - macaddr8_minmax_ops - macaddr8 - - < - <=3D - =3D - >=3D - > - + int8_minmax_ops + =3D (bigint,bigint) + < (bigint,bigint) + > (bigint,bigint) + <=3D (bigint,bigint) + >=3D (bigint,bigint) + - name_minmax_ops - name - - < - <=3D - =3D - >=3D - > - + interval_minmax_ops + =3D (interval,interval) + < (interval,interval) + <=3D (interval,interval) + > (interval,interval) + >=3D (interval,interval) + - numeric_minmax_ops - numeric - - < - <=3D - =3D - >=3D - > - + macaddr_minmax_ops + =3D (macaddr,macaddr) + < (macaddr,macaddr) + <=3D (macaddr,macaddr) + > (macaddr,macaddr) + >=3D (macaddr,macaddr) + - pg_lsn_minmax_ops - pg_lsn - - < - <=3D - =3D - >=3D - > - + macaddr8_minmax_ops + =3D (macaddr8,macaddr8) + < (macaddr8,macaddr8) + <=3D (macaddr8,macaddr8) + > (macaddr8,macaddr8) + >=3D (macaddr8,macaddr8) + - oid_minmax_ops - oid - - < - <=3D - =3D - >=3D - > - + name_minmax_ops + =3D (name,name) + < (name,name) + <=3D (name,name) + > (name,name) + >=3D (name,name) + - range_inclusion_ops - any range type - - << - &< - && - &> - >> - @> - <@ - -|- - =3D - < - <=3D - =3D - > - >=3D - + numeric_minmax_ops + =3D (numeric,numeric) + < (numeric,numeric) + <=3D (numeric,numeric) + > (numeric,numeric) + >=3D (numeric,numeric) + - float4_minmax_ops - real - - < - <=3D - =3D - >=3D - > - + oid_minmax_ops + =3D (oid,oid) + < (oid,oid) + > (oid,oid) + <=3D (oid,oid) + >=3D (oid,oid) + - int2_minmax_ops - smallint - - < - <=3D - =3D - >=3D - > - + pg_lsn_minmax_ops + =3D (pg_lsn,pg_lsn) + < (pg_lsn,pg_lsn) + > (pg_lsn,pg_lsn) + <=3D (pg_lsn,pg_lsn) + >=3D (pg_lsn,pg_lsn) + - text_minmax_ops - text - - < - <=3D - =3D - >=3D - > - + text_minmax_ops + =3D (text,text) + < (text,text) + <=3D (text,text) + > (text,text) + >=3D (text,text) + - tid_minmax_ops - tid - - < - <=3D - =3D - >=3D - > - + tid_minmax_ops + =3D (tid,tid) + < (tid,tid) + > (tid,tid) + <=3D (tid,tid) + >=3D (tid,tid) + - timestamp_minmax_ops - timestamp without time zone - - < - <=3D - =3D - >=3D - > - + timestamp_minmax_ops + =3D (timestamp,timestamp) + < (timestamp,timestamp) + <=3D (timestamp,timestamp) + > (timestamp,timestamp) + >=3D (timestamp,timestamp) + - timestamptz_minmax_ops - timestamp with time zone - - < - <=3D - =3D - >=3D - > - + timestamptz_minmax_ops + =3D (timestamptz,timestamptz) + < (timestamptz,timestamptz)<= /row> + <=3D (timestamptz,timestamptz) + > (timestamptz,timestamptz)<= /row> + >=3D (timestamptz,timestamptz) + - time_minmax_ops - time without time zone - - < - <=3D - =3D - >=3D - > - + time_minmax_ops + =3D (time,time) + < (time,time) + <=3D (time,time) + > (time,time) + >=3D (time,time) + - timetz_minmax_ops - time with time zone - - < - <=3D - =3D - >=3D - > - + timetz_minmax_ops + =3D (timetz,timetz) + < (timetz,timetz) + <=3D (timetz,timetz) + > (timetz,timetz) + >=3D (timetz,timetz) + - uuid_minmax_ops - uuid - - < - <=3D - =3D - >=3D - > - + uuid_minmax_ops + =3D (uuid,uuid) + < (uuid,uuid) + > (uuid,uuid) + <=3D (uuid,uuid) + >=3D (uuid,uuid) +
diff --git a/doc/src/sgml/gin.sgml b/doc/src/sgml/gin.sgml index 2d862669c3..4107a86cb0 100644 --- a/doc/src/sgml/gin.sgml +++ b/doc/src/sgml/gin.sgml @@ -75,53 +75,62 @@ =20 Built-in <acronym>GIN</acronym> Operator Classes - + Name - Indexed Data Type Indexable Operators - array_ops - anyarray - - && - <@ - =3D - @> - + array_ops + && (anyarray,anyarray) - jsonb_ops - jsonb - - ? - ?& - ?| - @> - @? - @@ - + @> (anyarray,anyarray) - jsonb_path_ops - jsonb - - @> - @? - @@ - + <@ (anyarray,anyarray) - tsvector_ops - tsvector - - @@ - @@@ - + =3D (anyarray,anyarray) + + + jsonb_ops + @> (jsonb,jsonb) + + + @? (jsonb,jsonpath) + + + @@ (jsonb,jsonpath) + + + ? (jsonb,text) + + + ?| (jsonb,text[]) + + + ?& (jsonb,text[]) + + + jsonb_path_ops + @> (jsonb,jsonb) + + + @? (jsonb,jsonpath) + + + @@ (jsonb,jsonpath) + + + tsvector_ops + @@ (tsvector,tsquery) + + + @@@ (tsvector,tsquery) diff --git a/doc/src/sgml/gist.sgml b/doc/src/sgml/gist.sgml index a505815f4e..2ee06585d1 100644 --- a/doc/src/sgml/gist.sgml +++ b/doc/src/sgml/gist.sgml @@ -53,157 +53,126 @@ =20
Built-in <acronym>GiST</acronym> Operator Classes - + Name - Indexed Data Type Indexable Operators Ordering Operators - box_ops - box - - && - &> - &< - &<| - >> - << - <<| - <@ - @> - @ - |&> - |>> - ~ - ~=3D - - - <-> - + box_ops + << (box,box) + <-> (box,point) + &< (box,box) + && (box,box) + &> (box,box) + >> (box,box) + ~=3D (box,box) + @> (box,box) + <@ (box,box) + &<| (box,box) + <<| (box,box) + |>> (box,box) + |&> (box,box) + ~ (box,box) + @ (box,box) + - circle_ops - circle - - && - &> - &< - &<| - >> - << - <<| - <@ - @> - @ - |&> - |>> - ~ - ~=3D - - - <-> - + circle_ops + << (circle,circle) + <-> (circle,point) + &< (circle,circle) + &> (circle,circle) + >> (circle,circle) + <@ (circle,circle) + @> (circle,circle) + ~=3D (circle,circle) + && (circle,circle) + |>> (circle,circle) + <<| (circle,circle) + &<| (circle,circle) + |&> (circle,circle) + @ (circle,circle) + ~ (circle,circle) + - inet_ops - inet, cidr - - && - >> - >>=3D - > - >=3D - <> - << - <<=3D - < - <=3D - =3D - - - + inet_ops + << (inet,inet) + + <<=3D (inet,inet) + >> (inet,inet) + >>=3D (inet,inet) + =3D (inet,inet) + <> (inet,inet) + < (inet,inet) + <=3D (inet,inet) + > (inet,inet) + >=3D (inet,inet) + && (inet,inet) + - point_ops - point - - >> - >^ - << - <@ - <@ - <@ - <^ - ~=3D - - - <-> - + point_ops + >^ (point,point) + <-> (point,point) + << (point,point) + >> (point,point) + <^ (point,point) + ~=3D (point,point) + <@ (point,box) + <@ (point,polygon) + <@ (point,circle) + - poly_ops - polygon - - && - &> - &< - &<| - >> - << - <<| - <@ - @> - @ - |&> - |>> - ~ - ~=3D - - - <-> - + poly_ops + << (polygon,polygon) + <-> (polygon,point)<= /entry> + &< (polygon,polygon) + &> (polygon,polygon) + >> (polygon,polygon) + <@ (polygon,polygon) + @> (polygon,polygon) + ~=3D (polygon,polygon) + && (polygon,polygon) + <<| (polygon,polygon) + &<| (polygon,polygon) + |&> (polygon,polygon) + |>> (polygon,polygon) + @ (polygon,polygon) + ~ (polygon,polygon) + - range_ops - any range type - - && - &> - &< - >> - << - <@ - -|- - =3D - @> - @> - - - + range_ops + =3D (anyrange,anyrange) + + && (anyrange,anyrange)= + @> (anyrange,anyelement) + @> (anyrange,anyrange) + <@ (anyrange,anyrange) + << (anyrange,anyrange) + >> (anyrange,anyrange) + &< (anyrange,anyrange)<= /row> + &> (anyrange,anyrange)<= /row> + -|- (anyrange,anyrange) + - tsquery_ops - tsquery - - <@ - @> - - - + tsquery_ops + <@ (tsquery,tsquery) + + @> (tsquery,tsquery) tsvector_ops - tsvector - - @@ - - - + @@ (tsvector,tsquery) + diff --git a/doc/src/sgml/spgist.sgml b/doc/src/sgml/spgist.sgml index b86302e4ef..915aeef1a2 100644 --- a/doc/src/sgml/spgist.sgml +++ b/doc/src/sgml/spgist.sgml @@ -64,142 +64,116 @@ =20
Built-in <acronym>SP-GiST</acronym> Operator Classes - + Name - Indexed Data Type Indexable Operators Ordering Operators - kd_point_ops - point - - << - <@ - <^ - >> - >^ - ~=3D - - - <-> - + box_ops + << (box,box) + <-> (box,point) =20 + &< (box,box) + &> (box,box) + >> (box,box) + <@ (box,box) + @> (box,box) + ~=3D (box,box) + && (box,box) + <<| (box,box) + &<| (box,box) + |&> (box,box) + |>> (box,box) + - quad_point_ops - point - - << - <@ - <^ - >> - >^ - ~=3D - - - <-> - + kd_point_ops + >^ (point,point) + <-> (point,point) + << (point,point) + >> (point,point) + <^ (point,point) + ~=3D (point,point) + <@ (point,box) + - range_ops - any range type - - && - &< - &> - -|- - << - <@ - =3D - >> - @> - - - + network_ops + << (inet,inet) + + <<=3D (inet,inet) + >> (inet,inet) + >>=3D (inet,inet) + =3D (inet,inet) + <> (inet,inet) + < (inet,inet) + <=3D (inet,inet) + > (inet,inet) + >=3D (inet,inet) + && (inet,inet) + - box_ops - box - - << - &< - && - &> - >> - ~=3D - @> - <@ - &<| - <<| - |>> - |&> - - - <-> - + poly_ops + << (polygon,polygon) + <-> (polygon,point)<= /entry> + &< (polygon,polygon) + &> (polygon,polygon) + >> (polygon,polygon) + <@ (polygon,polygon) + @> (polygon,polygon) + ~=3D (polygon,polygon) + && (polygon,polygon) + <<| (polygon,polygon) + &<| (polygon,polygon) + |>> (polygon,polygon) + |&> (polygon,polygon) =20 + - poly_ops - polygon - - << - &< - && - &> - >> - ~=3D - @> - <@ - &<| - <<| - |>> - |&> - - - <-> - + quad_point_ops + >^ (point,point) + <-> (point,point) + << (point,point) + >> (point,point) + <^ (point,point) + ~=3D (point,point) + <@ (point,box) + - text_ops - text - - < - <=3D - =3D - > - >=3D - ~<=3D~ - ~<~ - ~>=3D~ - ~>~ - ^@ - - - + range_ops + =3D (anyrange,anyrange) + + && (anyrange,anyrange)= + @> (anyrange,anyelement) + @> (anyrange,anyrange) + <@ (anyrange,anyrange) + << (anyrange,anyrange) + >> (anyrange,anyrange) + &< (anyrange,anyrange)<= /row> + &> (anyrange,anyrange)<= /row> + -|- (anyrange,anyrange) +=20 - inet_ops - inet, cidr - - && - >> - >>=3D - > - >=3D - <> - << - <<=3D - < - <=3D - =3D - - - + text_ops + =3D (text,text) + + < (text,text) + <=3D (text,text) + > (text,text) + >=3D (text,text) + ~<~ (text,text) + ~<=3D~ (text,text) + ~>=3D~ (text,text) + ~>~ (text,text) + ^@ (text,text)
--VS++wcV0S1rZb1Fb-- --LyciRD1jyfeSSjG0 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEG72nH6vTowiyblFKnvQgOdbyQH0FAl9HU7IACgkQnvQgOdby QH1CNQ//ewO6dro55NdONLNvqGuS7oKpc/iZZ6zyQ2IOfXkMUijO+F6l7ecA2a3V M1VWk0vqjVWoOphwSWqpBCmkFkRZnvBaN81pqXCmsSH12cMGdxs1/t9xAAHgfFvW prpQFH7WvXhTEcJdTAWnOOSgkOZ9P76zIy0UQq5KahxJQOYikJwZpWQ/TF4Er3/w GZTLyaO4wXNi77Z0mHb0lf8iGazU1AmLU3WDG5va/Aed4AUTAPPsBd2+EM93J9et 60IFwJ81ocqukKVelmFbz95+fR9ivYxJubwk1Xz6DFhpWad93//cN1uaW6L/uywX bXZksDYnKiICkNAP97idBgB1vlCpKl9NM8ECDaAeLXrlCp+YDB++1ydHTPKj4eUp 47hCapwaAOdR1/FAGxvDbW8b/jdIuJiX3PbBAbn4mwFswyDXDh6x7hKn9LdmkA28 BGmqV/vTKhlJvV5i+SZDNYT9wEGF0dTwyMqW5gyeQeaFluVHWN3KxNsUtm69VBWZ N2Y79Laj21JgMhBO+a/1dqk3zXgVByv0uWuztPZNRgVXv6b3hDkcJSJuPqAuG3dV Zg1/UuV7KzbAVOLGWp7IhdQKfst2IuUeMJR+Y6qWbsT+9i/EezMy2cYwFaNCERvE TAZ1YJvWWR4Z5lvBPr3a0RFcb2St5hFTeOS4oLYbwaQ4MwgvH24= =zO3l -----END PGP SIGNATURE----- --LyciRD1jyfeSSjG0--