Commit e7e16942 authored by Tom Lane's avatar Tom Lane

Migrate rtree_gist functionality into the core system, and add some

basic regression tests for GiST to the standard regression tests.
I took the opportunity to add an rtree-equivalent gist opclass for
circles; the contrib version only covered boxes and polygons, but
indexing circles is very handy for distance searches.
parent 875efad4
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
# Makefile for access/gist # Makefile for access/gist
# #
# IDENTIFICATION # IDENTIFICATION
# $PostgreSQL: pgsql/src/backend/access/gist/Makefile,v 1.14 2005/06/20 10:29:36 teodor Exp $ # $PostgreSQL: pgsql/src/backend/access/gist/Makefile,v 1.15 2005/07/01 19:19:02 tgl Exp $
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
...@@ -12,7 +12,8 @@ subdir = src/backend/access/gist ...@@ -12,7 +12,8 @@ subdir = src/backend/access/gist
top_builddir = ../../../.. top_builddir = ../../../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
OBJS = gist.o gistutil.o gistxlog.o gistvacuum.o gistget.o gistscan.o OBJS = gist.o gistutil.o gistxlog.o gistvacuum.o gistget.o gistscan.o \
gistproc.o
all: SUBSYS.o all: SUBSYS.o
......
/*-------------------------------------------------------------------------
*
* gistproc.c
* Support procedures for GiSTs over 2-D objects (boxes, polygons, circles).
*
* This gives R-tree behavior, with Guttman's poly-time split algorithm.
*
*
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/access/gist/gistproc.c,v 1.1 2005/07/01 19:19:02 tgl Exp $
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
#include "access/gist.h"
#include "access/itup.h"
#include "access/rtree.h"
#include "utils/geo_decls.h"
typedef struct
{
BOX *key;
int pos;
} KBsort;
static int compare_KB(const void *a, const void *b);
static bool gist_box_leaf_consistent(BOX *key, BOX *query,
StrategyNumber strategy);
static double size_box(Datum dbox);
static bool rtree_internal_consistent(BOX *key, BOX *query,
StrategyNumber strategy);
/**************************************************
* Box ops
**************************************************/
/*
* The GiST Consistent method for boxes
*
* Should return false if for all data items x below entry,
* the predicate x op query must be FALSE, where op is the oper
* corresponding to strategy in the pg_amop table.
*/
Datum
gist_box_consistent(PG_FUNCTION_ARGS)
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
BOX *query = PG_GETARG_BOX_P(1);
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
if (DatumGetBoxP(entry->key) == NULL || query == NULL)
PG_RETURN_BOOL(FALSE);
/*
* if entry is not leaf, use rtree_internal_consistent, else use
* gist_box_leaf_consistent
*/
if (GIST_LEAF(entry))
PG_RETURN_BOOL(gist_box_leaf_consistent(DatumGetBoxP(entry->key),
query,
strategy));
else
PG_RETURN_BOOL(rtree_internal_consistent(DatumGetBoxP(entry->key),
query,
strategy));
}
/*
* The GiST Union method for boxes
*
* returns the minimal bounding box that encloses all the entries in entryvec
*/
Datum
gist_box_union(PG_FUNCTION_ARGS)
{
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
int *sizep = (int *) PG_GETARG_POINTER(1);
int numranges,
i;
BOX *cur,
*pageunion;
numranges = entryvec->n;
pageunion = (BOX *) palloc(sizeof(BOX));
cur = DatumGetBoxP(entryvec->vector[0].key);
memcpy((void *) pageunion, (void *) cur, sizeof(BOX));
for (i = 1; i < numranges; i++)
{
cur = DatumGetBoxP(entryvec->vector[i].key);
if (pageunion->high.x < cur->high.x)
pageunion->high.x = cur->high.x;
if (pageunion->low.x > cur->low.x)
pageunion->low.x = cur->low.x;
if (pageunion->high.y < cur->high.y)
pageunion->high.y = cur->high.y;
if (pageunion->low.y > cur->low.y)
pageunion->low.y = cur->low.y;
}
*sizep = sizeof(BOX);
PG_RETURN_POINTER(pageunion);
}
/*
* GiST Compress methods for boxes
*
* do not do anything.
*/
Datum
gist_box_compress(PG_FUNCTION_ARGS)
{
PG_RETURN_POINTER(PG_GETARG_POINTER(0));
}
/*
* GiST DeCompress method for boxes (also used for polygons and circles)
*
* do not do anything --- we just use the stored box as is.
*/
Datum
gist_box_decompress(PG_FUNCTION_ARGS)
{
PG_RETURN_POINTER(PG_GETARG_POINTER(0));
}
/*
* The GiST Penalty method for boxes
*
* As in the R-tree paper, we use change in area as our penalty metric
*/
Datum
gist_box_penalty(PG_FUNCTION_ARGS)
{
GISTENTRY *origentry = (GISTENTRY *) PG_GETARG_POINTER(0);
GISTENTRY *newentry = (GISTENTRY *) PG_GETARG_POINTER(1);
float *result = (float *) PG_GETARG_POINTER(2);
Datum ud;
ud = DirectFunctionCall2(rt_box_union, origentry->key, newentry->key);
*result = (float) (size_box(ud) - size_box(origentry->key));
PG_RETURN_POINTER(result);
}
/*
* qsort comparator for box areas
*/
static int
compare_KB(const void *a, const void *b)
{
BOX *abox = ((const KBsort *) a)->key;
BOX *bbox = ((const KBsort *) b)->key;
double sa = (abox->high.x - abox->low.x) * (abox->high.y - abox->low.y);
double sb = (bbox->high.x - bbox->low.x) * (bbox->high.y - bbox->low.y);
if (sa == sb)
return 0;
return (sa > sb) ? 1 : -1;
}
/*
* The GiST PickSplit method
*
* New linear algorithm, see 'New Linear Node Splitting Algorithm for R-tree',
* C.H.Ang and T.C.Tan
*/
Datum
gist_box_picksplit(PG_FUNCTION_ARGS)
{
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
GIST_SPLITVEC *v = (GIST_SPLITVEC *) PG_GETARG_POINTER(1);
OffsetNumber i;
OffsetNumber *listL,
*listR,
*listB,
*listT;
BOX *unionL,
*unionR,
*unionB,
*unionT;
int posL,
posR,
posB,
posT;
BOX pageunion;
BOX *cur;
char direction = ' ';
bool allisequal = true;
OffsetNumber maxoff;
int nbytes;
posL = posR = posB = posT = 0;
maxoff = entryvec->n - 1;
cur = DatumGetBoxP(entryvec->vector[FirstOffsetNumber].key);
memcpy((void *) &pageunion, (void *) cur, sizeof(BOX));
/* find MBR */
for (i = OffsetNumberNext(FirstOffsetNumber); i <= maxoff; i = OffsetNumberNext(i))
{
cur = DatumGetBoxP(entryvec->vector[i].key);
if (allisequal == true && (
pageunion.high.x != cur->high.x ||
pageunion.high.y != cur->high.y ||
pageunion.low.x != cur->low.x ||
pageunion.low.y != cur->low.y
))
allisequal = false;
if (pageunion.high.x < cur->high.x)
pageunion.high.x = cur->high.x;
if (pageunion.low.x > cur->low.x)
pageunion.low.x = cur->low.x;
if (pageunion.high.y < cur->high.y)
pageunion.high.y = cur->high.y;
if (pageunion.low.y > cur->low.y)
pageunion.low.y = cur->low.y;
}
nbytes = (maxoff + 2) * sizeof(OffsetNumber);
listL = (OffsetNumber *) palloc(nbytes);
listR = (OffsetNumber *) palloc(nbytes);
unionL = (BOX *) palloc(sizeof(BOX));
unionR = (BOX *) palloc(sizeof(BOX));
if (allisequal)
{
cur = DatumGetBoxP(entryvec->vector[OffsetNumberNext(FirstOffsetNumber)].key);
if (memcmp((void *) cur, (void *) &pageunion, sizeof(BOX)) == 0)
{
v->spl_left = listL;
v->spl_right = listR;
v->spl_nleft = v->spl_nright = 0;
memcpy((void *) unionL, (void *) &pageunion, sizeof(BOX));
memcpy((void *) unionR, (void *) &pageunion, sizeof(BOX));
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
{
if (i <= (maxoff - FirstOffsetNumber + 1) / 2)
{
v->spl_left[v->spl_nleft] = i;
v->spl_nleft++;
}
else
{
v->spl_right[v->spl_nright] = i;
v->spl_nright++;
}
}
v->spl_ldatum = BoxPGetDatum(unionL);
v->spl_rdatum = BoxPGetDatum(unionR);
PG_RETURN_POINTER(v);
}
}
listB = (OffsetNumber *) palloc(nbytes);
listT = (OffsetNumber *) palloc(nbytes);
unionB = (BOX *) palloc(sizeof(BOX));
unionT = (BOX *) palloc(sizeof(BOX));
#define ADDLIST( list, unionD, pos, num ) do { \
if ( pos ) { \
if ( (unionD)->high.x < cur->high.x ) (unionD)->high.x = cur->high.x; \
if ( (unionD)->low.x > cur->low.x ) (unionD)->low.x = cur->low.x; \
if ( (unionD)->high.y < cur->high.y ) (unionD)->high.y = cur->high.y; \
if ( (unionD)->low.y > cur->low.y ) (unionD)->low.y = cur->low.y; \
} else { \
memcpy( (void*)(unionD), (void*) cur, sizeof( BOX ) ); \
} \
(list)[pos] = num; \
(pos)++; \
} while(0)
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
{
cur = DatumGetBoxP(entryvec->vector[i].key);
if (cur->low.x - pageunion.low.x < pageunion.high.x - cur->high.x)
ADDLIST(listL, unionL, posL, i);
else
ADDLIST(listR, unionR, posR, i);
if (cur->low.y - pageunion.low.y < pageunion.high.y - cur->high.y)
ADDLIST(listB, unionB, posB, i);
else
ADDLIST(listT, unionT, posT, i);
}
/* bad disposition, sort by ascending and resplit */
if ((posR == 0 || posL == 0) && (posT == 0 || posB == 0))
{
KBsort *arr = (KBsort *) palloc(sizeof(KBsort) * maxoff);
posL = posR = posB = posT = 0;
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
{
arr[i - 1].key = DatumGetBoxP(entryvec->vector[i].key);
arr[i - 1].pos = i;
}
qsort(arr, maxoff, sizeof(KBsort), compare_KB);
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
{
cur = arr[i - 1].key;
if (cur->low.x - pageunion.low.x < pageunion.high.x - cur->high.x)
ADDLIST(listL, unionL, posL, arr[i - 1].pos);
else if (cur->low.x - pageunion.low.x == pageunion.high.x - cur->high.x)
{
if (posL > posR)
ADDLIST(listR, unionR, posR, arr[i - 1].pos);
else
ADDLIST(listL, unionL, posL, arr[i - 1].pos);
}
else
ADDLIST(listR, unionR, posR, arr[i - 1].pos);
if (cur->low.y - pageunion.low.y < pageunion.high.y - cur->high.y)
ADDLIST(listB, unionB, posB, arr[i - 1].pos);
else if (cur->low.y - pageunion.low.y == pageunion.high.y - cur->high.y)
{
if (posB > posT)
ADDLIST(listT, unionT, posT, arr[i - 1].pos);
else
ADDLIST(listB, unionB, posB, arr[i - 1].pos);
}
else
ADDLIST(listT, unionT, posT, arr[i - 1].pos);
}
}
/* which split more optimal? */
if (Max(posL, posR) < Max(posB, posT))
direction = 'x';
else if (Max(posL, posR) > Max(posB, posT))
direction = 'y';
else
{
Datum interLR = DirectFunctionCall2(rt_box_inter,
BoxPGetDatum(unionL),
BoxPGetDatum(unionR));
Datum interBT = DirectFunctionCall2(rt_box_inter,
BoxPGetDatum(unionB),
BoxPGetDatum(unionT));
double sizeLR,
sizeBT;
sizeLR = size_box(interLR);
sizeBT = size_box(interBT);
if (sizeLR < sizeBT)
direction = 'x';
else
direction = 'y';
}
if (direction == 'x')
{
v->spl_left = listL;
v->spl_right = listR;
v->spl_nleft = posL;
v->spl_nright = posR;
v->spl_ldatum = BoxPGetDatum(unionL);
v->spl_rdatum = BoxPGetDatum(unionR);
}
else
{
v->spl_left = listB;
v->spl_right = listT;
v->spl_nleft = posB;
v->spl_nright = posT;
v->spl_ldatum = BoxPGetDatum(unionB);
v->spl_rdatum = BoxPGetDatum(unionT);
}
PG_RETURN_POINTER(v);
}
/*
* Equality method
*/
Datum
gist_box_same(PG_FUNCTION_ARGS)
{
BOX *b1 = PG_GETARG_BOX_P(0);
BOX *b2 = PG_GETARG_BOX_P(1);
bool *result = (bool *) PG_GETARG_POINTER(2);
if (b1 && b2)
*result = DatumGetBool(DirectFunctionCall2(box_same,
PointerGetDatum(b1),
PointerGetDatum(b2)));
else
*result = (b1 == NULL && b2 == NULL) ? TRUE : FALSE;
PG_RETURN_POINTER(result);
}
/*
* Leaf-level consistency for boxes: just apply the query operator
*/
static bool
gist_box_leaf_consistent(BOX *key, BOX *query, StrategyNumber strategy)
{
bool retval;
switch (strategy)
{
case RTLeftStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_left,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTOverLeftStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_overleft,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTOverlapStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_overlap,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTOverRightStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_overright,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTRightStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_right,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTSameStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_same,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTContainsStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_contain,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTContainedByStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_contained,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTOverBelowStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_overbelow,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTBelowStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_below,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTAboveStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_above,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTOverAboveStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_overabove,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
default:
retval = FALSE;
}
return retval;
}
static double
size_box(Datum dbox)
{
BOX *box = DatumGetBoxP(dbox);
if (box == NULL || box->high.x <= box->low.x || box->high.y <= box->low.y)
return 0.0;
return (box->high.x - box->low.x) * (box->high.y - box->low.y);
}
/*****************************************
* Common rtree functions (for boxes, polygons, and circles)
*****************************************/
/*
* Internal-page consistency for all these types
*
* We can use the same function since all types use bounding boxes as the
* internal-page representation.
*
* This implements the same logic as the rtree internal-page strategy map.
*/
static bool
rtree_internal_consistent(BOX *key, BOX *query, StrategyNumber strategy)
{
bool retval;
switch (strategy)
{
case RTLeftStrategyNumber:
retval = !DatumGetBool(DirectFunctionCall2(box_overright,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTOverLeftStrategyNumber:
retval = !DatumGetBool(DirectFunctionCall2(box_right,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTOverlapStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_overlap,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTOverRightStrategyNumber:
retval = !DatumGetBool(DirectFunctionCall2(box_left,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTRightStrategyNumber:
retval = !DatumGetBool(DirectFunctionCall2(box_overleft,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTSameStrategyNumber:
case RTContainsStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_contain,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTContainedByStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_overlap,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTOverBelowStrategyNumber:
retval = !DatumGetBool(DirectFunctionCall2(box_above,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTBelowStrategyNumber:
retval = !DatumGetBool(DirectFunctionCall2(box_overabove,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTAboveStrategyNumber:
retval = !DatumGetBool(DirectFunctionCall2(box_overbelow,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTOverAboveStrategyNumber:
retval = !DatumGetBool(DirectFunctionCall2(box_below,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
default:
retval = FALSE;
}
return retval;
}
/**************************************************
* Polygon ops
**************************************************/
/*
* GiST compress for polygons: represent a polygon by its bounding box
*/
Datum
gist_poly_compress(PG_FUNCTION_ARGS)
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
GISTENTRY *retval;
if (entry->leafkey)
{
retval = palloc(sizeof(GISTENTRY));
if (DatumGetPointer(entry->key) != NULL)
{
POLYGON *in = DatumGetPolygonP(entry->key);
BOX *r;
r = (BOX *) palloc(sizeof(BOX));
memcpy((void *) r, (void *) &(in->boundbox), sizeof(BOX));
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
entry->offset, sizeof(BOX), FALSE);
}
else
{
gistentryinit(*retval, (Datum) 0,
entry->rel, entry->page,
entry->offset, 0, FALSE);
}
}
else
retval = entry;
PG_RETURN_POINTER(retval);
}
/*
* The GiST Consistent method for polygons
*/
Datum
gist_poly_consistent(PG_FUNCTION_ARGS)
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
POLYGON *query = PG_GETARG_POLYGON_P(1);
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
bool result;
if (DatumGetBoxP(entry->key) == NULL || query == NULL)
PG_RETURN_BOOL(FALSE);
/*
* Since the operators are marked lossy anyway, we can just use
* rtree_internal_consistent even at leaf nodes. (This works
* in part because the index entries are bounding boxes not polygons.)
*/
result = rtree_internal_consistent(DatumGetBoxP(entry->key),
&(query->boundbox), strategy);
/* Avoid memory leak if supplied poly is toasted */
PG_FREE_IF_COPY(query, 1);
PG_RETURN_BOOL(result);
}
/**************************************************
* Circle ops
**************************************************/
/*
* GiST compress for circles: represent a circle by its bounding box
*/
Datum
gist_circle_compress(PG_FUNCTION_ARGS)
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
GISTENTRY *retval;
if (entry->leafkey)
{
retval = palloc(sizeof(GISTENTRY));
if (DatumGetCircleP(entry->key) != NULL)
{
CIRCLE *in = DatumGetCircleP(entry->key);
BOX *r;
r = (BOX *) palloc(sizeof(BOX));
r->high.x = in->center.x + in->radius;
r->low.x = in->center.x - in->radius;
r->high.y = in->center.y + in->radius;
r->low.y = in->center.y - in->radius;
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
entry->offset, sizeof(BOX), FALSE);
}
else
{
gistentryinit(*retval, (Datum) 0,
entry->rel, entry->page,
entry->offset, 0, FALSE);
}
}
else
retval = entry;
PG_RETURN_POINTER(retval);
}
/*
* The GiST Consistent method for circles
*/
Datum
gist_circle_consistent(PG_FUNCTION_ARGS)
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
CIRCLE *query = PG_GETARG_CIRCLE_P(1);
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
BOX bbox;
bool result;
if (DatumGetBoxP(entry->key) == NULL || query == NULL)
PG_RETURN_BOOL(FALSE);
/*
* Since the operators are marked lossy anyway, we can just use
* rtree_internal_consistent even at leaf nodes. (This works
* in part because the index entries are bounding boxes not circles.)
*/
bbox.high.x = query->center.x + query->radius;
bbox.low.x = query->center.x - query->radius;
bbox.high.y = query->center.y + query->radius;
bbox.low.y = query->center.y - query->radius;
result = rtree_internal_consistent(DatumGetBoxP(entry->key),
&bbox, strategy);
PG_RETURN_BOOL(result);
}
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/geo_ops.c,v 1.89 2005/06/24 20:53:31 tgl Exp $ * $PostgreSQL: pgsql/src/backend/utils/adt/geo_ops.c,v 1.90 2005/07/01 19:19:02 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -4605,8 +4605,7 @@ circle_contain(PG_FUNCTION_ARGS) ...@@ -4605,8 +4605,7 @@ circle_contain(PG_FUNCTION_ARGS)
} }
/* circle_positionop - /* circle_below - is circle1 strictly below circle2?
* is circle1 entirely {above,below} circle2?
*/ */
Datum Datum
circle_below(PG_FUNCTION_ARGS) circle_below(PG_FUNCTION_ARGS)
...@@ -4614,18 +4613,46 @@ circle_below(PG_FUNCTION_ARGS) ...@@ -4614,18 +4613,46 @@ circle_below(PG_FUNCTION_ARGS)
CIRCLE *circle1 = PG_GETARG_CIRCLE_P(0); CIRCLE *circle1 = PG_GETARG_CIRCLE_P(0);
CIRCLE *circle2 = PG_GETARG_CIRCLE_P(1); CIRCLE *circle2 = PG_GETARG_CIRCLE_P(1);
PG_RETURN_BOOL(FPle(circle1->center.y + circle1->radius, PG_RETURN_BOOL(FPlt((circle1->center.y + circle1->radius),
circle2->center.y - circle2->radius)); (circle2->center.y - circle2->radius)));
} }
/* circle_above - is circle1 strictly above circle2?
*/
Datum Datum
circle_above(PG_FUNCTION_ARGS) circle_above(PG_FUNCTION_ARGS)
{ {
CIRCLE *circle1 = PG_GETARG_CIRCLE_P(0); CIRCLE *circle1 = PG_GETARG_CIRCLE_P(0);
CIRCLE *circle2 = PG_GETARG_CIRCLE_P(1); CIRCLE *circle2 = PG_GETARG_CIRCLE_P(1);
PG_RETURN_BOOL(FPge(circle1->center.y - circle1->radius, PG_RETURN_BOOL(FPgt((circle1->center.y - circle1->radius),
circle2->center.y + circle2->radius)); (circle2->center.y + circle2->radius)));
}
/* circle_overbelow - is the upper edge of circle1 at or below
* the upper edge of circle2?
*/
Datum
circle_overbelow(PG_FUNCTION_ARGS)
{
CIRCLE *circle1 = PG_GETARG_CIRCLE_P(0);
CIRCLE *circle2 = PG_GETARG_CIRCLE_P(1);
PG_RETURN_BOOL(FPle((circle1->center.y + circle1->radius),
(circle2->center.y + circle2->radius)));
}
/* circle_overabove - is the lower edge of circle1 at or above
* the lower edge of circle2?
*/
Datum
circle_overabove(PG_FUNCTION_ARGS)
{
CIRCLE *circle1 = PG_GETARG_CIRCLE_P(0);
CIRCLE *circle2 = PG_GETARG_CIRCLE_P(1);
PG_RETURN_BOOL(FPge((circle1->center.y - circle1->radius),
(circle2->center.y - circle2->radius)));
} }
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.283 2005/06/28 05:09:04 tgl Exp $ * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.284 2005/07/01 19:19:02 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -53,6 +53,6 @@ ...@@ -53,6 +53,6 @@
*/ */
/* yyyymmddN */ /* yyyymmddN */
#define CATALOG_VERSION_NO 200506272 #define CATALOG_VERSION_NO 200507011
#endif #endif
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/include/catalog/pg_amop.h,v 1.64 2005/06/24 20:53:31 tgl Exp $ * $PostgreSQL: pgsql/src/include/catalog/pg_amop.h,v 1.65 2005/07/01 19:19:03 tgl Exp $
* *
* NOTES * NOTES
* the genbki.sh script reads this file and generates .bki * the genbki.sh script reads this file and generates .bki
...@@ -619,4 +619,55 @@ DATA(insert ( 2232 0 1 f 2334 )); ...@@ -619,4 +619,55 @@ DATA(insert ( 2232 0 1 f 2334 ));
/* aclitem_ops */ /* aclitem_ops */
DATA(insert ( 2235 0 1 f 974 )); DATA(insert ( 2235 0 1 f 974 ));
/*
* gist box_ops
*/
DATA(insert ( 2593 0 1 f 493 ));
DATA(insert ( 2593 0 2 f 494 ));
DATA(insert ( 2593 0 3 f 500 ));
DATA(insert ( 2593 0 4 f 495 ));
DATA(insert ( 2593 0 5 f 496 ));
DATA(insert ( 2593 0 6 f 499 ));
DATA(insert ( 2593 0 7 f 498 ));
DATA(insert ( 2593 0 8 f 497 ));
DATA(insert ( 2593 0 9 f 2571 ));
DATA(insert ( 2593 0 10 f 2570 ));
DATA(insert ( 2593 0 11 f 2573 ));
DATA(insert ( 2593 0 12 f 2572 ));
/*
* gist poly_ops (supports polygons)
*/
DATA(insert ( 2594 0 1 t 485 ));
DATA(insert ( 2594 0 2 t 486 ));
DATA(insert ( 2594 0 3 t 492 ));
DATA(insert ( 2594 0 4 t 487 ));
DATA(insert ( 2594 0 5 t 488 ));
DATA(insert ( 2594 0 6 t 491 ));
DATA(insert ( 2594 0 7 t 490 ));
DATA(insert ( 2594 0 8 t 489 ));
DATA(insert ( 2594 0 9 t 2575 ));
DATA(insert ( 2594 0 10 t 2574 ));
DATA(insert ( 2594 0 11 t 2577 ));
DATA(insert ( 2594 0 12 t 2576 ));
/*
* gist circle_ops
*/
DATA(insert ( 2595 0 1 t 1506 ));
DATA(insert ( 2595 0 2 t 1507 ));
DATA(insert ( 2595 0 3 t 1513 ));
DATA(insert ( 2595 0 4 t 1508 ));
DATA(insert ( 2595 0 5 t 1509 ));
DATA(insert ( 2595 0 6 t 1512 ));
DATA(insert ( 2595 0 7 t 1511 ));
DATA(insert ( 2595 0 8 t 1510 ));
DATA(insert ( 2595 0 9 t 2589 ));
DATA(insert ( 2595 0 10 t 1515 ));
DATA(insert ( 2595 0 11 t 1514 ));
DATA(insert ( 2595 0 12 t 2590 ));
#endif /* PG_AMOP_H */ #endif /* PG_AMOP_H */
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/include/catalog/pg_amproc.h,v 1.53 2005/04/14 01:38:20 tgl Exp $ * $PostgreSQL: pgsql/src/include/catalog/pg_amproc.h,v 1.54 2005/07/01 19:19:03 tgl Exp $
* *
* NOTES * NOTES
* the genbki.sh script reads this file and generates .bki * the genbki.sh script reads this file and generates .bki
...@@ -170,4 +170,28 @@ DATA(insert ( 2231 0 1 456 )); ...@@ -170,4 +170,28 @@ DATA(insert ( 2231 0 1 456 ));
DATA(insert ( 2232 0 1 455 )); DATA(insert ( 2232 0 1 455 ));
DATA(insert ( 2235 0 1 329 )); DATA(insert ( 2235 0 1 329 ));
/* gist */
DATA(insert ( 2593 0 1 2578 ));
DATA(insert ( 2593 0 2 2583 ));
DATA(insert ( 2593 0 3 2579 ));
DATA(insert ( 2593 0 4 2580 ));
DATA(insert ( 2593 0 5 2581 ));
DATA(insert ( 2593 0 6 2582 ));
DATA(insert ( 2593 0 7 2584 ));
DATA(insert ( 2594 0 1 2585 ));
DATA(insert ( 2594 0 2 2583 ));
DATA(insert ( 2594 0 3 2586 ));
DATA(insert ( 2594 0 4 2580 ));
DATA(insert ( 2594 0 5 2581 ));
DATA(insert ( 2594 0 6 2582 ));
DATA(insert ( 2594 0 7 2584 ));
DATA(insert ( 2595 0 1 2591 ));
DATA(insert ( 2595 0 2 2583 ));
DATA(insert ( 2595 0 3 2592 ));
DATA(insert ( 2595 0 4 2580 ));
DATA(insert ( 2595 0 5 2581 ));
DATA(insert ( 2595 0 6 2582 ));
DATA(insert ( 2595 0 7 2584 ));
#endif /* PG_AMPROC_H */ #endif /* PG_AMPROC_H */
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/include/catalog/pg_opclass.h,v 1.65 2005/06/28 05:09:07 tgl Exp $ * $PostgreSQL: pgsql/src/include/catalog/pg_opclass.h,v 1.66 2005/07/01 19:19:03 tgl Exp $
* *
* NOTES * NOTES
* the genbki.sh script reads this file and generates .bki * the genbki.sh script reads this file and generates .bki
...@@ -175,5 +175,8 @@ DATA(insert OID = 2232 ( 405 name_pattern_ops PGNSP PGUID 19 f 0 )); ...@@ -175,5 +175,8 @@ DATA(insert OID = 2232 ( 405 name_pattern_ops PGNSP PGUID 19 f 0 ));
DATA(insert OID = 2233 ( 403 reltime_ops PGNSP PGUID 703 t 0 )); DATA(insert OID = 2233 ( 403 reltime_ops PGNSP PGUID 703 t 0 ));
DATA(insert OID = 2234 ( 403 tinterval_ops PGNSP PGUID 704 t 0 )); DATA(insert OID = 2234 ( 403 tinterval_ops PGNSP PGUID 704 t 0 ));
DATA(insert OID = 2235 ( 405 aclitem_ops PGNSP PGUID 1033 t 0 )); DATA(insert OID = 2235 ( 405 aclitem_ops PGNSP PGUID 1033 t 0 ));
DATA(insert OID = 2593 ( 783 box_ops PGNSP PGUID 603 t 0 ));
DATA(insert OID = 2594 ( 783 poly_ops PGNSP PGUID 604 t 603 ));
DATA(insert OID = 2595 ( 783 circle_ops PGNSP PGUID 718 t 603 ));
#endif /* PG_OPCLASS_H */ #endif /* PG_OPCLASS_H */
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/include/catalog/pg_operator.h,v 1.135 2005/06/28 05:09:07 tgl Exp $ * $PostgreSQL: pgsql/src/include/catalog/pg_operator.h,v 1.136 2005/07/01 19:19:03 tgl Exp $
* *
* NOTES * NOTES
* the genbki.sh script reads this file and generates .bki * the genbki.sh script reads this file and generates .bki
...@@ -568,8 +568,8 @@ DATA(insert OID = 1510 ( "@" PGNSP PGUID b f 718 718 16 1511 0 0 0 0 0 ...@@ -568,8 +568,8 @@ DATA(insert OID = 1510 ( "@" PGNSP PGUID b f 718 718 16 1511 0 0 0 0 0
DATA(insert OID = 1511 ( "~" PGNSP PGUID b f 718 718 16 1510 0 0 0 0 0 circle_contain contsel contjoinsel )); DATA(insert OID = 1511 ( "~" PGNSP PGUID b f 718 718 16 1510 0 0 0 0 0 circle_contain contsel contjoinsel ));
DATA(insert OID = 1512 ( "~=" PGNSP PGUID b f 718 718 16 1512 0 0 0 0 0 circle_same eqsel eqjoinsel )); DATA(insert OID = 1512 ( "~=" PGNSP PGUID b f 718 718 16 1512 0 0 0 0 0 circle_same eqsel eqjoinsel ));
DATA(insert OID = 1513 ( "&&" PGNSP PGUID b f 718 718 16 1513 0 0 0 0 0 circle_overlap areasel areajoinsel )); DATA(insert OID = 1513 ( "&&" PGNSP PGUID b f 718 718 16 1513 0 0 0 0 0 circle_overlap areasel areajoinsel ));
DATA(insert OID = 1514 ( ">^" PGNSP PGUID b f 718 718 16 0 0 0 0 0 0 circle_above positionsel positionjoinsel )); DATA(insert OID = 1514 ( "|>>" PGNSP PGUID b f 718 718 16 0 0 0 0 0 0 circle_above positionsel positionjoinsel ));
DATA(insert OID = 1515 ( "<^" PGNSP PGUID b f 718 718 16 0 0 0 0 0 0 circle_below positionsel positionjoinsel )); DATA(insert OID = 1515 ( "<<|" PGNSP PGUID b f 718 718 16 0 0 0 0 0 0 circle_below positionsel positionjoinsel ));
DATA(insert OID = 1516 ( "+" PGNSP PGUID b f 718 600 718 0 0 0 0 0 0 circle_add_pt - - )); DATA(insert OID = 1516 ( "+" PGNSP PGUID b f 718 600 718 0 0 0 0 0 0 circle_add_pt - - ));
DATA(insert OID = 1517 ( "-" PGNSP PGUID b f 718 600 718 0 0 0 0 0 0 circle_sub_pt - - )); DATA(insert OID = 1517 ( "-" PGNSP PGUID b f 718 600 718 0 0 0 0 0 0 circle_sub_pt - - ));
...@@ -874,6 +874,8 @@ DATA(insert OID = 2574 ( "<<|" PGNSP PGUID b f 604 604 16 0 0 0 0 0 0 ...@@ -874,6 +874,8 @@ DATA(insert OID = 2574 ( "<<|" PGNSP PGUID b f 604 604 16 0 0 0 0 0 0
DATA(insert OID = 2575 ( "&<|" PGNSP PGUID b f 604 604 16 0 0 0 0 0 0 poly_overbelow positionsel positionjoinsel )); DATA(insert OID = 2575 ( "&<|" PGNSP PGUID b f 604 604 16 0 0 0 0 0 0 poly_overbelow positionsel positionjoinsel ));
DATA(insert OID = 2576 ( "|&>" PGNSP PGUID b f 604 604 16 0 0 0 0 0 0 poly_overabove positionsel positionjoinsel )); DATA(insert OID = 2576 ( "|&>" PGNSP PGUID b f 604 604 16 0 0 0 0 0 0 poly_overabove positionsel positionjoinsel ));
DATA(insert OID = 2577 ( "|>>" PGNSP PGUID b f 604 604 16 0 0 0 0 0 0 poly_above positionsel positionjoinsel )); DATA(insert OID = 2577 ( "|>>" PGNSP PGUID b f 604 604 16 0 0 0 0 0 0 poly_above positionsel positionjoinsel ));
DATA(insert OID = 2589 ( "&<|" PGNSP PGUID b f 718 718 16 0 0 0 0 0 0 circle_overbelow positionsel positionjoinsel ));
DATA(insert OID = 2590 ( "|&>" PGNSP PGUID b f 718 718 16 0 0 0 0 0 0 circle_overabove positionsel positionjoinsel ));
/* /*
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.372 2005/06/28 05:09:09 tgl Exp $ * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.373 2005/07/01 19:19:03 tgl Exp $
* *
* NOTES * NOTES
* The script catalog/genbki.sh reads this file and generates .bki * The script catalog/genbki.sh reads this file and generates .bki
...@@ -3675,6 +3675,34 @@ DATA(insert OID = 2568 ( poly_overabove PGNSP PGUID 12 f f t f i 2 16 "604 60 ...@@ -3675,6 +3675,34 @@ DATA(insert OID = 2568 ( poly_overabove PGNSP PGUID 12 f f t f i 2 16 "604 60
DESCR("overlaps or is above"); DESCR("overlaps or is above");
DATA(insert OID = 2569 ( poly_above PGNSP PGUID 12 f f t f i 2 16 "604 604" _null_ _null_ _null_ poly_above - _null_ )); DATA(insert OID = 2569 ( poly_above PGNSP PGUID 12 f f t f i 2 16 "604 604" _null_ _null_ _null_ poly_above - _null_ ));
DESCR("is above"); DESCR("is above");
DATA(insert OID = 2587 ( circle_overbelow PGNSP PGUID 12 f f t f i 2 16 "718 718" _null_ _null_ _null_ circle_overbelow - _null_ ));
DESCR("overlaps or is below");
DATA(insert OID = 2588 ( circle_overabove PGNSP PGUID 12 f f t f i 2 16 "718 718" _null_ _null_ _null_ circle_overabove - _null_ ));
DESCR("overlaps or is above");
/* support functions for GiST r-tree emulation */
DATA(insert OID = 2578 ( gist_box_consistent PGNSP PGUID 12 f f t f i 3 16 "2281 603 23" _null_ _null_ _null_ gist_box_consistent - _null_ ));
DESCR("GiST support");
DATA(insert OID = 2579 ( gist_box_compress PGNSP PGUID 12 f f t f i 1 2281 "2281" _null_ _null_ _null_ gist_box_compress - _null_ ));
DESCR("GiST support");
DATA(insert OID = 2580 ( gist_box_decompress PGNSP PGUID 12 f f t f i 1 2281 "2281" _null_ _null_ _null_ gist_box_decompress - _null_ ));
DESCR("GiST support");
DATA(insert OID = 2581 ( gist_box_penalty PGNSP PGUID 12 f f t f i 3 2281 "2281 2281 2281" _null_ _null_ _null_ gist_box_penalty - _null_ ));
DESCR("GiST support");
DATA(insert OID = 2582 ( gist_box_picksplit PGNSP PGUID 12 f f t f i 2 2281 "2281 2281" _null_ _null_ _null_ gist_box_picksplit - _null_ ));
DESCR("GiST support");
DATA(insert OID = 2583 ( gist_box_union PGNSP PGUID 12 f f t f i 2 603 "2281 2281" _null_ _null_ _null_ gist_box_union - _null_ ));
DESCR("GiST support");
DATA(insert OID = 2584 ( gist_box_same PGNSP PGUID 12 f f t f i 3 2281 "603 603 2281" _null_ _null_ _null_ gist_box_same - _null_ ));
DESCR("GiST support");
DATA(insert OID = 2585 ( gist_poly_consistent PGNSP PGUID 12 f f t f i 3 16 "2281 604 23" _null_ _null_ _null_ gist_poly_consistent - _null_ ));
DESCR("GiST support");
DATA(insert OID = 2586 ( gist_poly_compress PGNSP PGUID 12 f f t f i 1 2281 "2281" _null_ _null_ _null_ gist_poly_compress - _null_ ));
DESCR("GiST support");
DATA(insert OID = 2591 ( gist_circle_consistent PGNSP PGUID 12 f f t f i 3 16 "2281 718 23" _null_ _null_ _null_ gist_circle_consistent - _null_ ));
DESCR("GiST support");
DATA(insert OID = 2592 ( gist_circle_compress PGNSP PGUID 12 f f t f i 1 2281 "2281" _null_ _null_ _null_ gist_circle_compress - _null_ ));
DESCR("GiST support");
/* /*
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/include/utils/geo_decls.h,v 1.47 2005/06/24 20:53:33 tgl Exp $ * $PostgreSQL: pgsql/src/include/utils/geo_decls.h,v 1.48 2005/07/01 19:19:04 tgl Exp $
* *
* NOTE * NOTE
* These routines do *not* use the float types from adt/. * These routines do *not* use the float types from adt/.
...@@ -379,6 +379,8 @@ extern Datum circle_contained(PG_FUNCTION_ARGS); ...@@ -379,6 +379,8 @@ extern Datum circle_contained(PG_FUNCTION_ARGS);
extern Datum circle_contain(PG_FUNCTION_ARGS); extern Datum circle_contain(PG_FUNCTION_ARGS);
extern Datum circle_below(PG_FUNCTION_ARGS); extern Datum circle_below(PG_FUNCTION_ARGS);
extern Datum circle_above(PG_FUNCTION_ARGS); extern Datum circle_above(PG_FUNCTION_ARGS);
extern Datum circle_overbelow(PG_FUNCTION_ARGS);
extern Datum circle_overabove(PG_FUNCTION_ARGS);
extern Datum circle_eq(PG_FUNCTION_ARGS); extern Datum circle_eq(PG_FUNCTION_ARGS);
extern Datum circle_ne(PG_FUNCTION_ARGS); extern Datum circle_ne(PG_FUNCTION_ARGS);
extern Datum circle_lt(PG_FUNCTION_ARGS); extern Datum circle_lt(PG_FUNCTION_ARGS);
...@@ -404,7 +406,7 @@ extern Datum poly_circle(PG_FUNCTION_ARGS); ...@@ -404,7 +406,7 @@ extern Datum poly_circle(PG_FUNCTION_ARGS);
extern Datum circle_poly(PG_FUNCTION_ARGS); extern Datum circle_poly(PG_FUNCTION_ARGS);
extern Datum circle_area(PG_FUNCTION_ARGS); extern Datum circle_area(PG_FUNCTION_ARGS);
/* support routines for the rtree access method (rtproc.c) */ /* support routines for the rtree access method (access/rtree/rtproc.c) */
extern Datum rt_box_union(PG_FUNCTION_ARGS); extern Datum rt_box_union(PG_FUNCTION_ARGS);
extern Datum rt_box_inter(PG_FUNCTION_ARGS); extern Datum rt_box_inter(PG_FUNCTION_ARGS);
extern Datum rt_box_size(PG_FUNCTION_ARGS); extern Datum rt_box_size(PG_FUNCTION_ARGS);
...@@ -412,6 +414,19 @@ extern Datum rt_poly_size(PG_FUNCTION_ARGS); ...@@ -412,6 +414,19 @@ extern Datum rt_poly_size(PG_FUNCTION_ARGS);
extern Datum rt_poly_union(PG_FUNCTION_ARGS); extern Datum rt_poly_union(PG_FUNCTION_ARGS);
extern Datum rt_poly_inter(PG_FUNCTION_ARGS); extern Datum rt_poly_inter(PG_FUNCTION_ARGS);
/* support routines for the GiST access method (access/gist/gistproc.c) */
extern Datum gist_box_compress(PG_FUNCTION_ARGS);
extern Datum gist_box_decompress(PG_FUNCTION_ARGS);
extern Datum gist_box_union(PG_FUNCTION_ARGS);
extern Datum gist_box_picksplit(PG_FUNCTION_ARGS);
extern Datum gist_box_consistent(PG_FUNCTION_ARGS);
extern Datum gist_box_penalty(PG_FUNCTION_ARGS);
extern Datum gist_box_same(PG_FUNCTION_ARGS);
extern Datum gist_poly_compress(PG_FUNCTION_ARGS);
extern Datum gist_poly_consistent(PG_FUNCTION_ARGS);
extern Datum gist_circle_compress(PG_FUNCTION_ARGS);
extern Datum gist_circle_consistent(PG_FUNCTION_ARGS);
/* geo_selfuncs.c */ /* geo_selfuncs.c */
extern Datum areasel(PG_FUNCTION_ARGS); extern Datum areasel(PG_FUNCTION_ARGS);
extern Datum areajoinsel(PG_FUNCTION_ARGS); extern Datum areajoinsel(PG_FUNCTION_ARGS);
......
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
(5739,1740,5715,1731) (5739,1740,5715,1731)
(25120,27935,25054,27876) (25120,27935,25054,27876)
(27475,46084,27447,46003) (27475,46084,27447,46003)
\N
(33197,3252,33161,3245) (33197,3252,33161,3245)
(10892,15691,10869,15662) (10892,15691,10869,15662)
(39012,44712,38995,44640) (39012,44712,38995,44640)
...@@ -58,17 +59,22 @@ ...@@ -58,17 +59,22 @@
(23649,6338,23610,6314) (23649,6338,23610,6314)
(25942,10008,25911,9928) (25942,10008,25911,9928)
(25651,29943,25590,29906) (25651,29943,25590,29906)
\N
(24555,40334,24546,40330) (24555,40334,24546,40330)
(46870,43762,46789,43709) (46870,43762,46789,43709)
\N
(20030,2752,19945,2687) (20030,2752,19945,2687)
(30758,26754,30718,26678) (30758,26754,30718,26678)
\N
(4320,44673,4286,44625) (4320,44673,4286,44625)
\N
(1011,15576,939,15574) (1011,15576,939,15574)
(41936,40699,41854,40655) (41936,40699,41854,40655)
(20594,19002,20561,18995) (20594,19002,20561,18995)
(9388,41056,9325,41042) (9388,41056,9325,41042)
(34771,46693,34751,46645) (34771,46693,34751,46645)
(49398,46359,49332,46357) (49398,46359,49332,46357)
\N
(23115,35380,23036,35306) (23115,35380,23036,35306)
(46305,34840,46283,34765) (46305,34840,46283,34765)
(16768,21692,16691,21647) (16768,21692,16691,21647)
...@@ -85,6 +91,7 @@ ...@@ -85,6 +91,7 @@
(14913,49873,14849,49836) (14913,49873,14849,49836)
(37013,820,36955,736) (37013,820,36955,736)
(39071,1399,39022,1381) (39071,1399,39022,1381)
\N
(9785,42546,9687,42540) (9785,42546,9687,42540)
(13423,14066,13354,14052) (13423,14066,13354,14052)
(3417,14558,3336,14478) (3417,14558,3336,14478)
...@@ -129,6 +136,7 @@ ...@@ -129,6 +136,7 @@
(32914,9549,32828,9503) (32914,9549,32828,9503)
(49023,37827,48978,37799) (49023,37827,48978,37799)
(22183,10691,22111,10669) (22183,10691,22111,10669)
\N
(38036,15828,38014,15759) (38036,15828,38014,15759)
(34604,16801,34508,16746) (34604,16801,34508,16746)
(26737,29997,26675,29976) (26737,29997,26675,29976)
...@@ -146,7 +154,9 @@ ...@@ -146,7 +154,9 @@
(45005,3842,45001,3816) (45005,3842,45001,3816)
(21672,23566,21603,23566) (21672,23566,21603,23566)
(33360,43465,33302,43429) (33360,43465,33302,43429)
\N
(29884,9544,29838,9520) (29884,9544,29838,9520)
\N
(5599,15012,5596,14930) (5599,15012,5596,14930)
(22396,21481,22344,21422) (22396,21481,22344,21422)
(24810,14955,24780,14887) (24810,14955,24780,14887)
...@@ -154,7 +164,9 @@ ...@@ -154,7 +164,9 @@
(39013,39245,38953,39237) (39013,39245,38953,39237)
(12863,40534,12803,40529) (12863,40534,12803,40529)
(351,37068,310,37019) (351,37068,310,37019)
\N
(12916,34327,12891,34240) (12916,34327,12891,34240)
\N
(49191,2694,49170,2628) (49191,2694,49170,2628)
(24127,38407,24050,38325) (24127,38407,24050,38325)
(3264,23053,3213,23007) (3264,23053,3213,23007)
...@@ -174,11 +186,13 @@ ...@@ -174,11 +186,13 @@
(49503,23432,49484,23383) (49503,23432,49484,23383)
(31089,23146,31062,23093) (31089,23146,31062,23093)
(47758,2734,47670,2703) (47758,2734,47670,2703)
\N
(35276,1027,35259,972) (35276,1027,35259,972)
(26337,17603,26313,17579) (26337,17603,26313,17579)
(35649,16777,35626,16777) (35649,16777,35626,16777)
(42454,5105,42362,5101) (42454,5105,42362,5101)
(21682,24951,21646,24920) (21682,24951,21646,24920)
\N
(48383,25174,48303,25156) (48383,25174,48303,25156)
(14672,3532,14601,3460) (14672,3532,14601,3460)
(22570,22587,22515,22512) (22570,22587,22515,22512)
...@@ -189,11 +203,13 @@ ...@@ -189,11 +203,13 @@
(12479,25042,12447,24991) (12479,25042,12447,24991)
(16568,22916,16499,22864) (16568,22916,16499,22864)
(42700,13084,42676,12992) (42700,13084,42676,12992)
\N
(35523,40973,35504,40932) (35523,40973,35504,40932)
(32948,16962,32857,16901) (32948,16962,32857,16901)
(7808,13469,7712,13469) (7808,13469,7712,13469)
(13920,35203,13870,35131) (13920,35203,13870,35131)
(22731,31563,22658,31557) (22731,31563,22658,31557)
\N
(22909,43956,22900,43857) (22909,43956,22900,43857)
(33077,35080,33074,35030) (33077,35080,33074,35030)
(48064,29307,48022,29280) (48064,29307,48022,29280)
...@@ -205,6 +221,7 @@ ...@@ -205,6 +221,7 @@
(2947,19819,2857,19788) (2947,19819,2857,19788)
(4900,47934,4818,47894) (4900,47934,4818,47894)
(27193,19014,27174,18976) (27193,19014,27174,18976)
\N
(15597,27948,15590,27939) (15597,27948,15590,27939)
(11090,28623,11002,28589) (11090,28623,11002,28589)
(26956,18651,26920,18620) (26956,18651,26920,18620)
...@@ -217,13 +234,16 @@ ...@@ -217,13 +234,16 @@
(2412,18357,2383,18354) (2412,18357,2383,18354)
(37060,1443,36974,1366) (37060,1443,36974,1366)
(15501,6230,15429,6190) (15501,6230,15429,6190)
\N
(30333,50,30273,6) (30333,50,30273,6)
(35567,9965,35482,9912) (35567,9965,35482,9912)
(49847,7128,49798,7067) (49847,7128,49798,7067)
\N
(27685,36396,27668,36384) (27685,36396,27668,36384)
(43832,18491,43825,18431) (43832,18491,43825,18431)
(36849,34600,36785,34589) (36849,34600,36785,34589)
(2348,47938,2307,47902) (2348,47938,2307,47902)
\N
(20473,22131,20445,22113) (20473,22131,20445,22113)
(38486,4293,38471,4288) (38486,4293,38471,4288)
(30611,30451,30553,30400) (30611,30451,30553,30400)
...@@ -242,6 +262,7 @@ ...@@ -242,6 +262,7 @@
(17780,43602,17714,43565) (17780,43602,17714,43565)
(45073,3491,45041,3434) (45073,3491,45041,3434)
(35043,2136,35017,2084) (35043,2136,35017,2084)
\N
(39653,19215,39646,19198) (39653,19215,39646,19198)
(23970,25560,23935,25502) (23970,25560,23935,25502)
(28698,49233,28600,49223) (28698,49233,28600,49223)
...@@ -252,6 +273,7 @@ ...@@ -252,6 +273,7 @@
(2730,32454,2671,32436) (2730,32454,2671,32436)
(1722,49089,1635,49067) (1722,49089,1635,49067)
(40954,5743,40921,5722) (40954,5743,40921,5722)
\N
(21382,4426,21298,4331) (21382,4426,21298,4331)
(7885,18629,7872,18605) (7885,18629,7872,18605)
(42838,6459,42748,6451) (42838,6459,42748,6451)
...@@ -272,12 +294,14 @@ ...@@ -272,12 +294,14 @@
(31911,15168,31906,15113) (31911,15168,31906,15113)
(3454,36839,3438,36831) (3454,36839,3438,36831)
(4832,47554,4820,47473) (4832,47554,4820,47473)
\N
(11590,8292,11539,8272) (11590,8292,11539,8272)
(8193,33323,8106,33317) (8193,33323,8106,33317)
(16043,14799,16001,14710) (16043,14799,16001,14710)
(19574,11395,19514,11316) (19574,11395,19514,11316)
(26290,41424,26224,41342) (26290,41424,26224,41342)
(22844,12516,22807,12471) (22844,12516,22807,12471)
\N
(15709,49580,15655,49553) (15709,49580,15655,49553)
(13387,28084,13379,28066) (13387,28084,13379,28066)
(2780,38807,2690,38711) (2780,38807,2690,38711)
...@@ -305,6 +329,7 @@ ...@@ -305,6 +329,7 @@
(47262,11940,47201,11939) (47262,11940,47201,11939)
(30584,42868,30555,42838) (30584,42868,30555,42838)
(23144,24089,23056,24067) (23144,24089,23056,24067)
\N
(35930,11609,35847,11573) (35930,11609,35847,11573)
(7812,17271,7789,17203) (7812,17271,7789,17203)
(17946,37554,17878,37480) (17946,37554,17878,37480)
...@@ -322,10 +347,12 @@ ...@@ -322,10 +347,12 @@
(48976,17733,48962,17731) (48976,17733,48962,17731)
(10686,41470,10597,41434) (10686,41470,10597,41434)
(18053,27059,17989,27012) (18053,27059,17989,27012)
\N
(35495,25950,35459,25912) (35495,25950,35459,25912)
(41896,45014,41881,44999) (41896,45014,41881,44999)
(22654,41896,22572,41801) (22654,41896,22572,41801)
(18581,7087,18524,6988) (18581,7087,18524,6988)
\N
(14697,22406,14681,22311) (14697,22406,14681,22311)
(40092,28122,40043,28030) (40092,28122,40043,28030)
(35844,24243,35816,24238) (35844,24243,35816,24238)
...@@ -362,10 +389,12 @@ ...@@ -362,10 +389,12 @@
(6843,17280,6765,17248) (6843,17280,6765,17248)
(16972,39744,16912,39700) (16972,39744,16912,39700)
(10608,38741,10553,38708) (10608,38741,10553,38708)
\N
(4917,34801,4828,34766) (4917,34801,4828,34766)
(39281,33659,39268,33618) (39281,33659,39268,33618)
(31706,7119,31645,7063) (31706,7119,31645,7063)
(3427,44006,3422,44004) (3427,44006,3422,44004)
\N
(10134,42608,10044,42599) (10134,42608,10044,42599)
(26294,32080,26200,32068) (26294,32080,26200,32068)
(21777,34680,21769,34606) (21777,34680,21769,34606)
...@@ -389,6 +418,7 @@ ...@@ -389,6 +418,7 @@
(34220,27947,34132,27865) (34220,27947,34132,27865)
(35105,39792,35011,39727) (35105,39792,35011,39727)
(21919,27314,21839,27286) (21919,27314,21839,27286)
\N
(23963,3723,23917,3699) (23963,3723,23917,3699)
(16312,14078,16236,14045) (16312,14078,16236,14045)
(19233,49824,19185,49794) (19233,49824,19185,49794)
...@@ -411,6 +441,7 @@ ...@@ -411,6 +441,7 @@
(16422,13957,16376,13897) (16422,13957,16376,13897)
(47369,7665,47353,7629) (47369,7665,47353,7629)
(11982,40874,11956,40806) (11982,40874,11956,40806)
\N
(9552,27580,9496,27562) (9552,27580,9496,27562)
(32247,19399,32176,19337) (32247,19399,32176,19337)
(32704,2169,32635,2091) (32704,2169,32635,2091)
...@@ -422,6 +453,7 @@ ...@@ -422,6 +453,7 @@
(6326,32360,6267,32317) (6326,32360,6267,32317)
(1711,47519,1654,47430) (1711,47519,1654,47430)
(49540,16510,49521,16426) (49540,16510,49521,16426)
\N
(26975,618,26908,579) (26975,618,26908,579)
(24118,30880,24020,30821) (24118,30880,24020,30821)
(3675,15477,3625,15418) (3675,15477,3625,15418)
...@@ -453,6 +485,7 @@ ...@@ -453,6 +485,7 @@
(44002,43326,43920,43257) (44002,43326,43920,43257)
(30337,1023,30271,968) (30337,1023,30271,968)
(34436,23357,34432,23345) (34436,23357,34432,23345)
\N
(21367,8168,21353,8091) (21367,8168,21353,8091)
(36370,21611,36369,21569) (36370,21611,36369,21569)
(4152,36488,4080,36476) (4152,36488,4080,36476)
...@@ -461,26 +494,32 @@ ...@@ -461,26 +494,32 @@
(12574,3072,12573,2975) (12574,3072,12573,2975)
(3995,21243,3943,21167) (3995,21243,3943,21167)
(44553,30126,44513,30108) (44553,30126,44513,30108)
\N
(4599,45275,4552,45254) (4599,45275,4552,45254)
(33191,11404,33176,11348) (33191,11404,33176,11348)
\N
(14245,18633,14177,18540) (14245,18633,14177,18540)
(32457,20705,32393,20700) (32457,20705,32393,20700)
(40052,10499,40016,10457) (40052,10499,40016,10457)
(29824,44065,29785,44037) (29824,44065,29785,44037)
(31613,12565,31557,12543) (31613,12565,31557,12543)
(42692,29000,42652,28996) (42692,29000,42652,28996)
\N
(40680,22219,40603,22140) (40680,22219,40603,22140)
\N
(33575,27661,33488,27644) (33575,27661,33488,27644)
(46194,1385,46184,1355) (46194,1385,46184,1355)
(38442,48501,38407,48426) (38442,48501,38407,48426)
(25305,21544,25236,21523) (25305,21544,25236,21523)
(15562,8226,15561,8208) (15562,8226,15561,8208)
\N
(20844,43614,20752,43558) (20844,43614,20752,43558)
(22566,30541,22554,30532) (22566,30541,22554,30532)
(2760,47802,2672,47789) (2760,47802,2672,47789)
(25515,30745,25433,30675) (25515,30745,25433,30675)
(48382,45134,48382,45093) (48382,45134,48382,45093)
(9940,27094,9871,27087) (9940,27094,9871,27087)
\N
(48690,44361,48610,44338) (48690,44361,48610,44338)
(18992,11585,18899,11582) (18992,11585,18899,11582)
(21551,49983,21492,49885) (21551,49983,21492,49885)
...@@ -495,15 +534,19 @@ ...@@ -495,15 +534,19 @@
(5583,46538,5495,46531) (5583,46538,5495,46531)
(6084,35950,6079,35895) (6084,35950,6079,35895)
(3503,23096,3437,23024) (3503,23096,3437,23024)
\N
(45275,8420,45244,8418) (45275,8420,45244,8418)
(13514,45251,13491,45249) (13514,45251,13491,45249)
(42112,2748,42047,2668) (42112,2748,42047,2668)
\N
(7810,21907,7806,21878) (7810,21907,7806,21878)
(48378,36029,48303,35979) (48378,36029,48303,35979)
(32568,48605,32510,48563) (32568,48605,32510,48563)
(859,18915,810,18915) (859,18915,810,18915)
(41963,17950,41939,17915) (41963,17950,41939,17915)
\N
(42723,8031,42685,7955) (42723,8031,42685,7955)
\N
(19587,5965,19556,5961) (19587,5965,19556,5961)
(8713,33083,8629,32996) (8713,33083,8629,32996)
(21243,7769,21226,7740) (21243,7769,21226,7740)
...@@ -541,6 +584,7 @@ ...@@ -541,6 +584,7 @@
(1912,23580,1840,23504) (1912,23580,1840,23504)
(38165,16185,38076,16154) (38165,16185,38076,16154)
(6729,1179,6637,1177) (6729,1179,6637,1177)
\N
(6994,45406,6983,45325) (6994,45406,6983,45325)
(2912,21327,2908,21305) (2912,21327,2908,21305)
(14678,14244,14659,14222) (14678,14244,14659,14222)
...@@ -551,6 +595,7 @@ ...@@ -551,6 +595,7 @@
(24790,27196,24695,27118) (24790,27196,24695,27118)
(38806,1961,38795,1906) (38806,1961,38795,1906)
(23290,4487,23212,4416) (23290,4487,23212,4416)
\N
(35035,24337,34990,24297) (35035,24337,34990,24297)
(5549,38948,5549,38891) (5549,38948,5549,38891)
(24558,15492,24501,15425) (24558,15492,24501,15425)
...@@ -567,7 +612,9 @@ ...@@ -567,7 +612,9 @@
(45803,20406,45710,20371) (45803,20406,45710,20371)
(34730,17672,34658,17606) (34730,17672,34658,17606)
(8809,6323,8798,6232) (8809,6323,8798,6232)
\N
(39471,23837,39390,23749) (39471,23837,39390,23749)
\N
(34078,17435,33987,17433) (34078,17435,33987,17433)
(9133,4544,9041,4509) (9133,4544,9041,4509)
(47274,29126,47242,29060) (47274,29126,47242,29060)
...@@ -580,11 +627,13 @@ ...@@ -580,11 +627,13 @@
(45277,47456,45240,47422) (45277,47456,45240,47422)
(26482,46607,26482,46570) (26482,46607,26482,46570)
(41400,33898,41397,33802) (41400,33898,41397,33802)
\N
(49853,18504,49848,18503) (49853,18504,49848,18503)
(11528,25165,11476,25080) (11528,25165,11476,25080)
(49902,41752,49818,41746) (49902,41752,49818,41746)
(1956,47506,1922,47424) (1956,47506,1922,47424)
(21834,22058,21802,21964) (21834,22058,21802,21964)
\N
(19414,21842,19386,21822) (19414,21842,19386,21822)
(34801,13722,34744,13681) (34801,13722,34744,13681)
(13924,29243,13835,29160) (13924,29243,13835,29160)
...@@ -596,7 +645,9 @@ ...@@ -596,7 +645,9 @@
(16158,27510,16099,27467) (16158,27510,16099,27467)
(41184,6400,41148,6317) (41184,6400,41148,6317)
(1847,42471,1829,42426) (1847,42471,1829,42426)
\N
(14409,48602,14320,48555) (14409,48602,14320,48555)
\N
(38137,42951,38045,42918) (38137,42951,38045,42918)
(42875,2312,42832,2243) (42875,2312,42832,2243)
(27242,30617,27181,30535) (27242,30617,27181,30535)
...@@ -610,6 +661,7 @@ ...@@ -610,6 +661,7 @@
(6575,33949,6484,33900) (6575,33949,6484,33900)
(44812,35980,44800,35913) (44812,35980,44800,35913)
(37577,13064,37495,13019) (37577,13064,37495,13019)
\N
(30891,29967,30814,29884) (30891,29967,30814,29884)
(15829,28836,15753,28807) (15829,28836,15753,28807)
(11128,34180,11126,34117) (11128,34180,11126,34117)
...@@ -628,10 +680,12 @@ ...@@ -628,10 +680,12 @@
(31609,49393,31512,49366) (31609,49393,31512,49366)
(26183,32888,26135,32824) (26183,32888,26135,32824)
(46198,26153,46180,26149) (46198,26153,46180,26149)
\N
(45383,16904,45353,16888) (45383,16904,45353,16888)
(7132,11408,7091,11338) (7132,11408,7091,11338)
(48262,43227,48236,43159) (48262,43227,48236,43159)
(31722,12861,31675,12810) (31722,12861,31675,12810)
\N
(41695,48924,41691,48921) (41695,48924,41691,48921)
(48318,12877,48287,12802) (48318,12877,48287,12802)
(12069,32241,11978,32231) (12069,32241,11978,32231)
...@@ -645,6 +699,7 @@ ...@@ -645,6 +699,7 @@
(39497,48412,39413,48318) (39497,48412,39413,48318)
(1058,11132,979,11051) (1058,11132,979,11051)
(45623,31417,45548,31381) (45623,31417,45548,31381)
\N
(23887,31921,23876,31891) (23887,31921,23876,31891)
(7797,1244,7785,1155) (7797,1244,7785,1155)
(23679,43650,23594,43644) (23679,43650,23594,43644)
...@@ -654,10 +709,12 @@ ...@@ -654,10 +709,12 @@
(36101,41895,36085,41810) (36101,41895,36085,41810)
(39617,39211,39544,39191) (39617,39211,39544,39191)
(37437,6604,37434,6585) (37437,6604,37434,6585)
\N
(7749,32601,7740,32515) (7749,32601,7740,32515)
(26203,34991,26159,34946) (26203,34991,26159,34946)
(31856,39006,31783,39003) (31856,39006,31783,39003)
(45828,24767,45788,24723) (45828,24767,45788,24723)
\N
(49836,35965,49757,35871) (49836,35965,49757,35871)
(44113,49024,44033,48995) (44113,49024,44033,48995)
(38237,22326,38187,22253) (38237,22326,38187,22253)
...@@ -674,6 +731,7 @@ ...@@ -674,6 +731,7 @@
(39256,7697,39225,7604) (39256,7697,39225,7604)
(25908,32801,25854,32770) (25908,32801,25854,32770)
(25215,40109,25201,40106) (25215,40109,25201,40106)
\N
(23280,4613,23190,4596) (23280,4613,23190,4596)
(32440,30879,32405,30807) (32440,30879,32405,30807)
(49156,4224,49126,4126) (49156,4224,49126,4126)
...@@ -681,6 +739,7 @@ ...@@ -681,6 +739,7 @@
(20978,8226,20930,8170) (20978,8226,20930,8170)
(32127,22611,32126,22579) (32127,22611,32126,22579)
(21764,26509,21701,26455) (21764,26509,21701,26455)
\N
(32923,2834,32914,2830) (32923,2834,32914,2830)
(7499,25331,7426,25300) (7499,25331,7426,25300)
(6163,36942,6107,36908) (6163,36942,6107,36908)
...@@ -691,6 +750,7 @@ ...@@ -691,6 +750,7 @@
(24898,40195,24855,40174) (24898,40195,24855,40174)
(43029,982,43004,952) (43029,982,43004,952)
(26266,7962,26252,7950) (26266,7962,26252,7950)
\N
(11308,44367,11210,44322) (11308,44367,11210,44322)
(8902,28402,8808,28334) (8902,28402,8808,28334)
(11671,19619,11665,19549) (11671,19619,11665,19549)
...@@ -713,6 +773,7 @@ ...@@ -713,6 +773,7 @@
(10043,12479,10009,12391) (10043,12479,10009,12391)
(27584,2345,27578,2257) (27584,2345,27578,2257)
(30889,8253,30866,8167) (30889,8253,30866,8167)
\N
(5176,48928,5107,48838) (5176,48928,5107,48838)
(9781,21023,9745,20976) (9781,21023,9745,20976)
(32430,27908,32404,27859) (32430,27908,32404,27859)
...@@ -733,18 +794,22 @@ ...@@ -733,18 +794,22 @@
(42375,33603,42350,33539) (42375,33603,42350,33539)
(3184,8308,3129,8238) (3184,8308,3129,8238)
(26667,15813,26661,15785) (26667,15813,26661,15785)
\N
(5760,49617,5730,49546) (5760,49617,5730,49546)
(794,27001,777,26992) (794,27001,777,26992)
(13518,45289,13459,45235) (13518,45289,13459,45235)
\N
(34430,29754,34363,29736) (34430,29754,34363,29736)
(37912,24574,37880,24543) (37912,24574,37880,24543)
(8130,2270,8083,2258) (8130,2270,8083,2258)
\N
(26930,21516,26848,21455) (26930,21516,26848,21455)
(3634,33511,3592,33489) (3634,33511,3592,33489)
(33080,5036,33035,4972) (33080,5036,33035,4972)
(48389,13942,48316,13915) (48389,13942,48316,13915)
(9231,5298,9150,5232) (9231,5298,9150,5232)
(1357,10601,1321,10548) (1357,10601,1321,10548)
\N
(35175,15295,35091,15269) (35175,15295,35091,15269)
(33917,36863,33879,36784) (33917,36863,33879,36784)
(8279,12052,8239,12021) (8279,12052,8239,12021)
...@@ -767,6 +832,7 @@ ...@@ -767,6 +832,7 @@
(40782,11648,40763,11631) (40782,11648,40763,11631)
(18516,10143,18423,10137) (18516,10143,18423,10137)
(39068,551,39005,491) (39068,551,39005,491)
\N
(39672,12000,39575,11913) (39672,12000,39575,11913)
(18508,37761,18464,37712) (18508,37761,18464,37712)
(19083,35318,19079,35280) (19083,35318,19079,35280)
...@@ -778,12 +844,14 @@ ...@@ -778,12 +844,14 @@
(22126,27444,22062,27366) (22126,27444,22062,27366)
(15105,8717,15078,8660) (15105,8717,15078,8660)
(43987,33145,43940,33083) (43987,33145,43940,33083)
\N
(46833,38652,46755,38612) (46833,38652,46755,38612)
(47768,27202,47681,27169) (47768,27202,47681,27169)
(22792,1183,22731,1152) (22792,1183,22731,1152)
(25650,43310,25562,43247) (25650,43310,25562,43247)
(37084,20116,37045,20057) (37084,20116,37045,20057)
(47461,32556,47423,32555) (47461,32556,47423,32555)
\N
(41225,18124,41215,18117) (41225,18124,41215,18117)
(17623,25218,17553,25158) (17623,25218,17553,25158)
(13770,21703,13770,21700) (13770,21703,13770,21700)
...@@ -792,6 +860,7 @@ ...@@ -792,6 +860,7 @@
(45118,22318,45049,22224) (45118,22318,45049,22224)
(42287,26616,42281,26560) (42287,26616,42281,26560)
(25525,6327,25468,6244) (25525,6327,25468,6244)
\N
(40756,31634,40713,31568) (40756,31634,40713,31568)
(23105,26565,23078,26565) (23105,26565,23078,26565)
(48268,39862,48265,39827) (48268,39862,48265,39827)
...@@ -835,6 +904,7 @@ ...@@ -835,6 +904,7 @@
(22301,46291,22291,46274) (22301,46291,22291,46274)
(34142,14181,34078,14158) (34142,14181,34078,14158)
(11258,29748,11198,29742) (11258,29748,11198,29742)
\N
(37450,6943,37398,6882) (37450,6943,37398,6882)
(41675,27207,41643,27130) (41675,27207,41643,27130)
(13578,49562,13573,49479) (13578,49562,13573,49479)
...@@ -856,6 +926,7 @@ ...@@ -856,6 +926,7 @@
(45738,35524,45706,35496) (45738,35524,45706,35496)
(21575,5151,21493,5092) (21575,5151,21493,5092)
(2194,10052,2172,9960) (2194,10052,2172,9960)
\N
(47735,24472,47682,24460) (47735,24472,47682,24460)
(46740,35700,46695,35609) (46740,35700,46695,35609)
(24647,42807,24568,42779) (24647,42807,24568,42779)
...@@ -873,10 +944,12 @@ ...@@ -873,10 +944,12 @@
(38576,35408,38539,35392) (38576,35408,38539,35392)
(16776,46244,16700,46176) (16776,46244,16700,46176)
(38251,25969,38168,25948) (38251,25969,38168,25948)
\N
(3512,32256,3417,32242) (3512,32256,3417,32242)
(31923,31225,31832,31197) (31923,31225,31832,31197)
(5144,4969,5124,4937) (5144,4969,5124,4937)
(34499,46164,34430,46162) (34499,46164,34430,46162)
\N
(39432,31907,39388,31828) (39432,31907,39388,31828)
(17316,24606,17221,24533) (17316,24606,17221,24533)
(20751,49352,20709,49323) (20751,49352,20709,49323)
...@@ -885,18 +958,23 @@ ...@@ -885,18 +958,23 @@
(21929,30617,21894,30598) (21929,30617,21894,30598)
(35539,12421,35536,12355) (35539,12421,35536,12355)
(24938,45583,24870,45525) (24938,45583,24870,45525)
\N
(27442,33090,27353,33064) (27442,33090,27353,33064)
(23949,12046,23949,12036) (23949,12046,23949,12036)
(11399,377,11360,294) (11399,377,11360,294)
(47099,9989,47023,9942) (47099,9989,47023,9942)
(641,33118,639,33084) (641,33118,639,33084)
(13687,41308,13682,41290) (13687,41308,13682,41290)
\N
(3682,17727,3645,17660) (3682,17727,3645,17660)
(13262,19396,13185,19357) (13262,19396,13185,19357)
(18791,389,18774,366) (18791,389,18774,366)
(12489,45384,12403,45369) (12489,45384,12403,45369)
\N
(12065,6364,12015,6325) (12065,6364,12015,6325)
\N
(32705,23886,32619,23827) (32705,23886,32619,23827)
\N
(7004,37333,6911,37240) (7004,37333,6911,37240)
(28594,38078,28530,38050) (28594,38078,28530,38050)
(5805,21797,5710,21701) (5805,21797,5710,21701)
...@@ -905,10 +983,12 @@ ...@@ -905,10 +983,12 @@
(5387,39087,5326,38994) (5387,39087,5326,38994)
(11703,14003,11671,13912) (11703,14003,11671,13912)
(4093,10472,4091,10470) (4093,10472,4091,10470)
\N
(14110,49740,14063,49695) (14110,49740,14063,49695)
(4170,470,4097,463) (4170,470,4097,463)
(22219,17296,22164,17221) (22219,17296,22164,17221)
(2505,20879,2446,20842) (2505,20879,2446,20842)
\N
(47235,24744,47151,24667) (47235,24744,47151,24667)
(30035,23234,30013,23197) (30035,23234,30013,23197)
(3489,11659,3461,11607) (3489,11659,3461,11607)
...@@ -928,7 +1008,9 @@ ...@@ -928,7 +1008,9 @@
(1785,28248,1771,28219) (1785,28248,1771,28219)
(21553,36307,21505,36257) (21553,36307,21505,36257)
(7552,18199,7527,18119) (7552,18199,7527,18119)
\N
(14410,30977,14349,30944) (14410,30977,14349,30944)
\N
(20940,49142,20901,49069) (20940,49142,20901,49069)
(36892,5522,36810,5478) (36892,5522,36810,5478)
(40192,20926,40179,20926) (40192,20926,40179,20926)
...@@ -950,6 +1032,7 @@ ...@@ -950,6 +1032,7 @@
(39859,932,39829,840) (39859,932,39829,840)
(33995,10888,33902,10793) (33995,10888,33902,10793)
(32972,22342,32951,22340) (32972,22342,32951,22340)
\N
(19951,10161,19932,10111) (19951,10161,19932,10111)
(26779,45188,26745,45151) (26779,45188,26745,45151)
(11235,13593,11184,13589) (11235,13593,11184,13589)
...@@ -960,6 +1043,7 @@ ...@@ -960,6 +1043,7 @@
(9326,14927,9295,14848) (9326,14927,9295,14848)
(41340,11312,41311,11303) (41340,11312,41311,11303)
(6500,44553,6454,44515) (6500,44553,6454,44515)
\N
(8198,26841,8104,26749) (8198,26841,8104,26749)
(47761,34183,47702,34140) (47761,34183,47702,34140)
(43637,17912,43577,17910) (43637,17912,43577,17910)
...@@ -974,6 +1058,7 @@ ...@@ -974,6 +1058,7 @@
(22684,266,22656,181) (22684,266,22656,181)
(13299,17075,13241,17074) (13299,17075,13241,17074)
(6924,30196,6851,30113) (6924,30196,6851,30113)
\N
(4367,13150,4298,13053) (4367,13150,4298,13053)
(37381,6101,37380,6046) (37381,6101,37380,6046)
(10307,28383,10270,28349) (10307,28383,10270,28349)
...@@ -1002,6 +1087,7 @@ ...@@ -1002,6 +1087,7 @@
(38924,41305,38872,41285) (38924,41305,38872,41285)
(49981,34876,49898,34786) (49981,34876,49898,34786)
(30501,35099,30418,35011) (30501,35099,30418,35011)
\N
(45862,41438,45854,41434) (45862,41438,45854,41434)
(38448,31878,38391,31822) (38448,31878,38391,31822)
(8278,43463,8274,43378) (8278,43463,8274,43378)
...@@ -1009,6 +1095,7 @@ ...@@ -1009,6 +1095,7 @@
(49501,40346,49447,40275) (49501,40346,49447,40275)
(31651,43116,31560,43106) (31651,43116,31560,43106)
(44244,32940,44244,32926) (44244,32940,44244,32926)
\N
(17941,18079,17938,18035) (17941,18079,17938,18035)
(9518,32524,9470,32511) (9518,32524,9470,32511)
(30707,43469,30686,43457) (30707,43469,30686,43457)
...@@ -1018,6 +1105,7 @@ ...@@ -1018,6 +1105,7 @@
(26194,47446,26194,47407) (26194,47446,26194,47407)
(30386,24675,30333,24652) (30386,24675,30333,24652)
(42707,44466,42688,44456) (42707,44466,42688,44456)
\N
(43395,18525,43320,18467) (43395,18525,43320,18467)
(28346,32259,28276,32196) (28346,32259,28276,32196)
(45106,40786,45026,40767) (45106,40786,45026,40767)
...@@ -1029,6 +1117,7 @@ ...@@ -1029,6 +1117,7 @@
(32511,24029,32482,23970) (32511,24029,32482,23970)
(22593,34444,22519,34399) (22593,34444,22519,34399)
(41534,15495,41518,15455) (41534,15495,41518,15455)
\N
(35862,19997,35818,19928) (35862,19997,35818,19928)
(31419,8323,31404,8285) (31419,8323,31404,8285)
(31036,19023,30978,19000) (31036,19023,30978,19000)
...@@ -1047,6 +1136,7 @@ ...@@ -1047,6 +1136,7 @@
(44492,45607,44483,45532) (44492,45607,44483,45532)
(22699,4301,22628,4240) (22699,4301,22628,4240)
(27407,24241,27335,24158) (27407,24241,27335,24158)
\N
(38424,34460,38403,34458) (38424,34460,38403,34458)
(46572,48456,46554,48402) (46572,48456,46554,48402)
(39676,29056,39643,28981) (39676,29056,39643,28981)
...@@ -1059,6 +1149,7 @@ ...@@ -1059,6 +1149,7 @@
(35060,28561,34965,28553) (35060,28561,34965,28553)
(23970,47522,23887,47428) (23970,47522,23887,47428)
(46803,19155,46790,19131) (46803,19155,46790,19131)
\N
(46151,49848,46058,49830) (46151,49848,46058,49830)
(45266,40766,45209,40738) (45266,40766,45209,40738)
(31041,32195,31007,32110) (31041,32195,31007,32110)
...@@ -1134,6 +1225,7 @@ ...@@ -1134,6 +1225,7 @@
(27907,2695,27830,2596) (27907,2695,27830,2596)
(16309,44972,16222,44966) (16309,44972,16222,44966)
(6230,22262,6214,22249) (6230,22262,6214,22249)
\N
(9266,39458,9175,39447) (9266,39458,9175,39447)
(33120,33548,33087,33538) (33120,33548,33087,33538)
(43659,11416,43599,11375) (43659,11416,43599,11375)
...@@ -1168,7 +1260,9 @@ ...@@ -1168,7 +1260,9 @@
(34913,7234,34894,7220) (34913,7234,34894,7220)
(15758,26445,15738,26421) (15758,26445,15738,26421)
(23710,7272,23705,7270) (23710,7272,23705,7270)
\N
(33679,13468,33628,13415) (33679,13468,33628,13415)
\N
(31271,40495,31178,40461) (31271,40495,31178,40461)
(759,187,662,163) (759,187,662,163)
(14419,40434,14402,40381) (14419,40434,14402,40381)
...@@ -1187,7 +1281,9 @@ ...@@ -1187,7 +1281,9 @@
(30333,5952,30331,5886) (30333,5952,30331,5886)
(444,12587,430,12497) (444,12587,430,12497)
(7592,22353,7541,22287) (7592,22353,7541,22287)
\N
(13387,37414,13329,37318) (13387,37414,13329,37318)
\N
(21504,35227,21449,35210) (21504,35227,21449,35210)
(18533,12909,18438,12848) (18533,12909,18438,12848)
(41049,27148,41048,27088) (41049,27148,41048,27088)
...@@ -1207,6 +1303,7 @@ ...@@ -1207,6 +1303,7 @@
(14854,5819,14785,5798) (14854,5819,14785,5798)
(19142,44414,19085,44406) (19142,44414,19085,44406)
(31179,27081,31145,27005) (31179,27081,31145,27005)
\N
(19692,8711,19659,8642) (19692,8711,19659,8642)
(39689,14082,39603,14051) (39689,14082,39603,14051)
(11181,39091,11119,39002) (11181,39091,11119,39002)
...@@ -1224,21 +1321,26 @@ ...@@ -1224,21 +1321,26 @@
(49820,7990,49771,7967) (49820,7990,49771,7967)
(26424,29698,26339,29693) (26424,29698,26339,29693)
(35146,6820,35071,6817) (35146,6820,35071,6817)
\N
(15438,18788,15435,18729) (15438,18788,15435,18729)
(47115,5235,47096,5143) (47115,5235,47096,5143)
(33982,9002,33915,8925) (33982,9002,33915,8925)
(14206,37041,14174,36955) (14206,37041,14174,36955)
(24300,36616,24232,36613) (24300,36616,24232,36613)
(44658,1788,44580,1769) (44658,1788,44580,1769)
\N
(31539,43550,31463,43464) (31539,43550,31463,43464)
\N
(16722,9673,16633,9652) (16722,9673,16633,9652)
(44813,20573,44733,20544) (44813,20573,44733,20544)
\N
(42114,32559,42040,32552) (42114,32559,42040,32552)
(41561,36244,41477,36241) (41561,36244,41477,36241)
(39589,33796,39548,33716) (39589,33796,39548,33716)
(20365,26770,20329,26709) (20365,26770,20329,26709)
(28511,208,28479,114) (28511,208,28479,114)
(10010,25524,9930,25508) (10010,25524,9930,25508)
\N
(1549,45666,1512,45621) (1549,45666,1512,45621)
(16193,1927,16166,1869) (16193,1927,16166,1869)
(34486,11500,34421,11401) (34486,11500,34421,11401)
...@@ -1265,9 +1367,11 @@ ...@@ -1265,9 +1367,11 @@
(48720,40687,48623,40610) (48720,40687,48623,40610)
(21161,30970,21146,30896) (21161,30970,21146,30896)
(9507,36316,9411,36261) (9507,36316,9411,36261)
\N
(36643,18136,36614,18106) (36643,18136,36614,18106)
(1858,7457,1851,7402) (1858,7457,1851,7402)
(24452,44306,24372,44252) (24452,44306,24372,44252)
\N
(3292,807,3205,806) (3292,807,3205,806)
(6845,30694,6792,30627) (6845,30694,6792,30627)
(21333,25786,21237,25751) (21333,25786,21237,25751)
...@@ -1282,14 +1386,18 @@ ...@@ -1282,14 +1386,18 @@
(1746,40342,1736,40333) (1746,40342,1736,40333)
(49187,29737,49139,29681) (49187,29737,49139,29681)
(27657,44952,27581,44917) (27657,44952,27581,44917)
\N
(35407,30177,35345,30151) (35407,30177,35345,30151)
(4071,40568,4058,40544) (4071,40568,4058,40544)
(25998,30513,25965,30452) (25998,30513,25965,30452)
(8195,45403,8097,45310) (8195,45403,8097,45310)
(8276,41689,8183,41670) (8276,41689,8183,41670)
\N
(48435,28550,48355,28455) (48435,28550,48355,28455)
\N
(8139,25449,8136,25380) (8139,25449,8136,25380)
(20302,25574,20297,25531) (20302,25574,20297,25531)
\N
(22055,46659,22034,46567) (22055,46659,22034,46567)
(3531,49962,3463,49934) (3531,49962,3463,49934)
(46828,46938,46739,46902) (46828,46938,46739,46902)
...@@ -1309,6 +1417,7 @@ ...@@ -1309,6 +1417,7 @@
(30078,48975,30021,48970) (30078,48975,30021,48970)
(2847,32036,2819,31966) (2847,32036,2819,31966)
(25250,10147,25165,10140) (25250,10147,25165,10140)
\N
(15643,38953,15585,38947) (15643,38953,15585,38947)
(40792,29798,40731,29731) (40792,29798,40731,29731)
(43249,26858,43215,26835) (43249,26858,43215,26835)
...@@ -1343,6 +1452,7 @@ ...@@ -1343,6 +1452,7 @@
(27119,25969,27094,25884) (27119,25969,27094,25884)
(36155,11420,36120,11405) (36155,11420,36120,11405)
(41880,47111,41808,47049) (41880,47111,41808,47049)
\N
(17554,20379,17482,20374) (17554,20379,17482,20374)
(38848,5936,38763,5869) (38848,5936,38763,5869)
(28324,31019,28276,30944) (28324,31019,28276,30944)
...@@ -1358,10 +1468,13 @@ ...@@ -1358,10 +1468,13 @@
(21237,31901,21188,31849) (21237,31901,21188,31849)
(23340,38537,23253,38472) (23340,38537,23253,38472)
(17269,3682,17183,3586) (17269,3682,17183,3586)
\N
(48200,15377,48110,15369) (48200,15377,48110,15369)
(16546,22195,16477,22142) (16546,22195,16477,22142)
(21436,8460,21378,8449) (21436,8460,21378,8449)
\N
(46598,17235,46577,17138) (46598,17235,46577,17138)
\N
(30212,36184,30152,36092) (30212,36184,30152,36092)
(18037,155,17941,109) (18037,155,17941,109)
(4945,29201,4933,29184) (4945,29201,4933,29184)
...@@ -1371,10 +1484,12 @@ ...@@ -1371,10 +1484,12 @@
(1801,15549,1710,15461) (1801,15549,1710,15461)
(48988,34819,48951,34764) (48988,34819,48951,34764)
(20904,32547,20856,32497) (20904,32547,20856,32497)
\N
(32654,35183,32606,35144) (32654,35183,32606,35144)
(14336,11763,14328,11712) (14336,11763,14328,11712)
(30546,23808,30463,23773) (30546,23808,30463,23773)
(6813,21006,6781,20924) (6813,21006,6781,20924)
\N
(14199,22030,14185,21934) (14199,22030,14185,21934)
(3783,14709,3747,14658) (3783,14709,3747,14658)
(49428,47052,49422,46973) (49428,47052,49422,46973)
...@@ -1382,18 +1497,22 @@ ...@@ -1382,18 +1497,22 @@
(29170,37260,29151,37181) (29170,37260,29151,37181)
(48924,24689,48894,24680) (48924,24689,48894,24680)
(48497,34052,48453,33966) (48497,34052,48453,33966)
\N
(21263,8203,21242,8176) (21263,8203,21242,8176)
(46537,3797,46462,3735) (46537,3797,46462,3735)
(18406,14579,18393,14563) (18406,14579,18393,14563)
\N
(11583,16529,11536,16471) (11583,16529,11536,16471)
(10564,46257,10478,46228) (10564,46257,10478,46228)
(49769,34513,49761,34458) (49769,34513,49761,34458)
\N
(9202,6482,9138,6391) (9202,6482,9138,6391)
(40387,37411,40357,37360) (40387,37411,40357,37360)
(11966,11802,11888,11751) (11966,11802,11888,11751)
(15551,47438,15486,47406) (15551,47438,15486,47406)
(12017,43288,11969,43230) (12017,43288,11969,43230)
(9717,22574,9701,22495) (9717,22574,9701,22495)
\N
(35083,49443,35075,49355) (35083,49443,35075,49355)
(33857,9320,33813,9269) (33857,9320,33813,9269)
(32106,10581,32012,10560) (32106,10581,32012,10560)
...@@ -1403,6 +1522,7 @@ ...@@ -1403,6 +1522,7 @@
(35399,40707,35359,40646) (35399,40707,35359,40646)
(29585,25576,29493,25556) (29585,25576,29493,25556)
(24919,7829,24911,7753) (24919,7829,24911,7753)
\N
(17049,48390,17022,48304) (17049,48390,17022,48304)
(25224,35012,25217,34922) (25224,35012,25217,34922)
(47397,20853,47346,20779) (47397,20853,47346,20779)
...@@ -1424,6 +1544,7 @@ ...@@ -1424,6 +1544,7 @@
(17505,36822,17418,36763) (17505,36822,17418,36763)
(36686,33534,36641,33476) (36686,33534,36641,33476)
(11347,9454,11289,9436) (11347,9454,11289,9436)
\N
(27816,34752,27745,34736) (27816,34752,27745,34736)
(44213,8559,44162,8461) (44213,8559,44162,8461)
(45359,26789,45315,26776) (45359,26789,45315,26776)
...@@ -1434,9 +1555,12 @@ ...@@ -1434,9 +1555,12 @@
(9606,45253,9582,45174) (9606,45253,9582,45174)
(30005,24521,29910,24496) (30005,24521,29910,24496)
(49332,35375,49309,35299) (49332,35375,49309,35299)
\N
(12164,33871,12075,33820) (12164,33871,12075,33820)
(19598,43327,19593,43314) (19598,43327,19593,43314)
\N
(3818,28584,3815,28504) (3818,28584,3815,28504)
\N
(35579,8611,35541,8604) (35579,8611,35541,8604)
(8811,20986,8750,20954) (8811,20986,8750,20954)
(16139,44777,16128,44686) (16139,44777,16128,44686)
...@@ -1448,6 +1572,7 @@ ...@@ -1448,6 +1572,7 @@
(7030,40790,7029,40711) (7030,40790,7029,40711)
(11676,23009,11665,22915) (11676,23009,11665,22915)
(33990,22561,33953,22474) (33990,22561,33953,22474)
\N
(30366,9447,30284,9353) (30366,9447,30284,9353)
(37626,32913,37596,32853) (37626,32913,37596,32853)
(7730,42561,7665,42470) (7730,42561,7665,42470)
...@@ -1462,6 +1587,7 @@ ...@@ -1462,6 +1587,7 @@
(25562,9849,25535,9802) (25562,9849,25535,9802)
(13348,46719,13260,46689) (13348,46719,13260,46689)
(30022,42196,30005,42160) (30022,42196,30005,42160)
\N
(22263,45954,22243,45950) (22263,45954,22243,45950)
(18918,18890,18820,18795) (18918,18890,18820,18795)
(31918,12003,31852,11989) (31918,12003,31852,11989)
...@@ -1475,11 +1601,14 @@ ...@@ -1475,11 +1601,14 @@
(33930,21090,33918,21009) (33930,21090,33918,21009)
(10444,2606,10407,2553) (10444,2606,10407,2553)
(28700,29782,28665,29703) (28700,29782,28665,29703)
\N
(1402,13497,1397,13465) (1402,13497,1397,13465)
\N
(24155,3075,24083,3062) (24155,3075,24083,3062)
(38378,1864,38339,1849) (38378,1864,38339,1849)
(29261,49910,29247,49818) (29261,49910,29247,49818)
(38139,37073,38098,37057) (38139,37073,38098,37057)
\N
(24468,41130,24418,41053) (24468,41130,24418,41053)
(9989,1015,9959,939) (9989,1015,9959,939)
(47001,33561,46994,33518) (47001,33561,46994,33518)
...@@ -1492,11 +1621,13 @@ ...@@ -1492,11 +1621,13 @@
(42423,26477,42349,26434) (42423,26477,42349,26434)
(10039,920,9952,833) (10039,920,9952,833)
(16851,21338,16846,21314) (16851,21338,16846,21314)
\N
(23104,7700,23062,7688) (23104,7700,23062,7688)
(5619,2079,5611,2075) (5619,2079,5611,2075)
(31471,49632,31375,49549) (31471,49632,31375,49549)
(25793,12526,25783,12456) (25793,12526,25783,12456)
(3935,29528,3866,29513) (3935,29528,3866,29513)
\N
(5957,1646,5947,1595) (5957,1646,5947,1595)
(2467,22376,2429,22349) (2467,22376,2429,22349)
(43715,32673,43664,32595) (43715,32673,43664,32595)
...@@ -1506,6 +1637,7 @@ ...@@ -1506,6 +1637,7 @@
(49061,14516,49008,14442) (49061,14516,49008,14442)
(43996,6129,43955,6074) (43996,6129,43955,6074)
(7728,33802,7670,33703) (7728,33802,7670,33703)
\N
(6131,36766,6053,36749) (6131,36766,6053,36749)
(35791,16361,35696,16329) (35791,16361,35696,16329)
(45759,8935,45675,8886) (45759,8935,45675,8886)
...@@ -1530,6 +1662,7 @@ ...@@ -1530,6 +1662,7 @@
(12975,3706,12913,3637) (12975,3706,12913,3637)
(30925,21660,30826,21649) (30925,21660,30826,21649)
(1455,14229,1410,14156) (1455,14229,1410,14156)
\N
(17583,16486,17562,16474) (17583,16486,17562,16474)
(33377,3387,33333,3381) (33377,3387,33333,3381)
(784,6177,750,6095) (784,6177,750,6095)
...@@ -1541,6 +1674,7 @@ ...@@ -1541,6 +1674,7 @@
(14257,11549,14242,11522) (14257,11549,14242,11522)
(14990,15217,14904,15211) (14990,15217,14904,15211)
(21395,21533,21307,21520) (21395,21533,21307,21520)
\N
(31948,33725,31885,33694) (31948,33725,31885,33694)
(433,49033,390,48961) (433,49033,390,48961)
(45205,609,45173,523) (45205,609,45173,523)
...@@ -1553,7 +1687,9 @@ ...@@ -1553,7 +1687,9 @@
(24913,13361,24868,13268) (24913,13361,24868,13268)
(13824,40177,13792,40130) (13824,40177,13792,40130)
(25671,13555,25585,13494) (25671,13555,25585,13494)
\N
(20133,37769,20105,37679) (20133,37769,20105,37679)
\N
(26368,16734,26288,16726) (26368,16734,26288,16726)
(30545,35438,30458,35376) (30545,35438,30458,35376)
(48816,22926,48812,22831) (48816,22926,48812,22831)
...@@ -1561,6 +1697,7 @@ ...@@ -1561,6 +1697,7 @@
(11003,10859,10950,10765) (11003,10859,10950,10765)
(17288,8570,17247,8485) (17288,8570,17247,8485)
(38377,31415,38331,31379) (38377,31415,38331,31379)
\N
(19085,23425,19059,23326) (19085,23425,19059,23326)
(40059,17068,40052,17006) (40059,17068,40052,17006)
(18811,13493,18734,13394) (18811,13493,18734,13394)
...@@ -1575,6 +1712,7 @@ ...@@ -1575,6 +1712,7 @@
(12104,33531,12014,33501) (12104,33531,12014,33501)
(22311,41113,22215,41066) (22311,41113,22215,41066)
(25073,18721,25047,18656) (25073,18721,25047,18656)
\N
(14524,13486,14510,13390) (14524,13486,14510,13390)
(40040,36688,40000,36599) (40040,36688,40000,36599)
(21594,11473,21563,11436) (21594,11473,21563,11436)
...@@ -1584,22 +1722,28 @@ ...@@ -1584,22 +1722,28 @@
(28239,41377,28222,41308) (28239,41377,28222,41308)
(26404,11922,26317,11843) (26404,11922,26317,11843)
(41660,34586,41585,34501) (41660,34586,41585,34501)
\N
(21128,2384,21101,2368) (21128,2384,21101,2368)
(30209,16952,30156,16858) (30209,16952,30156,16858)
(39078,24963,39045,24898) (39078,24963,39045,24898)
(5598,1348,5499,1294) (5598,1348,5499,1294)
\N
(38474,7436,38450,7364) (38474,7436,38450,7364)
(15117,45734,15024,45693) (15117,45734,15024,45693)
\N
(23909,39853,23888,39780) (23909,39853,23888,39780)
(24292,30183,24282,30148) (24292,30183,24282,30148)
(48871,17661,48868,17637) (48871,17661,48868,17637)
(918,18752,847,18708) (918,18752,847,18708)
\N
(43615,16162,43606,16104) (43615,16162,43606,16104)
(33763,47410,33751,47409) (33763,47410,33751,47409)
(4798,6485,4773,6388) (4798,6485,4773,6388)
\N
(18524,41539,18433,41518) (18524,41539,18433,41518)
(47745,42449,47651,42364) (47745,42449,47651,42364)
(38936,21237,38864,21204) (38936,21237,38864,21204)
\N
(5251,3516,5194,3475) (5251,3516,5194,3475)
(22269,36269,22183,36228) (22269,36269,22183,36228)
(18736,40983,18685,40947) (18736,40983,18685,40947)
...@@ -1616,9 +1760,12 @@ ...@@ -1616,9 +1760,12 @@
(7045,18782,7028,18764) (7045,18782,7028,18764)
(41840,32018,41768,31938) (41840,32018,41768,31938)
(38416,17158,38330,17060) (38416,17158,38330,17060)
\N
(8605,39015,8605,38933) (8605,39015,8605,38933)
(5764,43548,5719,43496) (5764,43548,5719,43496)
\N
(20789,29902,20696,29843) (20789,29902,20696,29843)
\N
(36104,47896,36079,47816) (36104,47896,36079,47816)
(31736,13834,31722,13832) (31736,13834,31722,13832)
(32617,19701,32597,19684) (32617,19701,32597,19684)
...@@ -1631,15 +1778,18 @@ ...@@ -1631,15 +1778,18 @@
(35450,9580,35368,9563) (35450,9580,35368,9563)
(29281,37276,29247,37255) (29281,37276,29247,37255)
(6225,17192,6200,17135) (6225,17192,6200,17135)
\N
(43689,8119,43670,8028) (43689,8119,43670,8028)
(41917,49601,41835,49563) (41917,49601,41835,49563)
(44295,13116,44205,13078) (44295,13116,44205,13078)
(22721,44772,22667,44748) (22721,44772,22667,44748)
(32640,11107,32636,11050) (32640,11107,32636,11050)
(20639,28851,20613,28839) (20639,28851,20613,28839)
\N
(32479,10159,32446,10061) (32479,10159,32446,10061)
(27251,16978,27196,16959) (27251,16978,27196,16959)
(41401,33148,41339,33074) (41401,33148,41339,33074)
\N
(49001,8538,48989,8444) (49001,8538,48989,8444)
(37958,35843,37874,35802) (37958,35843,37874,35802)
(46969,41229,46903,41138) (46969,41229,46903,41138)
...@@ -1651,6 +1801,7 @@ ...@@ -1651,6 +1801,7 @@
(42688,11681,42666,11641) (42688,11681,42666,11641)
(47525,25005,47443,24907) (47525,25005,47443,24907)
(32439,14438,32397,14400) (32439,14438,32397,14400)
\N
(39667,19626,39622,19542) (39667,19626,39622,19542)
(1212,44525,1169,44516) (1212,44525,1169,44516)
(29766,4433,29668,4401) (29766,4433,29668,4401)
...@@ -1658,6 +1809,7 @@ ...@@ -1658,6 +1809,7 @@
(33859,17356,33827,17263) (33859,17356,33827,17263)
(28989,45953,28904,45854) (28989,45953,28904,45854)
(37211,30830,37113,30819) (37211,30830,37113,30819)
\N
(45220,26382,45219,26340) (45220,26382,45219,26340)
(12312,43250,12234,43246) (12312,43250,12234,43246)
(37775,41504,37762,41421) (37775,41504,37762,41421)
...@@ -1671,6 +1823,7 @@ ...@@ -1671,6 +1823,7 @@
(12019,4907,12015,4818) (12019,4907,12015,4818)
(38258,17973,38229,17923) (38258,17973,38229,17923)
(40575,29566,40477,29521) (40575,29566,40477,29521)
\N
(29715,45919,29697,45891) (29715,45919,29697,45891)
(11694,9510,11670,9490) (11694,9510,11670,9490)
(7053,44257,7012,44231) (7053,44257,7012,44231)
...@@ -1721,7 +1874,9 @@ ...@@ -1721,7 +1874,9 @@
(1023,23378,933,23317) (1023,23378,933,23317)
(30051,46118,29966,46039) (30051,46118,29966,46039)
(43499,46488,43496,46409) (43499,46488,43496,46409)
\N
(43531,2412,43447,2396) (43531,2412,43447,2396)
\N
(16034,32285,15976,32220) (16034,32285,15976,32220)
(12817,21365,12740,21298) (12817,21365,12740,21298)
(7607,47293,7585,47293) (7607,47293,7585,47293)
...@@ -1729,6 +1884,7 @@ ...@@ -1729,6 +1884,7 @@
(1848,21496,1839,21439) (1848,21496,1839,21439)
(17567,23073,17478,23046) (17567,23073,17478,23046)
(35813,31847,35807,31792) (35813,31847,35807,31792)
\N
(563,30859,540,30842) (563,30859,540,30842)
(13145,15488,13063,15433) (13145,15488,13063,15433)
(36754,37479,36731,37411) (36754,37479,36731,37411)
...@@ -1740,6 +1896,7 @@ ...@@ -1740,6 +1896,7 @@
(47678,41396,47668,41365) (47678,41396,47668,41365)
(6837,25974,6799,25892) (6837,25974,6799,25892)
(13355,11174,13304,11161) (13355,11174,13304,11161)
\N
(37243,25548,37158,25471) (37243,25548,37158,25471)
(12528,30208,12441,30205) (12528,30208,12441,30205)
(14929,1672,14886,1607) (14929,1672,14886,1607)
...@@ -1756,6 +1913,7 @@ ...@@ -1756,6 +1913,7 @@
(33072,20995,32980,20903) (33072,20995,32980,20903)
(47091,30055,47080,30037) (47091,30055,47080,30037)
(45753,12998,45686,12992) (45753,12998,45686,12992)
\N
(11528,7826,11509,7794) (11528,7826,11509,7794)
(21104,13921,21060,13836) (21104,13921,21060,13836)
(16768,15491,16747,15470) (16768,15491,16747,15470)
...@@ -1769,6 +1927,7 @@ ...@@ -1769,6 +1927,7 @@
(35088,1813,35080,1732) (35088,1813,35080,1732)
(38461,34839,38410,34838) (38461,34839,38410,34838)
(34358,11540,34285,11506) (34358,11540,34285,11506)
\N
(26969,7078,26953,6989) (26969,7078,26953,6989)
(12629,40352,12617,40264) (12629,40352,12617,40264)
(33800,7037,33731,6992) (33800,7037,33731,6992)
...@@ -1789,6 +1948,7 @@ ...@@ -1789,6 +1948,7 @@
(44343,16339,44248,16318) (44343,16339,44248,16318)
(2374,28839,2336,28798) (2374,28839,2336,28798)
(22913,40710,22819,40688) (22913,40710,22819,40688)
\N
(47747,684,47658,627) (47747,684,47658,627)
(16043,46011,16021,45984) (16043,46011,16021,45984)
(34958,32168,34903,32092) (34958,32168,34903,32092)
...@@ -1808,6 +1968,7 @@ ...@@ -1808,6 +1968,7 @@
(32544,25845,32538,25779) (32544,25845,32538,25779)
(44047,6957,43951,6942) (44047,6957,43951,6942)
(36465,588,36382,503) (36465,588,36382,503)
\N
(28167,26679,28150,26673) (28167,26679,28150,26673)
(16065,4268,15975,4180) (16065,4268,15975,4180)
(12950,23494,12893,23494) (12950,23494,12893,23494)
...@@ -1818,7 +1979,9 @@ ...@@ -1818,7 +1979,9 @@
(18407,28362,18309,28303) (18407,28362,18309,28303)
(21393,41872,21328,41816) (21393,41872,21328,41816)
(46040,26497,45996,26408) (46040,26497,45996,26408)
\N
(49944,25163,49902,25153) (49944,25163,49902,25153)
\N
(16195,11843,16159,11831) (16195,11843,16159,11831)
(44257,15270,44254,15214) (44257,15270,44254,15214)
(49760,4791,49699,4713) (49760,4791,49699,4713)
...@@ -1839,6 +2002,7 @@ ...@@ -1839,6 +2002,7 @@
(28584,956,28575,868) (28584,956,28575,868)
(5538,9962,5465,9870) (5538,9962,5465,9870)
(34183,44102,34175,44085) (34183,44102,34175,44085)
\N
(42507,10289,42441,10288) (42507,10289,42441,10288)
(12671,19936,12594,19920) (12671,19936,12594,19920)
(24835,12179,24770,12173) (24835,12179,24770,12173)
...@@ -1853,6 +2017,7 @@ ...@@ -1853,6 +2017,7 @@
(31837,33705,31803,33681) (31837,33705,31803,33681)
(24403,27711,24383,27705) (24403,27711,24383,27705)
(4431,2748,4337,2656) (4431,2748,4337,2656)
\N
(3036,2887,3014,2826) (3036,2887,3014,2826)
(37664,16118,37615,16022) (37664,16118,37615,16022)
(8606,18063,8587,18038) (8606,18063,8587,18038)
...@@ -1876,6 +2041,7 @@ ...@@ -1876,6 +2041,7 @@
(12207,24266,12173,24235) (12207,24266,12173,24235)
(40643,49770,40574,49687) (40643,49770,40574,49687)
(32833,35686,32815,35674) (32833,35686,32815,35674)
\N
(14545,18143,14541,18098) (14545,18143,14541,18098)
(33892,42783,33884,42707) (33892,42783,33884,42707)
(33933,8381,33921,8369) (33933,8381,33921,8369)
...@@ -1890,6 +2056,7 @@ ...@@ -1890,6 +2056,7 @@
(13397,19369,13340,19288) (13397,19369,13340,19288)
(30879,43562,30785,43545) (30879,43562,30785,43545)
(21995,48224,21920,48143) (21995,48224,21920,48143)
\N
(11871,47569,11809,47568) (11871,47569,11809,47568)
(29366,22196,29280,22154) (29366,22196,29280,22154)
(26243,28176,26203,28116) (26243,28176,26203,28116)
...@@ -1903,24 +2070,29 @@ ...@@ -1903,24 +2070,29 @@
(49603,30877,49579,30840) (49603,30877,49579,30840)
(32261,45876,32206,45865) (32261,45876,32206,45865)
(35104,41659,35048,41587) (35104,41659,35048,41587)
\N
(5457,35844,5376,35782) (5457,35844,5376,35782)
(29423,3977,29354,3959) (29423,3977,29354,3959)
(18059,3001,17965,2961) (18059,3001,17965,2961)
(8509,5691,8463,5620) (8509,5691,8463,5620)
\N
(27118,5762,27083,5747) (27118,5762,27083,5747)
(2991,48605,2939,48559) (2991,48605,2939,48559)
(44482,3484,44425,3459) (44482,3484,44425,3459)
(45143,16439,45046,16365) (45143,16439,45046,16365)
(2236,37531,2147,37530) (2236,37531,2147,37530)
(41561,3217,41490,3210) (41561,3217,41490,3210)
\N
(6270,27200,6171,27166) (6270,27200,6171,27166)
(49195,24871,49138,24798) (49195,24871,49138,24798)
\N
(46985,38881,46897,38845) (46985,38881,46897,38845)
(37486,23522,37404,23441) (37486,23522,37404,23441)
(26907,14490,26900,14391) (26907,14490,26900,14391)
(30829,16111,30756,16056) (30829,16111,30756,16056)
(3644,17291,3587,17262) (3644,17291,3587,17262)
(20508,49775,20472,49680) (20508,49775,20472,49680)
\N
(43279,8972,43198,8936) (43279,8972,43198,8936)
(33744,7470,33734,7439) (33744,7470,33734,7439)
(46303,20538,46284,20498) (46303,20538,46284,20498)
...@@ -1933,6 +2105,7 @@ ...@@ -1933,6 +2105,7 @@
(8222,8907,8123,8848) (8222,8907,8123,8848)
(45698,28860,45698,28770) (45698,28860,45698,28770)
(26958,1748,26924,1726) (26958,1748,26924,1726)
\N
(26735,35073,26659,35025) (26735,35073,26659,35025)
(48370,40813,48293,40737) (48370,40813,48293,40737)
(13140,993,13108,934) (13140,993,13108,934)
...@@ -1946,7 +2119,9 @@ ...@@ -1946,7 +2119,9 @@
(47886,34532,47851,34500) (47886,34532,47851,34500)
(23777,10549,23735,10495) (23777,10549,23735,10495)
(1291,16913,1194,16873) (1291,16913,1194,16873)
\N
(29239,30554,29202,30500) (29239,30554,29202,30500)
\N
(36485,30007,36454,29924) (36485,30007,36454,29924)
(7067,11320,7045,11229) (7067,11320,7045,11229)
(16939,30482,16904,30462) (16939,30482,16904,30462)
...@@ -1968,6 +2143,7 @@ ...@@ -1968,6 +2143,7 @@
(32894,32519,32880,32485) (32894,32519,32880,32485)
(604,13413,509,13401) (604,13413,509,13401)
(18396,19712,18355,19646) (18396,19712,18355,19646)
\N
(26657,28234,26597,28191) (26657,28234,26597,28191)
(24240,47211,24154,47191) (24240,47211,24154,47191)
(41778,10741,41766,10730) (41778,10741,41766,10730)
...@@ -1985,6 +2161,7 @@ ...@@ -1985,6 +2161,7 @@
(13962,39307,13921,39220) (13962,39307,13921,39220)
(11094,19151,11092,19143) (11094,19151,11092,19143)
(32289,23776,32258,23760) (32289,23776,32258,23760)
\N
(36044,17356,35956,17273) (36044,17356,35956,17273)
(46304,38692,46232,38675) (46304,38692,46232,38675)
(10934,42999,10922,42909) (10934,42999,10922,42909)
...@@ -1993,6 +2170,7 @@ ...@@ -1993,6 +2170,7 @@
(25537,36605,25477,36584) (25537,36605,25477,36584)
(22161,14999,22079,14962) (22161,14999,22079,14962)
(5127,31243,5074,31213) (5127,31243,5074,31213)
\N
(14904,40664,14838,40593) (14904,40664,14838,40593)
(29308,8480,29268,8438) (29308,8480,29268,8438)
(17731,7410,17699,7352) (17731,7410,17699,7352)
...@@ -2002,6 +2180,7 @@ ...@@ -2002,6 +2180,7 @@
(3530,23456,3440,23390) (3530,23456,3440,23390)
(4699,6889,4603,6796) (4699,6889,4603,6796)
(47405,48524,47389,48514) (47405,48524,47389,48514)
\N
(23357,43160,23305,43156) (23357,43160,23305,43156)
(16923,1995,16860,1937) (16923,1995,16860,1937)
(47592,33853,47537,33758) (47592,33853,47537,33758)
...@@ -2021,8 +2200,10 @@ ...@@ -2021,8 +2200,10 @@
(13950,28652,13932,28566) (13950,28652,13932,28566)
(38996,41070,38919,40993) (38996,41070,38919,40993)
(31759,45246,31676,45215) (31759,45246,31676,45215)
\N
(5424,34145,5382,34106) (5424,34145,5382,34106)
(14727,45600,14699,45547) (14727,45600,14699,45547)
\N
(31429,21537,31414,21499) (31429,21537,31414,21499)
(14740,3420,14650,3323) (14740,3420,14650,3323)
(21793,39498,21743,39471) (21793,39498,21743,39471)
...@@ -2039,6 +2220,7 @@ ...@@ -2039,6 +2220,7 @@
(45403,42533,45389,42464) (45403,42533,45389,42464)
(46531,36947,46531,36850) (46531,36947,46531,36850)
(36943,32817,36865,32737) (36943,32817,36865,32737)
\N
(37984,43763,37888,43748) (37984,43763,37888,43748)
(20593,10650,20557,10610) (20593,10650,20557,10610)
(5387,40595,5326,40585) (5387,40595,5326,40585)
...@@ -2060,18 +2242,24 @@ ...@@ -2060,18 +2242,24 @@
(15606,9048,15596,9028) (15606,9048,15596,9028)
(14687,19309,14637,19263) (14687,19309,14637,19263)
(4568,15461,4499,15428) (4568,15461,4499,15428)
\N
(43938,7429,43923,7391) (43938,7429,43923,7391)
\N
(2168,50012,2108,49914) (2168,50012,2108,49914)
(16022,8934,15963,8928) (16022,8934,15963,8928)
(24567,39147,24561,39102) (24567,39147,24561,39102)
\N
(42781,14149,42765,14088) (42781,14149,42765,14088)
(39501,21084,39468,21078) (39501,21084,39468,21078)
(6697,29628,6693,29584) (6697,29628,6693,29584)
(11441,16164,11364,16125) (11441,16164,11364,16125)
(39946,1920,39868,1844) (39946,1920,39868,1844)
\N
(18138,45512,18111,45438) (18138,45512,18111,45438)
\N
(20799,41217,20718,41138) (20799,41217,20718,41138)
(30264,16697,30240,16639) (30264,16697,30240,16639)
\N
(30746,50040,30727,49992) (30746,50040,30727,49992)
(37429,43273,37423,43205) (37429,43273,37423,43205)
(22854,28863,22789,28810) (22854,28863,22789,28810)
...@@ -2088,6 +2276,7 @@ ...@@ -2088,6 +2276,7 @@
(318,31489,235,31404) (318,31489,235,31404)
(1140,7007,1113,6945) (1140,7007,1113,6945)
(36574,9291,36484,9275) (36574,9291,36484,9275)
\N
(40320,40937,40246,40866) (40320,40937,40246,40866)
(588,25849,552,25801) (588,25849,552,25801)
(6728,42539,6645,42507) (6728,42539,6645,42507)
...@@ -2104,6 +2293,7 @@ ...@@ -2104,6 +2293,7 @@
(45344,21540,45297,21496) (45344,21540,45297,21496)
(27269,16787,27246,16763) (27269,16787,27246,16763)
(18070,4469,18022,4423) (18070,4469,18022,4423)
\N
(12668,16367,12645,16295) (12668,16367,12645,16295)
(13823,17276,13730,17251) (13823,17276,13730,17251)
(20555,45544,20511,45498) (20555,45544,20511,45498)
...@@ -2128,6 +2318,7 @@ ...@@ -2128,6 +2318,7 @@
(27662,17407,27570,17313) (27662,17407,27570,17313)
(9845,29346,9807,29321) (9845,29346,9807,29321)
(43855,38669,43790,38599) (43855,38669,43790,38599)
\N
(20461,44189,20397,44158) (20461,44189,20397,44158)
(11627,17368,11581,17289) (11627,17368,11581,17289)
(2971,38855,2938,38807) (2971,38855,2938,38807)
...@@ -2149,6 +2340,7 @@ ...@@ -2149,6 +2340,7 @@
(12958,30737,12912,30712) (12958,30737,12912,30712)
(44432,46521,44333,46443) (44432,46521,44333,46443)
(16124,2948,16113,2852) (16124,2948,16113,2852)
\N
(24704,25422,24635,25340) (24704,25422,24635,25340)
(30833,46152,30790,46122) (30833,46152,30790,46122)
(4487,37006,4473,36968) (4487,37006,4473,36968)
...@@ -2166,6 +2358,7 @@ ...@@ -2166,6 +2358,7 @@
(6079,17258,6068,17195) (6079,17258,6068,17195)
(40458,15752,40364,15728) (40458,15752,40364,15728)
(23340,7879,23313,7806) (23340,7879,23313,7806)
\N
(31819,15096,31762,15059) (31819,15096,31762,15059)
(31159,40864,31158,40780) (31159,40864,31158,40780)
(26975,32144,26915,32113) (26975,32144,26915,32113)
...@@ -2202,13 +2395,16 @@ ...@@ -2202,13 +2395,16 @@
(24338,19293,24291,19277) (24338,19293,24291,19277)
(27566,17576,27544,17545) (27566,17576,27544,17545)
(23041,38384,22970,38320) (23041,38384,22970,38320)
\N
(12786,8485,12702,8435) (12786,8485,12702,8435)
(13876,49473,13813,49448) (13876,49473,13813,49448)
(31585,46998,31490,46929) (31585,46998,31490,46929)
\N
(30227,8768,30206,8715) (30227,8768,30206,8715)
(32062,39306,32023,39292) (32062,39306,32023,39292)
(25003,35753,24921,35687) (25003,35753,24921,35687)
(3281,6758,3232,6704) (3281,6758,3232,6704)
\N
(11395,30299,11376,30220) (11395,30299,11376,30220)
(5088,15275,5007,15203) (5088,15275,5007,15203)
(31100,39538,31003,39444) (31100,39538,31003,39444)
...@@ -2221,24 +2417,30 @@ ...@@ -2221,24 +2417,30 @@
(21554,3507,21528,3476) (21554,3507,21528,3476)
(9350,32326,9273,32275) (9350,32326,9273,32275)
(16455,8874,16420,8793) (16455,8874,16420,8793)
\N
(7346,34235,7330,34224) (7346,34235,7330,34224)
(16417,48134,16352,48066) (16417,48134,16352,48066)
\N
(41916,4971,41849,4886) (41916,4971,41849,4886)
(15856,1522,15807,1521) (15856,1522,15807,1521)
(41549,40218,41494,40144) (41549,40218,41494,40144)
\N
(9978,16226,9972,16181) (9978,16226,9972,16181)
(14856,13312,14808,13283) (14856,13312,14808,13283)
(38490,41641,38428,41583) (38490,41641,38428,41583)
(25828,7438,25807,7378) (25828,7438,25807,7378)
(21876,30633,21796,30587) (21876,30633,21796,30587)
(1908,14279,1825,14247) (1908,14279,1825,14247)
\N
(32207,10251,32121,10184) (32207,10251,32121,10184)
(370,9493,328,9441) (370,9493,328,9441)
(42072,17634,41974,17600) (42072,17634,41974,17600)
\N
(47298,9910,47235,9846) (47298,9910,47235,9846)
(17856,11266,17782,11225) (17856,11266,17782,11225)
(35009,21400,34956,21396) (35009,21400,34956,21396)
(18337,11145,18335,11133) (18337,11145,18335,11133)
\N
(25425,9139,25381,9085) (25425,9139,25381,9085)
(35642,27783,35621,27782) (35642,27783,35621,27782)
(3629,33164,3575,33163) (3629,33164,3575,33163)
...@@ -2265,6 +2467,7 @@ ...@@ -2265,6 +2467,7 @@
(7119,48224,7117,48152) (7119,48224,7117,48152)
(15233,26480,15138,26430) (15233,26480,15138,26430)
(37468,1526,37466,1513) (37468,1526,37466,1513)
\N
(20855,2786,20828,2711) (20855,2786,20828,2711)
(30538,44084,30480,44061) (30538,44084,30480,44061)
(42231,41527,42149,41454) (42231,41527,42149,41454)
...@@ -2280,15 +2483,18 @@ ...@@ -2280,15 +2483,18 @@
(26590,19483,26503,19442) (26590,19483,26503,19442)
(21741,46259,21723,46226) (21741,46259,21723,46226)
(8822,34700,8760,34693) (8822,34700,8760,34693)
\N
(2710,33521,2675,33505) (2710,33521,2675,33505)
(26067,19998,26026,19989) (26067,19998,26026,19989)
(12244,34509,12202,34489) (12244,34509,12202,34489)
\N
(47162,598,47119,499) (47162,598,47119,499)
(33093,49382,33068,49359) (33093,49382,33068,49359)
(35170,26340,35153,26264) (35170,26340,35153,26264)
(22552,35785,22490,35735) (22552,35785,22490,35735)
(36791,23032,36781,22976) (36791,23032,36781,22976)
(22857,10857,22833,10797) (22857,10857,22833,10797)
\N
(47207,37405,47138,37365) (47207,37405,47138,37365)
(21867,2836,21854,2811) (21867,2836,21854,2811)
(3387,31487,3311,31456) (3387,31487,3311,31456)
...@@ -2305,15 +2511,19 @@ ...@@ -2305,15 +2511,19 @@
(47568,27149,47521,27088) (47568,27149,47521,27088)
(24695,12827,24661,12796) (24695,12827,24661,12796)
(26259,14077,26168,14019) (26259,14077,26168,14019)
\N
(48478,36135,48425,36092) (48478,36135,48425,36092)
(5230,39250,5206,39174) (5230,39250,5206,39174)
(3488,18562,3423,18489) (3488,18562,3423,18489)
(39502,16331,39460,16275) (39502,16331,39460,16275)
(18296,1478,18233,1471) (18296,1478,18233,1471)
\N
(28627,12430,28559,12410) (28627,12430,28559,12410)
(25257,21981,25206,21954) (25257,21981,25206,21954)
\N
(2410,41192,2325,41142) (2410,41192,2325,41142)
(43681,9631,43587,9538) (43681,9631,43587,9538)
\N
(15086,45309,15064,45270) (15086,45309,15064,45270)
(13824,40807,13759,40787) (13824,40807,13759,40787)
(7090,2207,7062,2159) (7090,2207,7062,2159)
...@@ -2339,14 +2549,17 @@ ...@@ -2339,14 +2549,17 @@
(10815,35985,10734,35908) (10815,35985,10734,35908)
(44891,24067,44794,23979) (44891,24067,44794,23979)
(48626,1900,48595,1850) (48626,1900,48595,1850)
\N
(40659,35541,40659,35489) (40659,35541,40659,35489)
(22231,26628,22210,26579) (22231,26628,22210,26579)
(37408,23016,37375,22919) (37408,23016,37375,22919)
(5920,15916,5906,15895) (5920,15916,5906,15895)
\N
(33125,9952,33037,9880) (33125,9952,33037,9880)
(12142,29705,12141,29670) (12142,29705,12141,29670)
(3672,20995,3649,20899) (3672,20995,3649,20899)
(39147,31967,39101,31907) (39147,31967,39101,31907)
\N
(33812,48458,33748,48399) (33812,48458,33748,48399)
(25038,14639,24978,14586) (25038,14639,24978,14586)
(3859,16010,3857,15994) (3859,16010,3857,15994)
...@@ -2360,6 +2573,7 @@ ...@@ -2360,6 +2573,7 @@
(26866,42395,26822,42332) (26866,42395,26822,42332)
(48195,1784,48101,1734) (48195,1784,48101,1734)
(46201,14109,46112,14097) (46201,14109,46112,14097)
\N
(2415,9975,2354,9914) (2415,9975,2354,9914)
(30485,9581,30415,9558) (30485,9581,30415,9558)
(6385,36838,6305,36838) (6385,36838,6305,36838)
...@@ -2372,9 +2586,11 @@ ...@@ -2372,9 +2586,11 @@
(34244,32352,34204,32342) (34244,32352,34204,32342)
(35595,23728,35533,23672) (35595,23728,35533,23672)
(1122,13581,1119,13538) (1122,13581,1119,13538)
\N
(388,21716,296,21678) (388,21716,296,21678)
(48782,11064,48701,11005) (48782,11064,48701,11005)
(40293,12997,40213,12927) (40293,12997,40213,12927)
\N
(28194,46428,28113,46414) (28194,46428,28113,46414)
(4791,18118,4708,18105) (4791,18118,4708,18105)
(471,29808,448,29775) (471,29808,448,29775)
...@@ -2399,6 +2615,7 @@ ...@@ -2399,6 +2615,7 @@
(36406,26879,36374,26872) (36406,26879,36374,26872)
(16821,48925,16758,48914) (16821,48925,16758,48914)
(23692,48163,23595,48160) (23692,48163,23595,48160)
\N
(4803,10619,4759,10522) (4803,10619,4759,10522)
(46600,33581,46553,33518) (46600,33581,46553,33518)
(41349,11767,41310,11710) (41349,11767,41310,11710)
...@@ -2414,6 +2631,7 @@ ...@@ -2414,6 +2631,7 @@
(47282,34302,47277,34269) (47282,34302,47277,34269)
(35603,33558,35557,33495) (35603,33558,35557,33495)
(44764,32189,44700,32175) (44764,32189,44700,32175)
\N
(46488,23965,46449,23868) (46488,23965,46449,23868)
(46314,15047,46216,15013) (46314,15047,46216,15013)
(6348,25381,6286,25363) (6348,25381,6286,25363)
...@@ -2425,16 +2643,20 @@ ...@@ -2425,16 +2643,20 @@
(8772,45981,8692,45973) (8772,45981,8692,45973)
(11028,1351,10986,1278) (11028,1351,10986,1278)
(26684,21668,26641,21656) (26684,21668,26641,21656)
\N
(37262,26005,37260,25947) (37262,26005,37260,25947)
(14899,44069,14814,44066) (14899,44069,14814,44066)
\N
(39635,18701,39587,18698) (39635,18701,39587,18698)
(28528,22948,28457,22857) (28528,22948,28457,22857)
(7755,36528,7681,36454) (7755,36528,7681,36454)
(32461,1172,32427,1106) (32461,1172,32427,1106)
\N
(18775,27359,18736,27329) (18775,27359,18736,27329)
(15379,20031,15337,19934) (15379,20031,15337,19934)
(45888,33592,45881,33544) (45888,33592,45881,33544)
(44013,24694,43962,24645) (44013,24694,43962,24645)
\N
(43347,10699,43343,10699) (43347,10699,43343,10699)
(49999,27218,49908,27176) (49999,27218,49908,27176)
(13698,17326,13630,17317) (13698,17326,13630,17317)
...@@ -2473,6 +2695,7 @@ ...@@ -2473,6 +2695,7 @@
(18935,26757,18865,26682) (18935,26757,18865,26682)
(42659,48284,42562,48244) (42659,48284,42562,48244)
(30185,23350,30146,23291) (30185,23350,30146,23291)
\N
(16496,11970,16441,11919) (16496,11970,16441,11919)
(162,26040,120,25963) (162,26040,120,25963)
(24238,47784,24185,47746) (24238,47784,24185,47746)
...@@ -2480,6 +2703,7 @@ ...@@ -2480,6 +2703,7 @@
(26141,13423,26051,13407) (26141,13423,26051,13407)
(40132,22815,40089,22812) (40132,22815,40089,22812)
(21151,48794,21056,48740) (21151,48794,21056,48740)
\N
(22044,28358,22031,28334) (22044,28358,22031,28334)
(6680,14746,6605,14669) (6680,14746,6605,14669)
(40686,25139,40632,25070) (40686,25139,40632,25070)
...@@ -2488,6 +2712,7 @@ ...@@ -2488,6 +2712,7 @@
(36316,27787,36218,27728) (36316,27787,36218,27728)
(554,35489,540,35441) (554,35489,540,35441)
(536,30674,534,30609) (536,30674,534,30609)
\N
(25385,38468,25295,38416) (25385,38468,25295,38416)
(19467,47386,19437,47317) (19467,47386,19437,47317)
(22425,38591,22387,38536) (22425,38591,22387,38536)
...@@ -2495,15 +2720,18 @@ ...@@ -2495,15 +2720,18 @@
(40115,47315,40109,47235) (40115,47315,40109,47235)
(25002,2107,24963,2104) (25002,2107,24963,2104)
(3901,9790,3898,9706) (3901,9790,3898,9706)
\N
(40316,1721,40315,1658) (40316,1721,40315,1658)
(40089,3454,40074,3443) (40089,3454,40074,3443)
(793,17897,761,17897) (793,17897,761,17897)
(6490,43552,6434,43522) (6490,43552,6434,43522)
(10825,487,10820,405) (10825,487,10820,405)
(47703,36067,47641,36011) (47703,36067,47641,36011)
\N
(4480,11671,4468,11653) (4480,11671,4468,11653)
(37713,10642,37711,10615) (37713,10642,37711,10615)
(12315,5302,12273,5203) (12315,5302,12273,5203)
\N
(8709,6617,8647,6557) (8709,6617,8647,6557)
(24467,30535,24455,30494) (24467,30535,24455,30494)
(40440,32757,40369,32668) (40440,32757,40369,32668)
...@@ -2533,10 +2761,12 @@ ...@@ -2533,10 +2761,12 @@
(24951,47758,24900,47679) (24951,47758,24900,47679)
(32917,35771,32847,35753) (32917,35771,32847,35753)
(5428,27773,5343,27769) (5428,27773,5343,27769)
\N
(19650,142,19630,51) (19650,142,19630,51)
(39769,17276,39743,17229) (39769,17276,39743,17229)
(5171,24562,5119,24470) (5171,24562,5119,24470)
(32976,35249,32917,35199) (32976,35249,32917,35199)
\N
(4174,24603,4099,24504) (4174,24603,4099,24504)
(38565,36960,38535,36926) (38565,36960,38535,36926)
(39084,4328,39031,4301) (39084,4328,39031,4301)
...@@ -2571,10 +2801,12 @@ ...@@ -2571,10 +2801,12 @@
(22290,7841,22283,7810) (22290,7841,22283,7810)
(22414,38398,22404,38319) (22414,38398,22404,38319)
(9011,18177,8932,18150) (9011,18177,8932,18150)
\N
(154,4019,138,3990) (154,4019,138,3990)
(20447,4998,20383,4970) (20447,4998,20383,4970)
(38867,35757,38795,35659) (38867,35757,38795,35659)
(32322,15845,32227,15804) (32322,15845,32227,15804)
\N
(29889,12142,29852,12055) (29889,12142,29852,12055)
(36235,36918,36217,36897) (36235,36918,36217,36897)
(41620,6581,41568,6581) (41620,6581,41568,6581)
...@@ -2624,6 +2856,7 @@ ...@@ -2624,6 +2856,7 @@
(48505,4407,48408,4373) (48505,4407,48408,4373)
(21859,37217,21763,37217) (21859,37217,21763,37217)
(39393,14422,39335,14364) (39393,14422,39335,14364)
\N
(19905,1154,19841,1098) (19905,1154,19841,1098)
(25946,10388,25906,10366) (25946,10388,25906,10366)
(10104,13748,10027,13746) (10104,13748,10027,13746)
...@@ -2633,10 +2866,12 @@ ...@@ -2633,10 +2866,12 @@
(326,18837,285,18817) (326,18837,285,18817)
(49611,47078,49533,47052) (49611,47078,49533,47052)
(48233,18850,48150,18842) (48233,18850,48150,18842)
\N
(29239,9962,29208,9875) (29239,9962,29208,9875)
(40062,44554,39973,44460) (40062,44554,39973,44460)
(19135,20729,19059,20643) (19135,20729,19059,20643)
(31969,40664,31896,40643) (31969,40664,31896,40643)
\N
(3725,9191,3711,9095) (3725,9191,3711,9095)
(44280,40158,44264,40108) (44280,40158,44264,40108)
(37236,42756,37160,42694) (37236,42756,37160,42694)
...@@ -2670,16 +2905,20 @@ ...@@ -2670,16 +2905,20 @@
(20610,36765,20533,36742) (20610,36765,20533,36742)
(46520,33082,46433,32983) (46520,33082,46433,32983)
(21406,20902,21311,20895) (21406,20902,21311,20895)
\N
(37913,42300,37814,42269) (37913,42300,37814,42269)
(18216,8177,18161,8173) (18216,8177,18161,8173)
(32967,8258,32899,8244) (32967,8258,32899,8244)
(14978,40230,14971,40149) (14978,40230,14971,40149)
(30343,39152,30266,39101) (30343,39152,30266,39101)
(25917,5835,25843,5806) (25917,5835,25843,5806)
\N
(5169,45366,5141,45314) (5169,45366,5141,45314)
\N
(16221,20898,16209,20875) (16221,20898,16209,20875)
(13151,19869,13145,19811) (13151,19869,13145,19811)
(44399,2801,44337,2713) (44399,2801,44337,2713)
\N
(10959,48311,10957,48230) (10959,48311,10957,48230)
(4794,11711,4732,11661) (4794,11711,4732,11661)
(764,10149,762,10091) (764,10149,762,10091)
...@@ -2691,13 +2930,16 @@ ...@@ -2691,13 +2930,16 @@
(7782,13424,7694,13398) (7782,13424,7694,13398)
(25088,36224,25059,36150) (25088,36224,25059,36150)
(46325,48722,46241,48631) (46325,48722,46241,48631)
\N
(11042,33125,11011,33071) (11042,33125,11011,33071)
(22347,13460,22290,13375) (22347,13460,22290,13375)
(3508,20538,3483,20536) (3508,20538,3483,20536)
(5331,42945,5272,42875) (5331,42945,5272,42875)
\N
(2368,15537,2339,15503) (2368,15537,2339,15503)
(45314,31830,45254,31817) (45314,31830,45254,31817)
(34358,2649,34319,2589) (34358,2649,34319,2589)
\N
(17576,30407,17572,30323) (17576,30407,17572,30323)
(29836,41324,29746,41287) (29836,41324,29746,41287)
(21036,39996,21014,39899) (21036,39996,21014,39899)
...@@ -2706,6 +2948,7 @@ ...@@ -2706,6 +2948,7 @@
(37415,15979,37414,15911) (37415,15979,37414,15911)
(47761,16860,47728,16813) (47761,16860,47728,16813)
(35814,48252,35755,48173) (35814,48252,35755,48173)
\N
(28559,20810,28496,20715) (28559,20810,28496,20715)
(12034,11921,12002,11905) (12034,11921,12002,11905)
(1818,27450,1805,27406) (1818,27450,1805,27406)
...@@ -2716,9 +2959,11 @@ ...@@ -2716,9 +2959,11 @@
(37670,41904,37616,41840) (37670,41904,37616,41840)
(12614,15027,12555,14969) (12614,15027,12555,14969)
(43301,75,43227,43) (43301,75,43227,43)
\N
(27526,15096,27450,15088) (27526,15096,27450,15088)
(26947,33409,26853,33333) (26947,33409,26853,33333)
(1537,43572,1471,43499) (1537,43572,1471,43499)
\N
(21607,35452,21605,35375) (21607,35452,21605,35375)
(24869,46565,24818,46531) (24869,46565,24818,46531)
(4774,30335,4723,30257) (4774,30335,4723,30257)
...@@ -2727,11 +2972,14 @@ ...@@ -2727,11 +2972,14 @@
(47267,22574,47203,22518) (47267,22574,47203,22518)
(22287,49538,22203,49511) (22287,49538,22203,49511)
(43010,16270,43010,16202) (43010,16270,43010,16202)
\N
(1623,8350,1578,8254) (1623,8350,1578,8254)
(21220,43808,21137,43748) (21220,43808,21137,43748)
(40397,16471,40358,16434) (40397,16471,40358,16434)
\N
(34839,1377,34744,1327) (34839,1377,34744,1327)
(17096,5730,17090,5637) (17096,5730,17090,5637)
\N
(28156,37782,28155,37723) (28156,37782,28155,37723)
(3672,5686,3586,5638) (3672,5686,3586,5638)
(21856,48656,21840,48638) (21856,48656,21840,48638)
...@@ -2740,18 +2988,24 @@ ...@@ -2740,18 +2988,24 @@
(37793,13461,37784,13381) (37793,13461,37784,13381)
(14740,49655,14709,49604) (14740,49655,14709,49604)
(21690,6337,21593,6289) (21690,6337,21593,6289)
\N
(10423,33548,10364,33498) (10423,33548,10364,33498)
\N
(39187,23274,39136,23197) (39187,23274,39136,23197)
\N
(21882,37247,21835,37167) (21882,37247,21835,37167)
\N
(11343,16957,11281,16914) (11343,16957,11281,16914)
(38279,43400,38264,43352) (38279,43400,38264,43352)
(23167,30271,23086,30224) (23167,30271,23086,30224)
(46278,6037,46180,5964) (46278,6037,46180,5964)
(28626,31165,28605,31095) (28626,31165,28605,31095)
\N
(31018,367,30946,333) (31018,367,30946,333)
(23541,12541,23530,12523) (23541,12541,23530,12523)
(49741,14535,49691,14511) (49741,14535,49691,14511)
(31444,12702,31425,12612) (31444,12702,31425,12612)
\N
(22406,26536,22316,26534) (22406,26536,22316,26534)
(6807,9761,6758,9723) (6807,9761,6758,9723)
(15698,1941,15687,1848) (15698,1941,15687,1848)
...@@ -2765,6 +3019,7 @@ ...@@ -2765,6 +3019,7 @@
(26872,3646,26804,3594) (26872,3646,26804,3594)
(24575,42883,24530,42883) (24575,42883,24530,42883)
(11823,5755,11771,5721) (11823,5755,11771,5721)
\N
(2553,46189,2513,46174) (2553,46189,2513,46174)
(24993,14552,24898,14470) (24993,14552,24898,14470)
(28453,1719,28419,1665) (28453,1719,28419,1665)
...@@ -2772,6 +3027,7 @@ ...@@ -2772,6 +3027,7 @@
(47635,15380,47546,15378) (47635,15380,47546,15378)
(35378,18112,35324,18058) (35378,18112,35324,18058)
(27347,22264,27293,22200) (27347,22264,27293,22200)
\N
(44323,29044,44273,28958) (44323,29044,44273,28958)
(41538,38324,41484,38290) (41538,38324,41484,38290)
(19128,49932,19112,49849) (19128,49932,19112,49849)
...@@ -2802,10 +3058,13 @@ ...@@ -2802,10 +3058,13 @@
(37845,30953,37759,30926) (37845,30953,37759,30926)
(27452,12732,27411,12652) (27452,12732,27411,12652)
(38196,32186,38114,32116) (38196,32186,38114,32116)
\N
(6527,49356,6508,49315) (6527,49356,6508,49315)
(43891,29789,43856,29723) (43891,29789,43856,29723)
(6146,37192,6085,37107) (6146,37192,6085,37107)
\N
(42012,28897,41939,28808) (42012,28897,41939,28808)
\N
(14909,13815,14846,13757) (14909,13815,14846,13757)
(11120,24095,11035,24049) (11120,24095,11035,24049)
(3132,41545,3053,41526) (3132,41545,3053,41526)
...@@ -2825,6 +3084,7 @@ ...@@ -2825,6 +3084,7 @@
(47134,44803,47055,44761) (47134,44803,47055,44761)
(41360,16573,41326,16503) (41360,16573,41326,16503)
(10464,1071,10457,998) (10464,1071,10457,998)
\N
(23515,47517,23451,47499) (23515,47517,23451,47499)
(9308,8452,9238,8392) (9308,8452,9238,8392)
(28695,5657,28671,5644) (28695,5657,28671,5644)
...@@ -2832,6 +3092,7 @@ ...@@ -2832,6 +3092,7 @@
(337,455,240,359) (337,455,240,359)
(11562,45479,11472,45428) (11562,45479,11472,45428)
(11952,18466,11931,18425) (11952,18466,11931,18425)
\N
(35789,5154,35775,5128) (35789,5154,35775,5128)
(19024,18299,18979,18230) (19024,18299,18979,18230)
(43056,38113,42975,38067) (43056,38113,42975,38067)
...@@ -2860,7 +3121,9 @@ ...@@ -2860,7 +3121,9 @@
(28906,48630,28818,48568) (28906,48630,28818,48568)
(28886,38905,28861,38832) (28886,38905,28861,38832)
(34786,22285,34740,22240) (34786,22285,34740,22240)
\N
(46513,46780,46425,46780) (46513,46780,46425,46780)
\N
(26626,31759,26551,31677) (26626,31759,26551,31677)
(19792,25967,19763,25933) (19792,25967,19763,25933)
(20432,14394,20388,14365) (20432,14394,20388,14365)
...@@ -2902,11 +3165,13 @@ ...@@ -2902,11 +3165,13 @@
(19181,8120,19089,8098) (19181,8120,19089,8098)
(24376,19983,24294,19925) (24376,19983,24294,19925)
(18297,18375,18202,18292) (18297,18375,18202,18292)
\N
(31608,6215,31575,6168) (31608,6215,31575,6168)
(12788,49510,12784,49468) (12788,49510,12784,49468)
(46071,13013,46035,12991) (46071,13013,46035,12991)
(27647,8218,27582,8201) (27647,8218,27582,8201)
(49580,11076,49537,11050) (49580,11076,49537,11050)
\N
(35501,33782,35501,33687) (35501,33782,35501,33687)
(19969,3148,19964,3082) (19969,3148,19964,3082)
(37728,49153,37726,49152) (37728,49153,37726,49152)
...@@ -2927,12 +3192,14 @@ ...@@ -2927,12 +3192,14 @@
(38907,43619,38827,43553) (38907,43619,38827,43553)
(29149,20773,29070,20698) (29149,20773,29070,20698)
(17006,1543,16970,1497) (17006,1543,16970,1497)
\N
(11737,18808,11714,18788) (11737,18808,11714,18788)
(13019,30534,13005,30481) (13019,30534,13005,30481)
(39224,31729,39191,31683) (39224,31729,39191,31683)
(4942,41680,4907,41596) (4942,41680,4907,41596)
(12287,37187,12188,37172) (12287,37187,12188,37172)
(30758,29579,30725,29531) (30758,29579,30725,29531)
\N
(16604,17963,16581,17912) (16604,17963,16581,17912)
(19459,15888,19409,15812) (19459,15888,19409,15812)
(34696,24783,34600,24725) (34696,24783,34600,24725)
...@@ -2986,6 +3253,7 @@ ...@@ -2986,6 +3253,7 @@
(32914,15360,32879,15290) (32914,15360,32879,15290)
(47825,21097,47747,21030) (47825,21097,47747,21030)
(10788,5131,10746,5086) (10788,5131,10746,5086)
\N
(15497,9698,15481,9678) (15497,9698,15481,9678)
(10617,47195,10601,47117) (10617,47195,10601,47117)
(42392,10583,42340,10550) (42392,10583,42340,10550)
...@@ -3013,6 +3281,7 @@ ...@@ -3013,6 +3281,7 @@
(44880,34228,44877,34169) (44880,34228,44877,34169)
(29146,49694,29143,49682) (29146,49694,29143,49682)
(28502,34886,28471,34832) (28502,34886,28471,34832)
\N
(30662,5584,30604,5528) (30662,5584,30604,5528)
(12612,26081,12552,26001) (12612,26081,12552,26001)
(17166,49308,17098,49270) (17166,49308,17098,49270)
...@@ -3022,6 +3291,7 @@ ...@@ -3022,6 +3291,7 @@
(49308,23780,49297,23760) (49308,23780,49297,23760)
(8667,32342,8592,32294) (8667,32342,8592,32294)
(37826,48560,37822,48485) (37826,48560,37822,48485)
\N
(24493,18653,24486,18616) (24493,18653,24486,18616)
(17914,3850,17887,3775) (17914,3850,17887,3775)
(34270,43873,34231,43826) (34270,43873,34231,43826)
...@@ -3029,6 +3299,7 @@ ...@@ -3029,6 +3299,7 @@
(44328,36364,44265,36350) (44328,36364,44265,36350)
(10146,3030,10111,2975) (10146,3030,10111,2975)
(35273,40106,35269,40062) (35273,40106,35269,40062)
\N
(38566,43846,38547,43760) (38566,43846,38547,43760)
(12400,41394,12377,41378) (12400,41394,12377,41378)
(45196,38286,45153,38250) (45196,38286,45153,38250)
...@@ -3043,6 +3314,7 @@ ...@@ -3043,6 +3314,7 @@
(14585,26111,14490,26035) (14585,26111,14490,26035)
(28743,49392,28664,49349) (28743,49392,28664,49349)
(26652,23359,26618,23297) (26652,23359,26618,23297)
\N
(40129,33653,40102,33584) (40129,33653,40102,33584)
(41074,26393,41038,26389) (41074,26393,41038,26389)
(3869,33564,3869,33536) (3869,33564,3869,33536)
...@@ -3056,12 +3328,14 @@ ...@@ -3056,12 +3328,14 @@
(13661,38184,13566,38154) (13661,38184,13566,38154)
(2389,40026,2317,39938) (2389,40026,2317,39938)
(35481,46379,35481,46320) (35481,46379,35481,46320)
\N
(26917,45698,26864,45689) (26917,45698,26864,45689)
(23933,41617,23909,41539) (23933,41617,23909,41539)
(8912,8471,8862,8401) (8912,8471,8862,8401)
(9625,4747,9558,4692) (9625,4747,9558,4692)
(34743,35056,34721,34969) (34743,35056,34721,34969)
(39544,21762,39475,21717) (39544,21762,39475,21717)
\N
(11741,26330,11656,26293) (11741,26330,11656,26293)
(39015,1315,38966,1285) (39015,1315,38966,1285)
(13418,44237,13326,44202) (13418,44237,13326,44202)
...@@ -3075,11 +3349,13 @@ ...@@ -3075,11 +3349,13 @@
(17300,24847,17276,24825) (17300,24847,17276,24825)
(8823,8253,8793,8238) (8823,8253,8793,8238)
(3449,171,3354,108) (3449,171,3354,108)
\N
(21650,23955,21605,23883) (21650,23955,21605,23883)
(13260,3234,13193,3214) (13260,3234,13193,3214)
(25361,10896,25305,10806) (25361,10896,25305,10806)
(25051,25042,25011,25001) (25051,25042,25011,25001)
(25044,25088,25015,25005) (25044,25088,25015,25005)
\N
(25007,25061,25002,25013) (25007,25061,25002,25013)
(25066,25105,25003,25007) (25066,25105,25003,25007)
(25028,25012,25015,25011) (25028,25012,25015,25011)
...@@ -3087,6 +3363,7 @@ ...@@ -3087,6 +3363,7 @@
(25015,25042,25004,25012) (25015,25042,25004,25012)
(25091,25049,25019,25019) (25091,25049,25019,25019)
(25023,25011,25000,25004) (25023,25011,25000,25004)
\N
(25053,25104,25010,25012) (25053,25104,25010,25012)
(25058,25001,25018,25000) (25058,25001,25018,25000)
(25059,25051,25008,25016) (25059,25051,25008,25016)
...@@ -3096,5 +3373,6 @@ ...@@ -3096,5 +3373,6 @@
(25054,25052,25019,25013) (25054,25052,25019,25013)
(25108,25077,25009,25018) (25108,25077,25009,25018)
(25007,25023,25003,25002) (25007,25023,25003,25002)
\N
(25076,25098,25002,25016) (25076,25098,25002,25016)
(25030,25077,25012,25006) (25030,25077,25012,25006)
...@@ -54,7 +54,28 @@ CREATE INDEX onek2_stu1_prtl ON onek2 USING btree(stringu1 name_ops) ...@@ -54,7 +54,28 @@ CREATE INDEX onek2_stu1_prtl ON onek2 USING btree(stringu1 name_ops)
-- benchmark). -- benchmark).
-- --
CREATE INDEX rect2ind ON fast_emp4000 USING rtree (home_base); CREATE INDEX rect2ind ON fast_emp4000 USING rtree (home_base);
-- there's no easy way to check that this command actually is using SET enable_seqscan = ON;
SET enable_indexscan = OFF;
SET enable_bitmapscan = OFF;
SELECT * FROM fast_emp4000
WHERE home_base @ '(200,200),(2000,1000)'::box
ORDER BY home_base USING <<;
home_base
-----------------------
(337,455),(240,359)
(1444,403),(1346,344)
(2 rows)
SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box;
count
-------
2
(1 row)
SET enable_seqscan = OFF;
SET enable_indexscan = ON;
SET enable_bitmapscan = ON;
-- there's no easy way to check that these commands actually use
-- the index, unfortunately. (EXPLAIN would work, but its output -- the index, unfortunately. (EXPLAIN would work, but its output
-- changes too often for me to want to put an EXPLAIN in the test...) -- changes too often for me to want to put an EXPLAIN in the test...)
SELECT * FROM fast_emp4000 SELECT * FROM fast_emp4000
...@@ -66,6 +87,125 @@ SELECT * FROM fast_emp4000 ...@@ -66,6 +87,125 @@ SELECT * FROM fast_emp4000
(1444,403),(1346,344) (1444,403),(1346,344)
(2 rows) (2 rows)
SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box;
count
-------
2
(1 row)
DROP INDEX rect2ind;
--
-- GiST (rtree-equivalent opclasses only)
--
CREATE INDEX grect2ind ON fast_emp4000 USING gist (home_base);
CREATE INDEX gpolygonind ON polygon_tbl USING gist (f1);
CREATE INDEX gcircleind ON circle_tbl USING gist (f1);
CREATE TEMP TABLE gpolygon_tbl AS
SELECT polygon(home_base) AS f1 FROM slow_emp4000;
CREATE TEMP TABLE gcircle_tbl AS
SELECT circle(home_base) AS f1 FROM slow_emp4000;
CREATE INDEX ggpolygonind ON gpolygon_tbl USING gist (f1);
CREATE INDEX ggcircleind ON gcircle_tbl USING gist (f1);
SET enable_seqscan = ON;
SET enable_indexscan = OFF;
SET enable_bitmapscan = OFF;
SELECT * FROM fast_emp4000
WHERE home_base @ '(200,200),(2000,1000)'::box
ORDER BY home_base USING <<;
home_base
-----------------------
(337,455),(240,359)
(1444,403),(1346,344)
(2 rows)
SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box;
count
-------
2
(1 row)
SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon
ORDER BY f1 USING <<;
f1
---------------------
((2,0),(2,4),(0,0))
(1 row)
SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1)
ORDER BY f1 USING <<;
f1
---------------
<(1,3),5>
<(1,2),100>
<(1,2),3>
<(100,1),115>
(4 rows)
SELECT count(*) FROM gpolygon_tbl WHERE f1 && '(1000,1000,0,0)'::polygon;
count
-------
2
(1 row)
SELECT count(*) FROM gcircle_tbl WHERE f1 && '<(500,500),500>'::circle;
count
-------
2
(1 row)
SET enable_seqscan = OFF;
SET enable_indexscan = ON;
SET enable_bitmapscan = ON;
-- there's no easy way to check that these commands actually use
-- the index, unfortunately. (EXPLAIN would work, but its output
-- changes too often for me to want to put an EXPLAIN in the test...)
SELECT * FROM fast_emp4000
WHERE home_base @ '(200,200),(2000,1000)'::box
ORDER BY home_base USING <<;
home_base
-----------------------
(337,455),(240,359)
(1444,403),(1346,344)
(2 rows)
SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box;
count
-------
2
(1 row)
SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon
ORDER BY f1 USING <<;
f1
---------------------
((2,0),(2,4),(0,0))
(1 row)
SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1)
ORDER BY f1 USING <<;
f1
---------------
<(1,3),5>
<(1,2),100>
<(1,2),3>
<(100,1),115>
(4 rows)
SELECT count(*) FROM gpolygon_tbl WHERE f1 && '(1000,1000,0,0)'::polygon;
count
-------
2
(1 row)
SELECT count(*) FROM gcircle_tbl WHERE f1 && '<(500,500),500>'::circle;
count
-------
2
(1 row)
RESET enable_seqscan;
RESET enable_indexscan;
RESET enable_bitmapscan;
-- --
-- HASH -- HASH
-- --
......
...@@ -765,9 +765,12 @@ WHERE p1.amopclaid = p3.oid AND p3.opcamid = p2.oid AND ...@@ -765,9 +765,12 @@ WHERE p1.amopclaid = p3.oid AND p3.opcamid = p2.oid AND
-- Detect missing pg_amop entries: should have as many strategy operators -- Detect missing pg_amop entries: should have as many strategy operators
-- as AM expects for each opclass for the AM. When nondefault subtypes are -- as AM expects for each opclass for the AM. When nondefault subtypes are
-- present, enforce condition separately for each subtype. -- present, enforce condition separately for each subtype.
-- We have to exclude GiST, unfortunately, since it hasn't got any fixed
-- requirements about strategy operators.
SELECT p1.oid, p1.amname, p2.oid, p2.opcname, p3.amopsubtype SELECT p1.oid, p1.amname, p2.oid, p2.opcname, p3.amopsubtype
FROM pg_am AS p1, pg_opclass AS p2, pg_amop AS p3 FROM pg_am AS p1, pg_opclass AS p2, pg_amop AS p3
WHERE p2.opcamid = p1.oid AND p3.amopclaid = p2.oid AND WHERE p2.opcamid = p1.oid AND p3.amopclaid = p2.oid AND
p1.amname != 'gist' AND
p1.amstrategies != (SELECT count(*) FROM pg_amop AS p4 p1.amstrategies != (SELECT count(*) FROM pg_amop AS p4
WHERE p4.amopclaid = p2.oid AND WHERE p4.amopclaid = p2.oid AND
p4.amopsubtype = p3.amopsubtype); p4.amopsubtype = p3.amopsubtype);
...@@ -819,7 +822,19 @@ ORDER BY 1, 2, 3; ...@@ -819,7 +822,19 @@ ORDER BY 1, 2, 3;
403 | 5 | ~>~ 403 | 5 | ~>~
405 | 1 | = 405 | 1 | =
405 | 1 | ~=~ 405 | 1 | ~=~
(24 rows) 783 | 1 | <<
783 | 2 | &<
783 | 3 | &&
783 | 4 | &>
783 | 5 | >>
783 | 6 | ~=
783 | 7 | ~
783 | 8 | @
783 | 9 | &<|
783 | 10 | <<|
783 | 11 | |>>
783 | 12 | |&>
(36 rows)
-- Check that all operators linked to by opclass entries have selectivity -- Check that all operators linked to by opclass entries have selectivity
-- estimators. This is not absolutely required, but it seems a reasonable -- estimators. This is not absolutely required, but it seems a reasonable
......
...@@ -14,6 +14,7 @@ SELECT relname, relhasindex ...@@ -14,6 +14,7 @@ SELECT relname, relhasindex
bt_i4_heap | t bt_i4_heap | t
bt_name_heap | t bt_name_heap | t
bt_txt_heap | t bt_txt_heap | t
circle_tbl | t
fast_emp4000 | t fast_emp4000 | t
func_index_heap | t func_index_heap | t
hash_f8_heap | t hash_f8_heap | t
...@@ -59,11 +60,12 @@ SELECT relname, relhasindex ...@@ -59,11 +60,12 @@ SELECT relname, relhasindex
pg_tablespace | t pg_tablespace | t
pg_trigger | t pg_trigger | t
pg_type | t pg_type | t
polygon_tbl | t
road | t road | t
shighway | t shighway | t
tenk1 | t tenk1 | t
tenk2 | t tenk2 | t
(53 rows) (55 rows)
-- --
-- another sanity check: every system catalog that has OIDs should have -- another sanity check: every system catalog that has OIDs should have
......
...@@ -77,13 +77,98 @@ CREATE INDEX onek2_stu1_prtl ON onek2 USING btree(stringu1 name_ops) ...@@ -77,13 +77,98 @@ CREATE INDEX onek2_stu1_prtl ON onek2 USING btree(stringu1 name_ops)
-- --
CREATE INDEX rect2ind ON fast_emp4000 USING rtree (home_base); CREATE INDEX rect2ind ON fast_emp4000 USING rtree (home_base);
-- there's no easy way to check that this command actually is using SET enable_seqscan = ON;
SET enable_indexscan = OFF;
SET enable_bitmapscan = OFF;
SELECT * FROM fast_emp4000
WHERE home_base @ '(200,200),(2000,1000)'::box
ORDER BY home_base USING <<;
SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box;
SET enable_seqscan = OFF;
SET enable_indexscan = ON;
SET enable_bitmapscan = ON;
-- there's no easy way to check that these commands actually use
-- the index, unfortunately. (EXPLAIN would work, but its output
-- changes too often for me to want to put an EXPLAIN in the test...)
SELECT * FROM fast_emp4000
WHERE home_base @ '(200,200),(2000,1000)'::box
ORDER BY home_base USING <<;
SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box;
DROP INDEX rect2ind;
--
-- GiST (rtree-equivalent opclasses only)
--
CREATE INDEX grect2ind ON fast_emp4000 USING gist (home_base);
CREATE INDEX gpolygonind ON polygon_tbl USING gist (f1);
CREATE INDEX gcircleind ON circle_tbl USING gist (f1);
CREATE TEMP TABLE gpolygon_tbl AS
SELECT polygon(home_base) AS f1 FROM slow_emp4000;
CREATE TEMP TABLE gcircle_tbl AS
SELECT circle(home_base) AS f1 FROM slow_emp4000;
CREATE INDEX ggpolygonind ON gpolygon_tbl USING gist (f1);
CREATE INDEX ggcircleind ON gcircle_tbl USING gist (f1);
SET enable_seqscan = ON;
SET enable_indexscan = OFF;
SET enable_bitmapscan = OFF;
SELECT * FROM fast_emp4000
WHERE home_base @ '(200,200),(2000,1000)'::box
ORDER BY home_base USING <<;
SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box;
SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon
ORDER BY f1 USING <<;
SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1)
ORDER BY f1 USING <<;
SELECT count(*) FROM gpolygon_tbl WHERE f1 && '(1000,1000,0,0)'::polygon;
SELECT count(*) FROM gcircle_tbl WHERE f1 && '<(500,500),500>'::circle;
SET enable_seqscan = OFF;
SET enable_indexscan = ON;
SET enable_bitmapscan = ON;
-- there's no easy way to check that these commands actually use
-- the index, unfortunately. (EXPLAIN would work, but its output -- the index, unfortunately. (EXPLAIN would work, but its output
-- changes too often for me to want to put an EXPLAIN in the test...) -- changes too often for me to want to put an EXPLAIN in the test...)
SELECT * FROM fast_emp4000 SELECT * FROM fast_emp4000
WHERE home_base @ '(200,200),(2000,1000)'::box WHERE home_base @ '(200,200),(2000,1000)'::box
ORDER BY home_base USING <<; ORDER BY home_base USING <<;
SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box;
SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon
ORDER BY f1 USING <<;
SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1)
ORDER BY f1 USING <<;
SELECT count(*) FROM gpolygon_tbl WHERE f1 && '(1000,1000,0,0)'::polygon;
SELECT count(*) FROM gcircle_tbl WHERE f1 && '<(500,500),500>'::circle;
RESET enable_seqscan;
RESET enable_indexscan;
RESET enable_bitmapscan;
-- --
-- HASH -- HASH
-- --
......
...@@ -631,10 +631,13 @@ WHERE p1.amopclaid = p3.oid AND p3.opcamid = p2.oid AND ...@@ -631,10 +631,13 @@ WHERE p1.amopclaid = p3.oid AND p3.opcamid = p2.oid AND
-- Detect missing pg_amop entries: should have as many strategy operators -- Detect missing pg_amop entries: should have as many strategy operators
-- as AM expects for each opclass for the AM. When nondefault subtypes are -- as AM expects for each opclass for the AM. When nondefault subtypes are
-- present, enforce condition separately for each subtype. -- present, enforce condition separately for each subtype.
-- We have to exclude GiST, unfortunately, since it hasn't got any fixed
-- requirements about strategy operators.
SELECT p1.oid, p1.amname, p2.oid, p2.opcname, p3.amopsubtype SELECT p1.oid, p1.amname, p2.oid, p2.opcname, p3.amopsubtype
FROM pg_am AS p1, pg_opclass AS p2, pg_amop AS p3 FROM pg_am AS p1, pg_opclass AS p2, pg_amop AS p3
WHERE p2.opcamid = p1.oid AND p3.amopclaid = p2.oid AND WHERE p2.opcamid = p1.oid AND p3.amopclaid = p2.oid AND
p1.amname != 'gist' AND
p1.amstrategies != (SELECT count(*) FROM pg_amop AS p4 p1.amstrategies != (SELECT count(*) FROM pg_amop AS p4
WHERE p4.amopclaid = p2.oid AND WHERE p4.amopclaid = p2.oid AND
p4.amopsubtype = p3.amopsubtype); p4.amopsubtype = p3.amopsubtype);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment