unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
* bug#13088: stack overflow while compiling
@ 2012-12-05 16:31 rixed
  2012-12-06 16:01 ` Stefan Israelsson Tampe
  0 siblings, 1 reply; 10+ messages in thread
From: rixed @ 2012-12-05 16:31 UTC (permalink / raw)
  To: 13088

[-- Attachment #1: Type: text/plain, Size: 423 bytes --]

This program tries to compile a long cond expression and fails quickly with
a stack overflow.

Of course this procedure was generated and a user is unlikely to write such a
long cond, but considering the simplicity of the expression I'm surprised that
the stack is so solicited.

Note that I tested with guile 2.0.6 and not the fresh new 2.0.7 but I haven't
noticed anything in the changelog regarding memory consumption.


[-- Attachment #2: stack-overflow.scm --]
[-- Type: text/plain, Size: 73874 bytes --]

#!/usr/bin/env guile
!#
(use-modules (system base compile))

(define program
  (lambda (proto
			server-port
			client-zone
			server-zone
			signature-id)
	(let* ((cs-0 (eqv? server-zone 22))
		   (cs-1 (eqv? client-zone 22))
		   (cs-2 (eqv? signature-id 100013))
		   (cs-5 (eqv? server-zone 8))
		   (cs-8 (eqv? client-zone 8))
		   (cs-13 (eqv? client-zone 7))
		   (cs-18 (eqv? signature-id 100012))
		   (cs-31 (eqv? signature-id 100006))
		   (cs-44 (eqv? proto 6))
		   (cs-45 (eqv? server-port 443))
		   (cs-46 (and cs-44 cs-45))
		   (cs-47 (eqv? signature-id 100011))
		   (cs-48 (or cs-46 cs-47))
		   (cs-61 (eqv? client-zone 38))
		   (cs-66 (eqv? client-zone 33))
		   (cs-71 (eqv? client-zone 32))
		   (cs-76 (eqv? client-zone 30))
		   (cs-81 (eqv? client-zone 29))
		   (cs-86 (eqv? client-zone 28))
		   (cs-91 (eqv? client-zone 27))
		   (cs-96 (eqv? client-zone 26))
		   (cs-101 (eqv? client-zone 25))
		   (cs-106 (eqv? client-zone 24))
		   (cs-111 (eqv? client-zone 23))
		   (cs-116 (eqv? client-zone 21))
		   (cs-121 (eqv? client-zone 16))
		   (cs-126 (eqv? client-zone 15))
		   (cs-131 (eqv? client-zone 14))
		   (cs-136 (eqv? client-zone 13))
		   (cs-141 (eqv? client-zone 10))
		   (cs-146 (eqv? client-zone 9))
		   (cs-367 (eqv? server-port 4401))
		   (cs-372 (eqv? client-zone 43))
		   (cs-377 (eqv? client-zone 42))
		   (cs-382 (eqv? client-zone 41))
		   (cs-387 (eqv? client-zone 20))
		   (cs-392 (eqv? client-zone 18))
		   (cs-457 (eqv? signature-id 100010))
		   (cs-462 (eqv? signature-id 100009))
		   (cs-467 (eqv? signature-id 100008))
		   (cs-472 (eqv? server-port 8221))
		   (cs-477 (eqv? server-port 1539))
		   (cs-482 (eqv? server-port 4100))
		   (cs-487 (eqv? server-zone 38))
		   (cs-490 (eqv? server-zone 33))
		   (cs-493 (eqv? server-zone 30))
		   (cs-496 (eqv? server-zone 29))
		   (cs-499 (eqv? server-zone 28))
		   (cs-502 (eqv? server-zone 26))
		   (cs-505 (eqv? server-zone 23))
		   (cs-508 (eqv? server-zone 21))
		   (cs-511 (eqv? server-zone 16))
		   (cs-514 (eqv? server-zone 15))
		   (cs-517 (eqv? server-zone 14))
		   (cs-520 (eqv? server-zone 10))
		   (cs-2929 (eqv? server-port 1523))
		   (cs-3080 (eqv? proto 17))
		   (cs-3225 (eqv? server-zone 43))
		   (cs-3228 (eqv? server-zone 42))
		   (cs-3231 (eqv? server-zone 20))
		   (cs-3234 (eqv? server-zone 18))
		   (cs-3326 (eqv? signature-id 100001))
		   (cs-4223 (eqv? signature-id 205060)))
	  (cond ((and cs-0 cs-1 cs-2) 604)
			((and cs-5 cs-1 cs-2) 604)
			((and cs-0 cs-8 cs-2) 604)
			((and cs-5 cs-8 cs-2) 604)
			((and cs-0 cs-13 cs-2) 604)
			((and cs-5 cs-13 cs-2) 604)
			((and cs-0 cs-1 cs-18) 604)
			((and cs-5 cs-1 cs-18) 604)
			((and cs-0 cs-8 cs-18) 604)
			((and cs-5 cs-8 cs-18) 604)
			((and cs-0 cs-13 cs-18) 604)
			((and cs-5 cs-13 cs-18) 604)
			((and cs-0 cs-1 cs-31) 604)
			((and cs-5 cs-1 cs-31) 604)
			((and cs-0 cs-8 cs-31) 604)
			((and cs-5 cs-8 cs-31) 604)
			((and cs-0 cs-13 cs-31) 604)
			((and cs-5 cs-13 cs-31) 604)
			((and cs-0 cs-1 cs-48) 590)
			((and cs-5 cs-1 cs-48) 590)
			((and cs-0 cs-8 cs-48) 590)
			((and cs-5 cs-8 cs-48) 590)
			((and cs-0 cs-13 cs-48) 590)
			((and cs-5 cs-13 cs-48) 590)
			((and cs-0 cs-61 cs-2) 604)
			((and cs-5 cs-61 cs-2) 604)
			((and cs-0 cs-66 cs-2) 604)
			((and cs-5 cs-66 cs-2) 604)
			((and cs-0 cs-71 cs-2) 604)
			((and cs-5 cs-71 cs-2) 604)
			((and cs-0 cs-76 cs-2) 604)
			((and cs-5 cs-76 cs-2) 604)
			((and cs-0 cs-81 cs-2) 604)
			((and cs-5 cs-81 cs-2) 604)
			((and cs-0 cs-86 cs-2) 604)
			((and cs-5 cs-86 cs-2) 604)
			((and cs-0 cs-91 cs-2) 604)
			((and cs-5 cs-91 cs-2) 604)
			((and cs-0 cs-96 cs-2) 604)
			((and cs-5 cs-96 cs-2) 604)
			((and cs-0 cs-101 cs-2) 604)
			((and cs-5 cs-101 cs-2) 604)
			((and cs-0 cs-106 cs-2) 604)
			((and cs-5 cs-106 cs-2) 604)
			((and cs-0 cs-111 cs-2) 604)
			((and cs-5 cs-111 cs-2) 604)
			((and cs-0 cs-116 cs-2) 604)
			((and cs-5 cs-116 cs-2) 604)
			((and cs-0 cs-121 cs-2) 604)
			((and cs-5 cs-121 cs-2) 604)
			((and cs-0 cs-126 cs-2) 604)
			((and cs-5 cs-126 cs-2) 604)
			((and cs-0 cs-131 cs-2) 604)
			((and cs-5 cs-131 cs-2) 604)
			((and cs-0 cs-136 cs-2) 604)
			((and cs-5 cs-136 cs-2) 604)
			((and cs-0 cs-141 cs-2) 604)
			((and cs-5 cs-141 cs-2) 604)
			((and cs-0 cs-146 cs-2) 604)
			((and cs-5 cs-146 cs-2) 604)
			((and cs-0 cs-61 cs-18) 604)
			((and cs-5 cs-61 cs-18) 604)
			((and cs-0 cs-66 cs-18) 604)
			((and cs-5 cs-66 cs-18) 604)
			((and cs-0 cs-71 cs-18) 604)
			((and cs-5 cs-71 cs-18) 604)
			((and cs-0 cs-76 cs-18) 604)
			((and cs-5 cs-76 cs-18) 604)
			((and cs-0 cs-81 cs-18) 604)
			((and cs-5 cs-81 cs-18) 604)
			((and cs-0 cs-86 cs-18) 604)
			((and cs-5 cs-86 cs-18) 604)
			((and cs-0 cs-91 cs-18) 604)
			((and cs-5 cs-91 cs-18) 604)
			((and cs-0 cs-96 cs-18) 604)
			((and cs-5 cs-96 cs-18) 604)
			((and cs-0 cs-101 cs-18) 604)
			((and cs-5 cs-101 cs-18) 604)
			((and cs-0 cs-106 cs-18) 604)
			((and cs-5 cs-106 cs-18) 604)
			((and cs-0 cs-111 cs-18) 604)
			((and cs-5 cs-111 cs-18) 604)
			((and cs-0 cs-116 cs-18) 604)
			((and cs-5 cs-116 cs-18) 604)
			((and cs-0 cs-121 cs-18) 604)
			((and cs-5 cs-121 cs-18) 604)
			((and cs-0 cs-126 cs-18) 604)
			((and cs-5 cs-126 cs-18) 604)
			((and cs-0 cs-131 cs-18) 604)
			((and cs-5 cs-131 cs-18) 604)
			((and cs-0 cs-136 cs-18) 604)
			((and cs-5 cs-136 cs-18) 604)
			((and cs-0 cs-141 cs-18) 604)
			((and cs-5 cs-141 cs-18) 604)
			((and cs-0 cs-146 cs-18) 604)
			((and cs-5 cs-146 cs-18) 604)
			((and cs-0 cs-61 cs-31) 604)
			((and cs-5 cs-61 cs-31) 604)
			((and cs-0 cs-66 cs-31) 604)
			((and cs-5 cs-66 cs-31) 604)
			((and cs-0 cs-71 cs-31) 604)
			((and cs-5 cs-71 cs-31) 604)
			((and cs-0 cs-76 cs-31) 604)
			((and cs-5 cs-76 cs-31) 604)
			((and cs-0 cs-81 cs-31) 604)
			((and cs-5 cs-81 cs-31) 604)
			((and cs-0 cs-86 cs-31) 604)
			((and cs-5 cs-86 cs-31) 604)
			((and cs-0 cs-91 cs-31) 604)
			((and cs-5 cs-91 cs-31) 604)
			((and cs-0 cs-96 cs-31) 604)
			((and cs-5 cs-96 cs-31) 604)
			((and cs-0 cs-101 cs-31) 604)
			((and cs-5 cs-101 cs-31) 604)
			((and cs-0 cs-106 cs-31) 604)
			((and cs-5 cs-106 cs-31) 604)
			((and cs-0 cs-111 cs-31) 604)
			((and cs-5 cs-111 cs-31) 604)
			((and cs-0 cs-116 cs-31) 604)
			((and cs-5 cs-116 cs-31) 604)
			((and cs-0 cs-121 cs-31) 604)
			((and cs-5 cs-121 cs-31) 604)
			((and cs-0 cs-126 cs-31) 604)
			((and cs-5 cs-126 cs-31) 604)
			((and cs-0 cs-131 cs-31) 604)
			((and cs-5 cs-131 cs-31) 604)
			((and cs-0 cs-136 cs-31) 604)
			((and cs-5 cs-136 cs-31) 604)
			((and cs-0 cs-141 cs-31) 604)
			((and cs-5 cs-141 cs-31) 604)
			((and cs-0 cs-146 cs-31) 604)
			((and cs-5 cs-146 cs-31) 604)
			((and cs-0 cs-61 cs-48) 590)
			((and cs-5 cs-61 cs-48) 590)
			((and cs-0 cs-66 cs-48) 590)
			((and cs-5 cs-66 cs-48) 590)
			((and cs-0 cs-71 cs-48) 590)
			((and cs-5 cs-71 cs-48) 590)
			((and cs-0 cs-76 cs-48) 590)
			((and cs-5 cs-76 cs-48) 590)
			((and cs-0 cs-81 cs-48) 590)
			((and cs-5 cs-81 cs-48) 590)
			((and cs-0 cs-86 cs-48) 590)
			((and cs-5 cs-86 cs-48) 590)
			((and cs-0 cs-91 cs-48) 590)
			((and cs-5 cs-91 cs-48) 590)
			((and cs-0 cs-96 cs-48) 590)
			((and cs-5 cs-96 cs-48) 590)
			((and cs-0 cs-101 cs-48) 590)
			((and cs-5 cs-101 cs-48) 590)
			((and cs-0 cs-106 cs-48) 590)
			((and cs-5 cs-106 cs-48) 590)
			((and cs-0 cs-111 cs-48) 590)
			((and cs-5 cs-111 cs-48) 590)
			((and cs-0 cs-116 cs-48) 590)
			((and cs-5 cs-116 cs-48) 590)
			((and cs-0 cs-121 cs-48) 590)
			((and cs-5 cs-121 cs-48) 590)
			((and cs-0 cs-126 cs-48) 590)
			((and cs-5 cs-126 cs-48) 590)
			((and cs-0 cs-131 cs-48) 590)
			((and cs-5 cs-131 cs-48) 590)
			((and cs-0 cs-136 cs-48) 590)
			((and cs-5 cs-136 cs-48) 590)
			((and cs-0 cs-141 cs-48) 590)
			((and cs-5 cs-141 cs-48) 590)
			((and cs-0 cs-146 cs-48) 590)
			((and cs-5 cs-146 cs-48) 590)
			((and cs-0 cs-44 cs-367) 605)
			((and cs-5 cs-44 cs-367) 605)
			((and cs-0 cs-372 cs-2) 604)
			((and cs-5 cs-372 cs-2) 604)
			((and cs-0 cs-377 cs-2) 604)
			((and cs-5 cs-377 cs-2) 604)
			((and cs-0 cs-382 cs-2) 604)
			((and cs-5 cs-382 cs-2) 604)
			((and cs-0 cs-387 cs-2) 604)
			((and cs-5 cs-387 cs-2) 604)
			((and cs-0 cs-392 cs-2) 604)
			((and cs-5 cs-392 cs-2) 604)
			((and cs-0 cs-372 cs-18) 604)
			((and cs-5 cs-372 cs-18) 604)
			((and cs-0 cs-377 cs-18) 604)
			((and cs-5 cs-377 cs-18) 604)
			((and cs-0 cs-382 cs-18) 604)
			((and cs-5 cs-382 cs-18) 604)
			((and cs-0 cs-387 cs-18) 604)
			((and cs-5 cs-387 cs-18) 604)
			((and cs-0 cs-392 cs-18) 604)
			((and cs-5 cs-392 cs-18) 604)
			((and cs-0 cs-372 cs-31) 604)
			((and cs-5 cs-372 cs-31) 604)
			((and cs-0 cs-377 cs-31) 604)
			((and cs-5 cs-377 cs-31) 604)
			((and cs-0 cs-382 cs-31) 604)
			((and cs-5 cs-382 cs-31) 604)
			((and cs-0 cs-387 cs-31) 604)
			((and cs-5 cs-387 cs-31) 604)
			((and cs-0 cs-392 cs-31) 604)
			((and cs-5 cs-392 cs-31) 604)
			((and cs-0 cs-372 cs-48) 590)
			((and cs-5 cs-372 cs-48) 590)
			((and cs-0 cs-377 cs-48) 590)
			((and cs-5 cs-377 cs-48) 590)
			((and cs-0 cs-382 cs-48) 590)
			((and cs-5 cs-382 cs-48) 590)
			((and cs-0 cs-387 cs-48) 590)
			((and cs-5 cs-387 cs-48) 590)
			((and cs-0 cs-392 cs-48) 590)
			((and cs-5 cs-392 cs-48) 590)
			((and cs-0 cs-457) 589)
			((and cs-5 cs-457) 589)
			((and cs-0 cs-462) 585)
			((and cs-5 cs-462) 585)
			((and cs-0 cs-467) 585)
			((and cs-5 cs-467) 585)
			((and cs-0 cs-44 cs-472) 583)
			((and cs-5 cs-44 cs-472) 583)
			((and cs-0 cs-44 cs-477) 579)
			((and cs-5 cs-44 cs-477) 579)
			((and cs-0 cs-44 cs-482) 573)
			((and cs-5 cs-44 cs-482) 573)
			((and cs-487 cs-1 cs-2) 604)
			((and cs-490 cs-1 cs-2) 604)
			((and cs-493 cs-1 cs-2) 604)
			((and cs-496 cs-1 cs-2) 604)
			((and cs-499 cs-1 cs-2) 604)
			((and cs-502 cs-1 cs-2) 604)
			((and cs-505 cs-1 cs-2) 604)
			((and cs-508 cs-1 cs-2) 604)
			((and cs-511 cs-1 cs-2) 604)
			((and cs-514 cs-1 cs-2) 604)
			((and cs-517 cs-1 cs-2) 604)
			((and cs-520 cs-1 cs-2) 604)
			((and cs-487 cs-8 cs-2) 604)
			((and cs-490 cs-8 cs-2) 604)
			((and cs-493 cs-8 cs-2) 604)
			((and cs-496 cs-8 cs-2) 604)
			((and cs-499 cs-8 cs-2) 604)
			((and cs-502 cs-8 cs-2) 604)
			((and cs-505 cs-8 cs-2) 604)
			((and cs-508 cs-8 cs-2) 604)
			((and cs-511 cs-8 cs-2) 604)
			((and cs-514 cs-8 cs-2) 604)
			((and cs-517 cs-8 cs-2) 604)
			((and cs-520 cs-8 cs-2) 604)
			((and cs-487 cs-13 cs-2) 604)
			((and cs-490 cs-13 cs-2) 604)
			((and cs-493 cs-13 cs-2) 604)
			((and cs-496 cs-13 cs-2) 604)
			((and cs-499 cs-13 cs-2) 604)
			((and cs-502 cs-13 cs-2) 604)
			((and cs-505 cs-13 cs-2) 604)
			((and cs-508 cs-13 cs-2) 604)
			((and cs-511 cs-13 cs-2) 604)
			((and cs-514 cs-13 cs-2) 604)
			((and cs-517 cs-13 cs-2) 604)
			((and cs-520 cs-13 cs-2) 604)
			((and cs-487 cs-1 cs-18) 604)
			((and cs-490 cs-1 cs-18) 604)
			((and cs-493 cs-1 cs-18) 604)
			((and cs-496 cs-1 cs-18) 604)
			((and cs-499 cs-1 cs-18) 604)
			((and cs-502 cs-1 cs-18) 604)
			((and cs-505 cs-1 cs-18) 604)
			((and cs-508 cs-1 cs-18) 604)
			((and cs-511 cs-1 cs-18) 604)
			((and cs-514 cs-1 cs-18) 604)
			((and cs-517 cs-1 cs-18) 604)
			((and cs-520 cs-1 cs-18) 604)
			((and cs-487 cs-8 cs-18) 604)
			((and cs-490 cs-8 cs-18) 604)
			((and cs-493 cs-8 cs-18) 604)
			((and cs-496 cs-8 cs-18) 604)
			((and cs-499 cs-8 cs-18) 604)
			((and cs-502 cs-8 cs-18) 604)
			((and cs-505 cs-8 cs-18) 604)
			((and cs-508 cs-8 cs-18) 604)
			((and cs-511 cs-8 cs-18) 604)
			((and cs-514 cs-8 cs-18) 604)
			((and cs-517 cs-8 cs-18) 604)
			((and cs-520 cs-8 cs-18) 604)
			((and cs-487 cs-13 cs-18) 604)
			((and cs-490 cs-13 cs-18) 604)
			((and cs-493 cs-13 cs-18) 604)
			((and cs-496 cs-13 cs-18) 604)
			((and cs-499 cs-13 cs-18) 604)
			((and cs-502 cs-13 cs-18) 604)
			((and cs-505 cs-13 cs-18) 604)
			((and cs-508 cs-13 cs-18) 604)
			((and cs-511 cs-13 cs-18) 604)
			((and cs-514 cs-13 cs-18) 604)
			((and cs-517 cs-13 cs-18) 604)
			((and cs-520 cs-13 cs-18) 604)
			((and cs-487 cs-1 cs-31) 604)
			((and cs-490 cs-1 cs-31) 604)
			((and cs-493 cs-1 cs-31) 604)
			((and cs-496 cs-1 cs-31) 604)
			((and cs-499 cs-1 cs-31) 604)
			((and cs-502 cs-1 cs-31) 604)
			((and cs-505 cs-1 cs-31) 604)
			((and cs-508 cs-1 cs-31) 604)
			((and cs-511 cs-1 cs-31) 604)
			((and cs-514 cs-1 cs-31) 604)
			((and cs-517 cs-1 cs-31) 604)
			((and cs-520 cs-1 cs-31) 604)
			((and cs-487 cs-8 cs-31) 604)
			((and cs-490 cs-8 cs-31) 604)
			((and cs-493 cs-8 cs-31) 604)
			((and cs-496 cs-8 cs-31) 604)
			((and cs-499 cs-8 cs-31) 604)
			((and cs-502 cs-8 cs-31) 604)
			((and cs-505 cs-8 cs-31) 604)
			((and cs-508 cs-8 cs-31) 604)
			((and cs-511 cs-8 cs-31) 604)
			((and cs-514 cs-8 cs-31) 604)
			((and cs-517 cs-8 cs-31) 604)
			((and cs-520 cs-8 cs-31) 604)
			((and cs-487 cs-13 cs-31) 604)
			((and cs-490 cs-13 cs-31) 604)
			((and cs-493 cs-13 cs-31) 604)
			((and cs-496 cs-13 cs-31) 604)
			((and cs-499 cs-13 cs-31) 604)
			((and cs-502 cs-13 cs-31) 604)
			((and cs-505 cs-13 cs-31) 604)
			((and cs-508 cs-13 cs-31) 604)
			((and cs-511 cs-13 cs-31) 604)
			((and cs-514 cs-13 cs-31) 604)
			((and cs-517 cs-13 cs-31) 604)
			((and cs-520 cs-13 cs-31) 604)
			((and cs-487 cs-1 cs-48) 590)
			((and cs-490 cs-1 cs-48) 590)
			((and cs-493 cs-1 cs-48) 590)
			((and cs-496 cs-1 cs-48) 590)
			((and cs-499 cs-1 cs-48) 590)
			((and cs-502 cs-1 cs-48) 590)
			((and cs-505 cs-1 cs-48) 590)
			((and cs-508 cs-1 cs-48) 590)
			((and cs-511 cs-1 cs-48) 590)
			((and cs-514 cs-1 cs-48) 590)
			((and cs-517 cs-1 cs-48) 590)
			((and cs-520 cs-1 cs-48) 590)
			((and cs-487 cs-8 cs-48) 590)
			((and cs-490 cs-8 cs-48) 590)
			((and cs-493 cs-8 cs-48) 590)
			((and cs-496 cs-8 cs-48) 590)
			((and cs-499 cs-8 cs-48) 590)
			((and cs-502 cs-8 cs-48) 590)
			((and cs-505 cs-8 cs-48) 590)
			((and cs-508 cs-8 cs-48) 590)
			((and cs-511 cs-8 cs-48) 590)
			((and cs-514 cs-8 cs-48) 590)
			((and cs-517 cs-8 cs-48) 590)
			((and cs-520 cs-8 cs-48) 590)
			((and cs-487 cs-13 cs-48) 590)
			((and cs-490 cs-13 cs-48) 590)
			((and cs-493 cs-13 cs-48) 590)
			((and cs-496 cs-13 cs-48) 590)
			((and cs-499 cs-13 cs-48) 590)
			((and cs-502 cs-13 cs-48) 590)
			((and cs-505 cs-13 cs-48) 590)
			((and cs-508 cs-13 cs-48) 590)
			((and cs-511 cs-13 cs-48) 590)
			((and cs-514 cs-13 cs-48) 590)
			((and cs-517 cs-13 cs-48) 590)
			((and cs-520 cs-13 cs-48) 590)
			((and cs-487 cs-61 cs-2) 604)
			((and cs-490 cs-61 cs-2) 604)
			((and cs-493 cs-61 cs-2) 604)
			((and cs-496 cs-61 cs-2) 604)
			((and cs-499 cs-61 cs-2) 604)
			((and cs-502 cs-61 cs-2) 604)
			((and cs-505 cs-61 cs-2) 604)
			((and cs-508 cs-61 cs-2) 604)
			((and cs-511 cs-61 cs-2) 604)
			((and cs-514 cs-61 cs-2) 604)
			((and cs-517 cs-61 cs-2) 604)
			((and cs-520 cs-61 cs-2) 604)
			((and cs-487 cs-66 cs-2) 604)
			((and cs-490 cs-66 cs-2) 604)
			((and cs-493 cs-66 cs-2) 604)
			((and cs-496 cs-66 cs-2) 604)
			((and cs-499 cs-66 cs-2) 604)
			((and cs-502 cs-66 cs-2) 604)
			((and cs-505 cs-66 cs-2) 604)
			((and cs-508 cs-66 cs-2) 604)
			((and cs-511 cs-66 cs-2) 604)
			((and cs-514 cs-66 cs-2) 604)
			((and cs-517 cs-66 cs-2) 604)
			((and cs-520 cs-66 cs-2) 604)
			((and cs-487 cs-71 cs-2) 604)
			((and cs-490 cs-71 cs-2) 604)
			((and cs-493 cs-71 cs-2) 604)
			((and cs-496 cs-71 cs-2) 604)
			((and cs-499 cs-71 cs-2) 604)
			((and cs-502 cs-71 cs-2) 604)
			((and cs-505 cs-71 cs-2) 604)
			((and cs-508 cs-71 cs-2) 604)
			((and cs-511 cs-71 cs-2) 604)
			((and cs-514 cs-71 cs-2) 604)
			((and cs-517 cs-71 cs-2) 604)
			((and cs-520 cs-71 cs-2) 604)
			((and cs-487 cs-76 cs-2) 604)
			((and cs-490 cs-76 cs-2) 604)
			((and cs-493 cs-76 cs-2) 604)
			((and cs-496 cs-76 cs-2) 604)
			((and cs-499 cs-76 cs-2) 604)
			((and cs-502 cs-76 cs-2) 604)
			((and cs-505 cs-76 cs-2) 604)
			((and cs-508 cs-76 cs-2) 604)
			((and cs-511 cs-76 cs-2) 604)
			((and cs-514 cs-76 cs-2) 604)
			((and cs-517 cs-76 cs-2) 604)
			((and cs-520 cs-76 cs-2) 604)
			((and cs-487 cs-81 cs-2) 604)
			((and cs-490 cs-81 cs-2) 604)
			((and cs-493 cs-81 cs-2) 604)
			((and cs-496 cs-81 cs-2) 604)
			((and cs-499 cs-81 cs-2) 604)
			((and cs-502 cs-81 cs-2) 604)
			((and cs-505 cs-81 cs-2) 604)
			((and cs-508 cs-81 cs-2) 604)
			((and cs-511 cs-81 cs-2) 604)
			((and cs-514 cs-81 cs-2) 604)
			((and cs-517 cs-81 cs-2) 604)
			((and cs-520 cs-81 cs-2) 604)
			((and cs-487 cs-86 cs-2) 604)
			((and cs-490 cs-86 cs-2) 604)
			((and cs-493 cs-86 cs-2) 604)
			((and cs-496 cs-86 cs-2) 604)
			((and cs-499 cs-86 cs-2) 604)
			((and cs-502 cs-86 cs-2) 604)
			((and cs-505 cs-86 cs-2) 604)
			((and cs-508 cs-86 cs-2) 604)
			((and cs-511 cs-86 cs-2) 604)
			((and cs-514 cs-86 cs-2) 604)
			((and cs-517 cs-86 cs-2) 604)
			((and cs-520 cs-86 cs-2) 604)
			((and cs-487 cs-91 cs-2) 604)
			((and cs-490 cs-91 cs-2) 604)
			((and cs-493 cs-91 cs-2) 604)
			((and cs-496 cs-91 cs-2) 604)
			((and cs-499 cs-91 cs-2) 604)
			((and cs-502 cs-91 cs-2) 604)
			((and cs-505 cs-91 cs-2) 604)
			((and cs-508 cs-91 cs-2) 604)
			((and cs-511 cs-91 cs-2) 604)
			((and cs-514 cs-91 cs-2) 604)
			((and cs-517 cs-91 cs-2) 604)
			((and cs-520 cs-91 cs-2) 604)
			((and cs-487 cs-96 cs-2) 604)
			((and cs-490 cs-96 cs-2) 604)
			((and cs-493 cs-96 cs-2) 604)
			((and cs-496 cs-96 cs-2) 604)
			((and cs-499 cs-96 cs-2) 604)
			((and cs-502 cs-96 cs-2) 604)
			((and cs-505 cs-96 cs-2) 604)
			((and cs-508 cs-96 cs-2) 604)
			((and cs-511 cs-96 cs-2) 604)
			((and cs-514 cs-96 cs-2) 604)
			((and cs-517 cs-96 cs-2) 604)
			((and cs-520 cs-96 cs-2) 604)
			((and cs-487 cs-101 cs-2) 604)
			((and cs-490 cs-101 cs-2) 604)
			((and cs-493 cs-101 cs-2) 604)
			((and cs-496 cs-101 cs-2) 604)
			((and cs-499 cs-101 cs-2) 604)
			((and cs-502 cs-101 cs-2) 604)
			((and cs-505 cs-101 cs-2) 604)
			((and cs-508 cs-101 cs-2) 604)
			((and cs-511 cs-101 cs-2) 604)
			((and cs-514 cs-101 cs-2) 604)
			((and cs-517 cs-101 cs-2) 604)
			((and cs-520 cs-101 cs-2) 604)
			((and cs-487 cs-106 cs-2) 604)
			((and cs-490 cs-106 cs-2) 604)
			((and cs-493 cs-106 cs-2) 604)
			((and cs-496 cs-106 cs-2) 604)
			((and cs-499 cs-106 cs-2) 604)
			((and cs-502 cs-106 cs-2) 604)
			((and cs-505 cs-106 cs-2) 604)
			((and cs-508 cs-106 cs-2) 604)
			((and cs-511 cs-106 cs-2) 604)
			((and cs-514 cs-106 cs-2) 604)
			((and cs-517 cs-106 cs-2) 604)
			((and cs-520 cs-106 cs-2) 604)
			((and cs-487 cs-111 cs-2) 604)
			((and cs-490 cs-111 cs-2) 604)
			((and cs-493 cs-111 cs-2) 604)
			((and cs-496 cs-111 cs-2) 604)
			((and cs-499 cs-111 cs-2) 604)
			((and cs-502 cs-111 cs-2) 604)
			((and cs-505 cs-111 cs-2) 604)
			((and cs-508 cs-111 cs-2) 604)
			((and cs-511 cs-111 cs-2) 604)
			((and cs-514 cs-111 cs-2) 604)
			((and cs-517 cs-111 cs-2) 604)
			((and cs-520 cs-111 cs-2) 604)
			((and cs-487 cs-116 cs-2) 604)
			((and cs-490 cs-116 cs-2) 604)
			((and cs-493 cs-116 cs-2) 604)
			((and cs-496 cs-116 cs-2) 604)
			((and cs-499 cs-116 cs-2) 604)
			((and cs-502 cs-116 cs-2) 604)
			((and cs-505 cs-116 cs-2) 604)
			((and cs-508 cs-116 cs-2) 604)
			((and cs-511 cs-116 cs-2) 604)
			((and cs-514 cs-116 cs-2) 604)
			((and cs-517 cs-116 cs-2) 604)
			((and cs-520 cs-116 cs-2) 604)
			((and cs-487 cs-121 cs-2) 604)
			((and cs-490 cs-121 cs-2) 604)
			((and cs-493 cs-121 cs-2) 604)
			((and cs-496 cs-121 cs-2) 604)
			((and cs-499 cs-121 cs-2) 604)
			((and cs-502 cs-121 cs-2) 604)
			((and cs-505 cs-121 cs-2) 604)
			((and cs-508 cs-121 cs-2) 604)
			((and cs-511 cs-121 cs-2) 604)
			((and cs-514 cs-121 cs-2) 604)
			((and cs-517 cs-121 cs-2) 604)
			((and cs-520 cs-121 cs-2) 604)
			((and cs-487 cs-126 cs-2) 604)
			((and cs-490 cs-126 cs-2) 604)
			((and cs-493 cs-126 cs-2) 604)
			((and cs-496 cs-126 cs-2) 604)
			((and cs-499 cs-126 cs-2) 604)
			((and cs-502 cs-126 cs-2) 604)
			((and cs-505 cs-126 cs-2) 604)
			((and cs-508 cs-126 cs-2) 604)
			((and cs-511 cs-126 cs-2) 604)
			((and cs-514 cs-126 cs-2) 604)
			((and cs-517 cs-126 cs-2) 604)
			((and cs-520 cs-126 cs-2) 604)
			((and cs-487 cs-131 cs-2) 604)
			((and cs-490 cs-131 cs-2) 604)
			((and cs-493 cs-131 cs-2) 604)
			((and cs-496 cs-131 cs-2) 604)
			((and cs-499 cs-131 cs-2) 604)
			((and cs-502 cs-131 cs-2) 604)
			((and cs-505 cs-131 cs-2) 604)
			((and cs-508 cs-131 cs-2) 604)
			((and cs-511 cs-131 cs-2) 604)
			((and cs-514 cs-131 cs-2) 604)
			((and cs-517 cs-131 cs-2) 604)
			((and cs-520 cs-131 cs-2) 604)
			((and cs-487 cs-136 cs-2) 604)
			((and cs-490 cs-136 cs-2) 604)
			((and cs-493 cs-136 cs-2) 604)
			((and cs-496 cs-136 cs-2) 604)
			((and cs-499 cs-136 cs-2) 604)
			((and cs-502 cs-136 cs-2) 604)
			((and cs-505 cs-136 cs-2) 604)
			((and cs-508 cs-136 cs-2) 604)
			((and cs-511 cs-136 cs-2) 604)
			((and cs-514 cs-136 cs-2) 604)
			((and cs-517 cs-136 cs-2) 604)
			((and cs-520 cs-136 cs-2) 604)
			((and cs-487 cs-141 cs-2) 604)
			((and cs-490 cs-141 cs-2) 604)
			((and cs-493 cs-141 cs-2) 604)
			((and cs-496 cs-141 cs-2) 604)
			((and cs-499 cs-141 cs-2) 604)
			((and cs-502 cs-141 cs-2) 604)
			((and cs-505 cs-141 cs-2) 604)
			((and cs-508 cs-141 cs-2) 604)
			((and cs-511 cs-141 cs-2) 604)
			((and cs-514 cs-141 cs-2) 604)
			((and cs-517 cs-141 cs-2) 604)
			((and cs-520 cs-141 cs-2) 604)
			((and cs-487 cs-146 cs-2) 604)
			((and cs-490 cs-146 cs-2) 604)
			((and cs-493 cs-146 cs-2) 604)
			((and cs-496 cs-146 cs-2) 604)
			((and cs-499 cs-146 cs-2) 604)
			((and cs-502 cs-146 cs-2) 604)
			((and cs-505 cs-146 cs-2) 604)
			((and cs-508 cs-146 cs-2) 604)
			((and cs-511 cs-146 cs-2) 604)
			((and cs-514 cs-146 cs-2) 604)
			((and cs-517 cs-146 cs-2) 604)
			((and cs-520 cs-146 cs-2) 604)
			((and cs-487 cs-61 cs-18) 604)
			((and cs-490 cs-61 cs-18) 604)
			((and cs-493 cs-61 cs-18) 604)
			((and cs-496 cs-61 cs-18) 604)
			((and cs-499 cs-61 cs-18) 604)
			((and cs-502 cs-61 cs-18) 604)
			((and cs-505 cs-61 cs-18) 604)
			((and cs-508 cs-61 cs-18) 604)
			((and cs-511 cs-61 cs-18) 604)
			((and cs-514 cs-61 cs-18) 604)
			((and cs-517 cs-61 cs-18) 604)
			((and cs-520 cs-61 cs-18) 604)
			((and cs-487 cs-66 cs-18) 604)
			((and cs-490 cs-66 cs-18) 604)
			((and cs-493 cs-66 cs-18) 604)
			((and cs-496 cs-66 cs-18) 604)
			((and cs-499 cs-66 cs-18) 604)
			((and cs-502 cs-66 cs-18) 604)
			((and cs-505 cs-66 cs-18) 604)
			((and cs-508 cs-66 cs-18) 604)
			((and cs-511 cs-66 cs-18) 604)
			((and cs-514 cs-66 cs-18) 604)
			((and cs-517 cs-66 cs-18) 604)
			((and cs-520 cs-66 cs-18) 604)
			((and cs-487 cs-71 cs-18) 604)
			((and cs-490 cs-71 cs-18) 604)
			((and cs-493 cs-71 cs-18) 604)
			((and cs-496 cs-71 cs-18) 604)
			((and cs-499 cs-71 cs-18) 604)
			((and cs-502 cs-71 cs-18) 604)
			((and cs-505 cs-71 cs-18) 604)
			((and cs-508 cs-71 cs-18) 604)
			((and cs-511 cs-71 cs-18) 604)
			((and cs-514 cs-71 cs-18) 604)
			((and cs-517 cs-71 cs-18) 604)
			((and cs-520 cs-71 cs-18) 604)
			((and cs-487 cs-76 cs-18) 604)
			((and cs-490 cs-76 cs-18) 604)
			((and cs-493 cs-76 cs-18) 604)
			((and cs-496 cs-76 cs-18) 604)
			((and cs-499 cs-76 cs-18) 604)
			((and cs-502 cs-76 cs-18) 604)
			((and cs-505 cs-76 cs-18) 604)
			((and cs-508 cs-76 cs-18) 604)
			((and cs-511 cs-76 cs-18) 604)
			((and cs-514 cs-76 cs-18) 604)
			((and cs-517 cs-76 cs-18) 604)
			((and cs-520 cs-76 cs-18) 604)
			((and cs-487 cs-81 cs-18) 604)
			((and cs-490 cs-81 cs-18) 604)
			((and cs-493 cs-81 cs-18) 604)
			((and cs-496 cs-81 cs-18) 604)
			((and cs-499 cs-81 cs-18) 604)
			((and cs-502 cs-81 cs-18) 604)
			((and cs-505 cs-81 cs-18) 604)
			((and cs-508 cs-81 cs-18) 604)
			((and cs-511 cs-81 cs-18) 604)
			((and cs-514 cs-81 cs-18) 604)
			((and cs-517 cs-81 cs-18) 604)
			((and cs-520 cs-81 cs-18) 604)
			((and cs-487 cs-86 cs-18) 604)
			((and cs-490 cs-86 cs-18) 604)
			((and cs-493 cs-86 cs-18) 604)
			((and cs-496 cs-86 cs-18) 604)
			((and cs-499 cs-86 cs-18) 604)
			((and cs-502 cs-86 cs-18) 604)
			((and cs-505 cs-86 cs-18) 604)
			((and cs-508 cs-86 cs-18) 604)
			((and cs-511 cs-86 cs-18) 604)
			((and cs-514 cs-86 cs-18) 604)
			((and cs-517 cs-86 cs-18) 604)
			((and cs-520 cs-86 cs-18) 604)
			((and cs-487 cs-91 cs-18) 604)
			((and cs-490 cs-91 cs-18) 604)
			((and cs-493 cs-91 cs-18) 604)
			((and cs-496 cs-91 cs-18) 604)
			((and cs-499 cs-91 cs-18) 604)
			((and cs-502 cs-91 cs-18) 604)
			((and cs-505 cs-91 cs-18) 604)
			((and cs-508 cs-91 cs-18) 604)
			((and cs-511 cs-91 cs-18) 604)
			((and cs-514 cs-91 cs-18) 604)
			((and cs-517 cs-91 cs-18) 604)
			((and cs-520 cs-91 cs-18) 604)
			((and cs-487 cs-96 cs-18) 604)
			((and cs-490 cs-96 cs-18) 604)
			((and cs-493 cs-96 cs-18) 604)
			((and cs-496 cs-96 cs-18) 604)
			((and cs-499 cs-96 cs-18) 604)
			((and cs-502 cs-96 cs-18) 604)
			((and cs-505 cs-96 cs-18) 604)
			((and cs-508 cs-96 cs-18) 604)
			((and cs-511 cs-96 cs-18) 604)
			((and cs-514 cs-96 cs-18) 604)
			((and cs-517 cs-96 cs-18) 604)
			((and cs-520 cs-96 cs-18) 604)
			((and cs-487 cs-101 cs-18) 604)
			((and cs-490 cs-101 cs-18) 604)
			((and cs-493 cs-101 cs-18) 604)
			((and cs-496 cs-101 cs-18) 604)
			((and cs-499 cs-101 cs-18) 604)
			((and cs-502 cs-101 cs-18) 604)
			((and cs-505 cs-101 cs-18) 604)
			((and cs-508 cs-101 cs-18) 604)
			((and cs-511 cs-101 cs-18) 604)
			((and cs-514 cs-101 cs-18) 604)
			((and cs-517 cs-101 cs-18) 604)
			((and cs-520 cs-101 cs-18) 604)
			((and cs-487 cs-106 cs-18) 604)
			((and cs-490 cs-106 cs-18) 604)
			((and cs-493 cs-106 cs-18) 604)
			((and cs-496 cs-106 cs-18) 604)
			((and cs-499 cs-106 cs-18) 604)
			((and cs-502 cs-106 cs-18) 604)
			((and cs-505 cs-106 cs-18) 604)
			((and cs-508 cs-106 cs-18) 604)
			((and cs-511 cs-106 cs-18) 604)
			((and cs-514 cs-106 cs-18) 604)
			((and cs-517 cs-106 cs-18) 604)
			((and cs-520 cs-106 cs-18) 604)
			((and cs-487 cs-111 cs-18) 604)
			((and cs-490 cs-111 cs-18) 604)
			((and cs-493 cs-111 cs-18) 604)
			((and cs-496 cs-111 cs-18) 604)
			((and cs-499 cs-111 cs-18) 604)
			((and cs-502 cs-111 cs-18) 604)
			((and cs-505 cs-111 cs-18) 604)
			((and cs-508 cs-111 cs-18) 604)
			((and cs-511 cs-111 cs-18) 604)
			((and cs-514 cs-111 cs-18) 604)
			((and cs-517 cs-111 cs-18) 604)
			((and cs-520 cs-111 cs-18) 604)
			((and cs-487 cs-116 cs-18) 604)
			((and cs-490 cs-116 cs-18) 604)
			((and cs-493 cs-116 cs-18) 604)
			((and cs-496 cs-116 cs-18) 604)
			((and cs-499 cs-116 cs-18) 604)
			((and cs-502 cs-116 cs-18) 604)
			((and cs-505 cs-116 cs-18) 604)
			((and cs-508 cs-116 cs-18) 604)
			((and cs-511 cs-116 cs-18) 604)
			((and cs-514 cs-116 cs-18) 604)
			((and cs-517 cs-116 cs-18) 604)
			((and cs-520 cs-116 cs-18) 604)
			((and cs-487 cs-121 cs-18) 604)
			((and cs-490 cs-121 cs-18) 604)
			((and cs-493 cs-121 cs-18) 604)
			((and cs-496 cs-121 cs-18) 604)
			((and cs-499 cs-121 cs-18) 604)
			((and cs-502 cs-121 cs-18) 604)
			((and cs-505 cs-121 cs-18) 604)
			((and cs-508 cs-121 cs-18) 604)
			((and cs-511 cs-121 cs-18) 604)
			((and cs-514 cs-121 cs-18) 604)
			((and cs-517 cs-121 cs-18) 604)
			((and cs-520 cs-121 cs-18) 604)
			((and cs-487 cs-126 cs-18) 604)
			((and cs-490 cs-126 cs-18) 604)
			((and cs-493 cs-126 cs-18) 604)
			((and cs-496 cs-126 cs-18) 604)
			((and cs-499 cs-126 cs-18) 604)
			((and cs-502 cs-126 cs-18) 604)
			((and cs-505 cs-126 cs-18) 604)
			((and cs-508 cs-126 cs-18) 604)
			((and cs-511 cs-126 cs-18) 604)
			((and cs-514 cs-126 cs-18) 604)
			((and cs-517 cs-126 cs-18) 604)
			((and cs-520 cs-126 cs-18) 604)
			((and cs-487 cs-131 cs-18) 604)
			((and cs-490 cs-131 cs-18) 604)
			((and cs-493 cs-131 cs-18) 604)
			((and cs-496 cs-131 cs-18) 604)
			((and cs-499 cs-131 cs-18) 604)
			((and cs-502 cs-131 cs-18) 604)
			((and cs-505 cs-131 cs-18) 604)
			((and cs-508 cs-131 cs-18) 604)
			((and cs-511 cs-131 cs-18) 604)
			((and cs-514 cs-131 cs-18) 604)
			((and cs-517 cs-131 cs-18) 604)
			((and cs-520 cs-131 cs-18) 604)
			((and cs-487 cs-136 cs-18) 604)
			((and cs-490 cs-136 cs-18) 604)
			((and cs-493 cs-136 cs-18) 604)
			((and cs-496 cs-136 cs-18) 604)
			((and cs-499 cs-136 cs-18) 604)
			((and cs-502 cs-136 cs-18) 604)
			((and cs-505 cs-136 cs-18) 604)
			((and cs-508 cs-136 cs-18) 604)
			((and cs-511 cs-136 cs-18) 604)
			((and cs-514 cs-136 cs-18) 604)
			((and cs-517 cs-136 cs-18) 604)
			((and cs-520 cs-136 cs-18) 604)
			((and cs-487 cs-141 cs-18) 604)
			((and cs-490 cs-141 cs-18) 604)
			((and cs-493 cs-141 cs-18) 604)
			((and cs-496 cs-141 cs-18) 604)
			((and cs-499 cs-141 cs-18) 604)
			((and cs-502 cs-141 cs-18) 604)
			((and cs-505 cs-141 cs-18) 604)
			((and cs-508 cs-141 cs-18) 604)
			((and cs-511 cs-141 cs-18) 604)
			((and cs-514 cs-141 cs-18) 604)
			((and cs-517 cs-141 cs-18) 604)
			((and cs-520 cs-141 cs-18) 604)
			((and cs-487 cs-146 cs-18) 604)
			((and cs-490 cs-146 cs-18) 604)
			((and cs-493 cs-146 cs-18) 604)
			((and cs-496 cs-146 cs-18) 604)
			((and cs-499 cs-146 cs-18) 604)
			((and cs-502 cs-146 cs-18) 604)
			((and cs-505 cs-146 cs-18) 604)
			((and cs-508 cs-146 cs-18) 604)
			((and cs-511 cs-146 cs-18) 604)
			((and cs-514 cs-146 cs-18) 604)
			((and cs-517 cs-146 cs-18) 604)
			((and cs-520 cs-146 cs-18) 604)
			((and cs-487 cs-61 cs-31) 604)
			((and cs-490 cs-61 cs-31) 604)
			((and cs-493 cs-61 cs-31) 604)
			((and cs-496 cs-61 cs-31) 604)
			((and cs-499 cs-61 cs-31) 604)
			((and cs-502 cs-61 cs-31) 604)
			((and cs-505 cs-61 cs-31) 604)
			((and cs-508 cs-61 cs-31) 604)
			((and cs-511 cs-61 cs-31) 604)
			((and cs-514 cs-61 cs-31) 604)
			((and cs-517 cs-61 cs-31) 604)
			((and cs-520 cs-61 cs-31) 604)
			((and cs-487 cs-66 cs-31) 604)
			((and cs-490 cs-66 cs-31) 604)
			((and cs-493 cs-66 cs-31) 604)
			((and cs-496 cs-66 cs-31) 604)
			((and cs-499 cs-66 cs-31) 604)
			((and cs-502 cs-66 cs-31) 604)
			((and cs-505 cs-66 cs-31) 604)
			((and cs-508 cs-66 cs-31) 604)
			((and cs-511 cs-66 cs-31) 604)
			((and cs-514 cs-66 cs-31) 604)
			((and cs-517 cs-66 cs-31) 604)
			((and cs-520 cs-66 cs-31) 604)
			((and cs-487 cs-71 cs-31) 604)
			((and cs-490 cs-71 cs-31) 604)
			((and cs-493 cs-71 cs-31) 604)
			((and cs-496 cs-71 cs-31) 604)
			((and cs-499 cs-71 cs-31) 604)
			((and cs-502 cs-71 cs-31) 604)
			((and cs-505 cs-71 cs-31) 604)
			((and cs-508 cs-71 cs-31) 604)
			((and cs-511 cs-71 cs-31) 604)
			((and cs-514 cs-71 cs-31) 604)
			((and cs-517 cs-71 cs-31) 604)
			((and cs-520 cs-71 cs-31) 604)
			((and cs-487 cs-76 cs-31) 604)
			((and cs-490 cs-76 cs-31) 604)
			((and cs-493 cs-76 cs-31) 604)
			((and cs-496 cs-76 cs-31) 604)
			((and cs-499 cs-76 cs-31) 604)
			((and cs-502 cs-76 cs-31) 604)
			((and cs-505 cs-76 cs-31) 604)
			((and cs-508 cs-76 cs-31) 604)
			((and cs-511 cs-76 cs-31) 604)
			((and cs-514 cs-76 cs-31) 604)
			((and cs-517 cs-76 cs-31) 604)
			((and cs-520 cs-76 cs-31) 604)
			((and cs-487 cs-81 cs-31) 604)
			((and cs-490 cs-81 cs-31) 604)
			((and cs-493 cs-81 cs-31) 604)
			((and cs-496 cs-81 cs-31) 604)
			((and cs-499 cs-81 cs-31) 604)
			((and cs-502 cs-81 cs-31) 604)
			((and cs-505 cs-81 cs-31) 604)
			((and cs-508 cs-81 cs-31) 604)
			((and cs-511 cs-81 cs-31) 604)
			((and cs-514 cs-81 cs-31) 604)
			((and cs-517 cs-81 cs-31) 604)
			((and cs-520 cs-81 cs-31) 604)
			((and cs-487 cs-86 cs-31) 604)
			((and cs-490 cs-86 cs-31) 604)
			((and cs-493 cs-86 cs-31) 604)
			((and cs-496 cs-86 cs-31) 604)
			((and cs-499 cs-86 cs-31) 604)
			((and cs-502 cs-86 cs-31) 604)
			((and cs-505 cs-86 cs-31) 604)
			((and cs-508 cs-86 cs-31) 604)
			((and cs-511 cs-86 cs-31) 604)
			((and cs-514 cs-86 cs-31) 604)
			((and cs-517 cs-86 cs-31) 604)
			((and cs-520 cs-86 cs-31) 604)
			((and cs-487 cs-91 cs-31) 604)
			((and cs-490 cs-91 cs-31) 604)
			((and cs-493 cs-91 cs-31) 604)
			((and cs-496 cs-91 cs-31) 604)
			((and cs-499 cs-91 cs-31) 604)
			((and cs-502 cs-91 cs-31) 604)
			((and cs-505 cs-91 cs-31) 604)
			((and cs-508 cs-91 cs-31) 604)
			((and cs-511 cs-91 cs-31) 604)
			((and cs-514 cs-91 cs-31) 604)
			((and cs-517 cs-91 cs-31) 604)
			((and cs-520 cs-91 cs-31) 604)
			((and cs-487 cs-96 cs-31) 604)
			((and cs-490 cs-96 cs-31) 604)
			((and cs-493 cs-96 cs-31) 604)
			((and cs-496 cs-96 cs-31) 604)
			((and cs-499 cs-96 cs-31) 604)
			((and cs-502 cs-96 cs-31) 604)
			((and cs-505 cs-96 cs-31) 604)
			((and cs-508 cs-96 cs-31) 604)
			((and cs-511 cs-96 cs-31) 604)
			((and cs-514 cs-96 cs-31) 604)
			((and cs-517 cs-96 cs-31) 604)
			((and cs-520 cs-96 cs-31) 604)
			((and cs-487 cs-101 cs-31) 604)
			((and cs-490 cs-101 cs-31) 604)
			((and cs-493 cs-101 cs-31) 604)
			((and cs-496 cs-101 cs-31) 604)
			((and cs-499 cs-101 cs-31) 604)
			((and cs-502 cs-101 cs-31) 604)
			((and cs-505 cs-101 cs-31) 604)
			((and cs-508 cs-101 cs-31) 604)
			((and cs-511 cs-101 cs-31) 604)
			((and cs-514 cs-101 cs-31) 604)
			((and cs-517 cs-101 cs-31) 604)
			((and cs-520 cs-101 cs-31) 604)
			((and cs-487 cs-106 cs-31) 604)
			((and cs-490 cs-106 cs-31) 604)
			((and cs-493 cs-106 cs-31) 604)
			((and cs-496 cs-106 cs-31) 604)
			((and cs-499 cs-106 cs-31) 604)
			((and cs-502 cs-106 cs-31) 604)
			((and cs-505 cs-106 cs-31) 604)
			((and cs-508 cs-106 cs-31) 604)
			((and cs-511 cs-106 cs-31) 604)
			((and cs-514 cs-106 cs-31) 604)
			((and cs-517 cs-106 cs-31) 604)
			((and cs-520 cs-106 cs-31) 604)
			((and cs-487 cs-111 cs-31) 604)
			((and cs-490 cs-111 cs-31) 604)
			((and cs-493 cs-111 cs-31) 604)
			((and cs-496 cs-111 cs-31) 604)
			((and cs-499 cs-111 cs-31) 604)
			((and cs-502 cs-111 cs-31) 604)
			((and cs-505 cs-111 cs-31) 604)
			((and cs-508 cs-111 cs-31) 604)
			((and cs-511 cs-111 cs-31) 604)
			((and cs-514 cs-111 cs-31) 604)
			((and cs-517 cs-111 cs-31) 604)
			((and cs-520 cs-111 cs-31) 604)
			((and cs-487 cs-116 cs-31) 604)
			((and cs-490 cs-116 cs-31) 604)
			((and cs-493 cs-116 cs-31) 604)
			((and cs-496 cs-116 cs-31) 604)
			((and cs-499 cs-116 cs-31) 604)
			((and cs-502 cs-116 cs-31) 604)
			((and cs-505 cs-116 cs-31) 604)
			((and cs-508 cs-116 cs-31) 604)
			((and cs-511 cs-116 cs-31) 604)
			((and cs-514 cs-116 cs-31) 604)
			((and cs-517 cs-116 cs-31) 604)
			((and cs-520 cs-116 cs-31) 604)
			((and cs-487 cs-121 cs-31) 604)
			((and cs-490 cs-121 cs-31) 604)
			((and cs-493 cs-121 cs-31) 604)
			((and cs-496 cs-121 cs-31) 604)
			((and cs-499 cs-121 cs-31) 604)
			((and cs-502 cs-121 cs-31) 604)
			((and cs-505 cs-121 cs-31) 604)
			((and cs-508 cs-121 cs-31) 604)
			((and cs-511 cs-121 cs-31) 604)
			((and cs-514 cs-121 cs-31) 604)
			((and cs-517 cs-121 cs-31) 604)
			((and cs-520 cs-121 cs-31) 604)
			((and cs-487 cs-126 cs-31) 604)
			((and cs-490 cs-126 cs-31) 604)
			((and cs-493 cs-126 cs-31) 604)
			((and cs-496 cs-126 cs-31) 604)
			((and cs-499 cs-126 cs-31) 604)
			((and cs-502 cs-126 cs-31) 604)
			((and cs-505 cs-126 cs-31) 604)
			((and cs-508 cs-126 cs-31) 604)
			((and cs-511 cs-126 cs-31) 604)
			((and cs-514 cs-126 cs-31) 604)
			((and cs-517 cs-126 cs-31) 604)
			((and cs-520 cs-126 cs-31) 604)
			((and cs-487 cs-131 cs-31) 604)
			((and cs-490 cs-131 cs-31) 604)
			((and cs-493 cs-131 cs-31) 604)
			((and cs-496 cs-131 cs-31) 604)
			((and cs-499 cs-131 cs-31) 604)
			((and cs-502 cs-131 cs-31) 604)
			((and cs-505 cs-131 cs-31) 604)
			((and cs-508 cs-131 cs-31) 604)
			((and cs-511 cs-131 cs-31) 604)
			((and cs-514 cs-131 cs-31) 604)
			((and cs-517 cs-131 cs-31) 604)
			((and cs-520 cs-131 cs-31) 604)
			((and cs-487 cs-136 cs-31) 604)
			((and cs-490 cs-136 cs-31) 604)
			((and cs-493 cs-136 cs-31) 604)
			((and cs-496 cs-136 cs-31) 604)
			((and cs-499 cs-136 cs-31) 604)
			((and cs-502 cs-136 cs-31) 604)
			((and cs-505 cs-136 cs-31) 604)
			((and cs-508 cs-136 cs-31) 604)
			((and cs-511 cs-136 cs-31) 604)
			((and cs-514 cs-136 cs-31) 604)
			((and cs-517 cs-136 cs-31) 604)
			((and cs-520 cs-136 cs-31) 604)
			((and cs-487 cs-141 cs-31) 604)
			((and cs-490 cs-141 cs-31) 604)
			((and cs-493 cs-141 cs-31) 604)
			((and cs-496 cs-141 cs-31) 604)
			((and cs-499 cs-141 cs-31) 604)
			((and cs-502 cs-141 cs-31) 604)
			((and cs-505 cs-141 cs-31) 604)
			((and cs-508 cs-141 cs-31) 604)
			((and cs-511 cs-141 cs-31) 604)
			((and cs-514 cs-141 cs-31) 604)
			((and cs-517 cs-141 cs-31) 604)
			((and cs-520 cs-141 cs-31) 604)
			((and cs-487 cs-146 cs-31) 604)
			((and cs-490 cs-146 cs-31) 604)
			((and cs-493 cs-146 cs-31) 604)
			((and cs-496 cs-146 cs-31) 604)
			((and cs-499 cs-146 cs-31) 604)
			((and cs-502 cs-146 cs-31) 604)
			((and cs-505 cs-146 cs-31) 604)
			((and cs-508 cs-146 cs-31) 604)
			((and cs-511 cs-146 cs-31) 604)
			((and cs-514 cs-146 cs-31) 604)
			((and cs-517 cs-146 cs-31) 604)
			((and cs-520 cs-146 cs-31) 604)
			((and cs-487 cs-61 cs-48) 590)
			((and cs-490 cs-61 cs-48) 590)
			((and cs-493 cs-61 cs-48) 590)
			((and cs-496 cs-61 cs-48) 590)
			((and cs-499 cs-61 cs-48) 590)
			((and cs-502 cs-61 cs-48) 590)
			((and cs-505 cs-61 cs-48) 590)
			((and cs-508 cs-61 cs-48) 590)
			((and cs-511 cs-61 cs-48) 590)
			((and cs-514 cs-61 cs-48) 590)
			((and cs-517 cs-61 cs-48) 590)
			((and cs-520 cs-61 cs-48) 590)
			((and cs-487 cs-66 cs-48) 590)
			((and cs-490 cs-66 cs-48) 590)
			((and cs-493 cs-66 cs-48) 590)
			((and cs-496 cs-66 cs-48) 590)
			((and cs-499 cs-66 cs-48) 590)
			((and cs-502 cs-66 cs-48) 590)
			((and cs-505 cs-66 cs-48) 590)
			((and cs-508 cs-66 cs-48) 590)
			((and cs-511 cs-66 cs-48) 590)
			((and cs-514 cs-66 cs-48) 590)
			((and cs-517 cs-66 cs-48) 590)
			((and cs-520 cs-66 cs-48) 590)
			((and cs-487 cs-71 cs-48) 590)
			((and cs-490 cs-71 cs-48) 590)
			((and cs-493 cs-71 cs-48) 590)
			((and cs-496 cs-71 cs-48) 590)
			((and cs-499 cs-71 cs-48) 590)
			((and cs-502 cs-71 cs-48) 590)
			((and cs-505 cs-71 cs-48) 590)
			((and cs-508 cs-71 cs-48) 590)
			((and cs-511 cs-71 cs-48) 590)
			((and cs-514 cs-71 cs-48) 590)
			((and cs-517 cs-71 cs-48) 590)
			((and cs-520 cs-71 cs-48) 590)
			((and cs-487 cs-76 cs-48) 590)
			((and cs-490 cs-76 cs-48) 590)
			((and cs-493 cs-76 cs-48) 590)
			((and cs-496 cs-76 cs-48) 590)
			((and cs-499 cs-76 cs-48) 590)
			((and cs-502 cs-76 cs-48) 590)
			((and cs-505 cs-76 cs-48) 590)
			((and cs-508 cs-76 cs-48) 590)
			((and cs-511 cs-76 cs-48) 590)
			((and cs-514 cs-76 cs-48) 590)
			((and cs-517 cs-76 cs-48) 590)
			((and cs-520 cs-76 cs-48) 590)
			((and cs-487 cs-81 cs-48) 590)
			((and cs-490 cs-81 cs-48) 590)
			((and cs-493 cs-81 cs-48) 590)
			((and cs-496 cs-81 cs-48) 590)
			((and cs-499 cs-81 cs-48) 590)
			((and cs-502 cs-81 cs-48) 590)
			((and cs-505 cs-81 cs-48) 590)
			((and cs-508 cs-81 cs-48) 590)
			((and cs-511 cs-81 cs-48) 590)
			((and cs-514 cs-81 cs-48) 590)
			((and cs-517 cs-81 cs-48) 590)
			((and cs-520 cs-81 cs-48) 590)
			((and cs-487 cs-86 cs-48) 590)
			((and cs-490 cs-86 cs-48) 590)
			((and cs-493 cs-86 cs-48) 590)
			((and cs-496 cs-86 cs-48) 590)
			((and cs-499 cs-86 cs-48) 590)
			((and cs-502 cs-86 cs-48) 590)
			((and cs-505 cs-86 cs-48) 590)
			((and cs-508 cs-86 cs-48) 590)
			((and cs-511 cs-86 cs-48) 590)
			((and cs-514 cs-86 cs-48) 590)
			((and cs-517 cs-86 cs-48) 590)
			((and cs-520 cs-86 cs-48) 590)
			((and cs-487 cs-91 cs-48) 590)
			((and cs-490 cs-91 cs-48) 590)
			((and cs-493 cs-91 cs-48) 590)
			((and cs-496 cs-91 cs-48) 590)
			((and cs-499 cs-91 cs-48) 590)
			((and cs-502 cs-91 cs-48) 590)
			((and cs-505 cs-91 cs-48) 590)
			((and cs-508 cs-91 cs-48) 590)
			((and cs-511 cs-91 cs-48) 590)
			((and cs-514 cs-91 cs-48) 590)
			((and cs-517 cs-91 cs-48) 590)
			((and cs-520 cs-91 cs-48) 590)
			((and cs-487 cs-96 cs-48) 590)
			((and cs-490 cs-96 cs-48) 590)
			((and cs-493 cs-96 cs-48) 590)
			((and cs-496 cs-96 cs-48) 590)
			((and cs-499 cs-96 cs-48) 590)
			((and cs-502 cs-96 cs-48) 590)
			((and cs-505 cs-96 cs-48) 590)
			((and cs-508 cs-96 cs-48) 590)
			((and cs-511 cs-96 cs-48) 590)
			((and cs-514 cs-96 cs-48) 590)
			((and cs-517 cs-96 cs-48) 590)
			((and cs-520 cs-96 cs-48) 590)
			((and cs-487 cs-101 cs-48) 590)
			((and cs-490 cs-101 cs-48) 590)
			((and cs-493 cs-101 cs-48) 590)
			((and cs-496 cs-101 cs-48) 590)
			((and cs-499 cs-101 cs-48) 590)
			((and cs-502 cs-101 cs-48) 590)
			((and cs-505 cs-101 cs-48) 590)
			((and cs-508 cs-101 cs-48) 590)
			((and cs-511 cs-101 cs-48) 590)
			((and cs-514 cs-101 cs-48) 590)
			((and cs-517 cs-101 cs-48) 590)
			((and cs-520 cs-101 cs-48) 590)
			((and cs-487 cs-106 cs-48) 590)
			((and cs-490 cs-106 cs-48) 590)
			((and cs-493 cs-106 cs-48) 590)
			((and cs-496 cs-106 cs-48) 590)
			((and cs-499 cs-106 cs-48) 590)
			((and cs-502 cs-106 cs-48) 590)
			((and cs-505 cs-106 cs-48) 590)
			((and cs-508 cs-106 cs-48) 590)
			((and cs-511 cs-106 cs-48) 590)
			((and cs-514 cs-106 cs-48) 590)
			((and cs-517 cs-106 cs-48) 590)
			((and cs-520 cs-106 cs-48) 590)
			((and cs-487 cs-111 cs-48) 590)
			((and cs-490 cs-111 cs-48) 590)
			((and cs-493 cs-111 cs-48) 590)
			((and cs-496 cs-111 cs-48) 590)
			((and cs-499 cs-111 cs-48) 590)
			((and cs-502 cs-111 cs-48) 590)
			((and cs-505 cs-111 cs-48) 590)
			((and cs-508 cs-111 cs-48) 590)
			((and cs-511 cs-111 cs-48) 590)
			((and cs-514 cs-111 cs-48) 590)
			((and cs-517 cs-111 cs-48) 590)
			((and cs-520 cs-111 cs-48) 590)
			((and cs-487 cs-116 cs-48) 590)
			((and cs-490 cs-116 cs-48) 590)
			((and cs-493 cs-116 cs-48) 590)
			((and cs-496 cs-116 cs-48) 590)
			((and cs-499 cs-116 cs-48) 590)
			((and cs-502 cs-116 cs-48) 590)
			((and cs-505 cs-116 cs-48) 590)
			((and cs-508 cs-116 cs-48) 590)
			((and cs-511 cs-116 cs-48) 590)
			((and cs-514 cs-116 cs-48) 590)
			((and cs-517 cs-116 cs-48) 590)
			((and cs-520 cs-116 cs-48) 590)
			((and cs-487 cs-121 cs-48) 590)
			((and cs-490 cs-121 cs-48) 590)
			((and cs-493 cs-121 cs-48) 590)
			((and cs-496 cs-121 cs-48) 590)
			((and cs-499 cs-121 cs-48) 590)
			((and cs-502 cs-121 cs-48) 590)
			((and cs-505 cs-121 cs-48) 590)
			((and cs-508 cs-121 cs-48) 590)
			((and cs-511 cs-121 cs-48) 590)
			((and cs-514 cs-121 cs-48) 590)
			((and cs-517 cs-121 cs-48) 590)
			((and cs-520 cs-121 cs-48) 590)
			((and cs-487 cs-126 cs-48) 590)
			((and cs-490 cs-126 cs-48) 590)
			((and cs-493 cs-126 cs-48) 590)
			((and cs-496 cs-126 cs-48) 590)
			((and cs-499 cs-126 cs-48) 590)
			((and cs-502 cs-126 cs-48) 590)
			((and cs-505 cs-126 cs-48) 590)
			((and cs-508 cs-126 cs-48) 590)
			((and cs-511 cs-126 cs-48) 590)
			((and cs-514 cs-126 cs-48) 590)
			((and cs-517 cs-126 cs-48) 590)
			((and cs-520 cs-126 cs-48) 590)
			((and cs-487 cs-131 cs-48) 590)
			((and cs-490 cs-131 cs-48) 590)
			((and cs-493 cs-131 cs-48) 590)
			((and cs-496 cs-131 cs-48) 590)
			((and cs-499 cs-131 cs-48) 590)
			((and cs-502 cs-131 cs-48) 590)
			((and cs-505 cs-131 cs-48) 590)
			((and cs-508 cs-131 cs-48) 590)
			((and cs-511 cs-131 cs-48) 590)
			((and cs-514 cs-131 cs-48) 590)
			((and cs-517 cs-131 cs-48) 590)
			((and cs-520 cs-131 cs-48) 590)
			((and cs-487 cs-136 cs-48) 590)
			((and cs-490 cs-136 cs-48) 590)
			((and cs-493 cs-136 cs-48) 590)
			((and cs-496 cs-136 cs-48) 590)
			((and cs-499 cs-136 cs-48) 590)
			((and cs-502 cs-136 cs-48) 590)
			((and cs-505 cs-136 cs-48) 590)
			((and cs-508 cs-136 cs-48) 590)
			((and cs-511 cs-136 cs-48) 590)
			((and cs-514 cs-136 cs-48) 590)
			((and cs-517 cs-136 cs-48) 590)
			((and cs-520 cs-136 cs-48) 590)
			((and cs-487 cs-141 cs-48) 590)
			((and cs-490 cs-141 cs-48) 590)
			((and cs-493 cs-141 cs-48) 590)
			((and cs-496 cs-141 cs-48) 590)
			((and cs-499 cs-141 cs-48) 590)
			((and cs-502 cs-141 cs-48) 590)
			((and cs-505 cs-141 cs-48) 590)
			((and cs-508 cs-141 cs-48) 590)
			((and cs-511 cs-141 cs-48) 590)
			((and cs-514 cs-141 cs-48) 590)
			((and cs-517 cs-141 cs-48) 590)
			((and cs-520 cs-141 cs-48) 590)
			((and cs-487 cs-146 cs-48) 590)
			((and cs-490 cs-146 cs-48) 590)
			((and cs-493 cs-146 cs-48) 590)
			((and cs-496 cs-146 cs-48) 590)
			((and cs-499 cs-146 cs-48) 590)
			((and cs-502 cs-146 cs-48) 590)
			((and cs-505 cs-146 cs-48) 590)
			((and cs-508 cs-146 cs-48) 590)
			((and cs-511 cs-146 cs-48) 590)
			((and cs-514 cs-146 cs-48) 590)
			((and cs-517 cs-146 cs-48) 590)
			((and cs-520 cs-146 cs-48) 590)
			((and cs-487 cs-44 cs-367) 605)
			((and cs-490 cs-44 cs-367) 605)
			((and cs-493 cs-44 cs-367) 605)
			((and cs-496 cs-44 cs-367) 605)
			((and cs-499 cs-44 cs-367) 605)
			((and cs-502 cs-44 cs-367) 605)
			((and cs-505 cs-44 cs-367) 605)
			((and cs-508 cs-44 cs-367) 605)
			((and cs-511 cs-44 cs-367) 605)
			((and cs-514 cs-44 cs-367) 605)
			((and cs-517 cs-44 cs-367) 605)
			((and cs-520 cs-44 cs-367) 605)
			((and cs-487 cs-372 cs-2) 604)
			((and cs-490 cs-372 cs-2) 604)
			((and cs-493 cs-372 cs-2) 604)
			((and cs-496 cs-372 cs-2) 604)
			((and cs-499 cs-372 cs-2) 604)
			((and cs-502 cs-372 cs-2) 604)
			((and cs-505 cs-372 cs-2) 604)
			((and cs-508 cs-372 cs-2) 604)
			((and cs-511 cs-372 cs-2) 604)
			((and cs-514 cs-372 cs-2) 604)
			((and cs-517 cs-372 cs-2) 604)
			((and cs-520 cs-372 cs-2) 604)
			((and cs-487 cs-377 cs-2) 604)
			((and cs-490 cs-377 cs-2) 604)
			((and cs-493 cs-377 cs-2) 604)
			((and cs-496 cs-377 cs-2) 604)
			((and cs-499 cs-377 cs-2) 604)
			((and cs-502 cs-377 cs-2) 604)
			((and cs-505 cs-377 cs-2) 604)
			((and cs-508 cs-377 cs-2) 604)
			((and cs-511 cs-377 cs-2) 604)
			((and cs-514 cs-377 cs-2) 604)
			((and cs-517 cs-377 cs-2) 604)
			((and cs-520 cs-377 cs-2) 604)
			((and cs-487 cs-382 cs-2) 604)
			((and cs-490 cs-382 cs-2) 604)
			((and cs-493 cs-382 cs-2) 604)
			((and cs-496 cs-382 cs-2) 604)
			((and cs-499 cs-382 cs-2) 604)
			((and cs-502 cs-382 cs-2) 604)
			((and cs-505 cs-382 cs-2) 604)
			((and cs-508 cs-382 cs-2) 604)
			((and cs-511 cs-382 cs-2) 604)
			((and cs-514 cs-382 cs-2) 604)
			((and cs-517 cs-382 cs-2) 604)
			((and cs-520 cs-382 cs-2) 604)
			((and cs-487 cs-387 cs-2) 604)
			((and cs-490 cs-387 cs-2) 604)
			((and cs-493 cs-387 cs-2) 604)
			((and cs-496 cs-387 cs-2) 604)
			((and cs-499 cs-387 cs-2) 604)
			((and cs-502 cs-387 cs-2) 604)
			((and cs-505 cs-387 cs-2) 604)
			((and cs-508 cs-387 cs-2) 604)
			((and cs-511 cs-387 cs-2) 604)
			((and cs-514 cs-387 cs-2) 604)
			((and cs-517 cs-387 cs-2) 604)
			((and cs-520 cs-387 cs-2) 604)
			((and cs-487 cs-392 cs-2) 604)
			((and cs-490 cs-392 cs-2) 604)
			((and cs-493 cs-392 cs-2) 604)
			((and cs-496 cs-392 cs-2) 604)
			((and cs-499 cs-392 cs-2) 604)
			((and cs-502 cs-392 cs-2) 604)
			((and cs-505 cs-392 cs-2) 604)
			((and cs-508 cs-392 cs-2) 604)
			((and cs-511 cs-392 cs-2) 604)
			((and cs-514 cs-392 cs-2) 604)
			((and cs-517 cs-392 cs-2) 604)
			((and cs-520 cs-392 cs-2) 604)
			((and cs-487 cs-372 cs-18) 604)
			((and cs-490 cs-372 cs-18) 604)
			((and cs-493 cs-372 cs-18) 604)
			((and cs-496 cs-372 cs-18) 604)
			((and cs-499 cs-372 cs-18) 604)
			((and cs-502 cs-372 cs-18) 604)
			((and cs-505 cs-372 cs-18) 604)
			((and cs-508 cs-372 cs-18) 604)
			((and cs-511 cs-372 cs-18) 604)
			((and cs-514 cs-372 cs-18) 604)
			((and cs-517 cs-372 cs-18) 604)
			((and cs-520 cs-372 cs-18) 604)
			((and cs-487 cs-377 cs-18) 604)
			((and cs-490 cs-377 cs-18) 604)
			((and cs-493 cs-377 cs-18) 604)
			((and cs-496 cs-377 cs-18) 604)
			((and cs-499 cs-377 cs-18) 604)
			((and cs-502 cs-377 cs-18) 604)
			((and cs-505 cs-377 cs-18) 604)
			((and cs-508 cs-377 cs-18) 604)
			((and cs-511 cs-377 cs-18) 604)
			((and cs-514 cs-377 cs-18) 604)
			((and cs-517 cs-377 cs-18) 604)
			((and cs-520 cs-377 cs-18) 604)
			((and cs-487 cs-382 cs-18) 604)
			((and cs-490 cs-382 cs-18) 604)
			((and cs-493 cs-382 cs-18) 604)
			((and cs-496 cs-382 cs-18) 604)
			((and cs-499 cs-382 cs-18) 604)
			((and cs-502 cs-382 cs-18) 604)
			((and cs-505 cs-382 cs-18) 604)
			((and cs-508 cs-382 cs-18) 604)
			((and cs-511 cs-382 cs-18) 604)
			((and cs-514 cs-382 cs-18) 604)
			((and cs-517 cs-382 cs-18) 604)
			((and cs-520 cs-382 cs-18) 604)
			((and cs-487 cs-387 cs-18) 604)
			((and cs-490 cs-387 cs-18) 604)
			((and cs-493 cs-387 cs-18) 604)
			((and cs-496 cs-387 cs-18) 604)
			((and cs-499 cs-387 cs-18) 604)
			((and cs-502 cs-387 cs-18) 604)
			((and cs-505 cs-387 cs-18) 604)
			((and cs-508 cs-387 cs-18) 604)
			((and cs-511 cs-387 cs-18) 604)
			((and cs-514 cs-387 cs-18) 604)
			((and cs-517 cs-387 cs-18) 604)
			((and cs-520 cs-387 cs-18) 604)
			((and cs-487 cs-392 cs-18) 604)
			((and cs-490 cs-392 cs-18) 604)
			((and cs-493 cs-392 cs-18) 604)
			((and cs-496 cs-392 cs-18) 604)
			((and cs-499 cs-392 cs-18) 604)
			((and cs-502 cs-392 cs-18) 604)
			((and cs-505 cs-392 cs-18) 604)
			((and cs-508 cs-392 cs-18) 604)
			((and cs-511 cs-392 cs-18) 604)
			((and cs-514 cs-392 cs-18) 604)
			((and cs-517 cs-392 cs-18) 604)
			((and cs-520 cs-392 cs-18) 604)
			((and cs-487 cs-372 cs-31) 604)
			((and cs-490 cs-372 cs-31) 604)
			((and cs-493 cs-372 cs-31) 604)
			((and cs-496 cs-372 cs-31) 604)
			((and cs-499 cs-372 cs-31) 604)
			((and cs-502 cs-372 cs-31) 604)
			((and cs-505 cs-372 cs-31) 604)
			((and cs-508 cs-372 cs-31) 604)
			((and cs-511 cs-372 cs-31) 604)
			((and cs-514 cs-372 cs-31) 604)
			((and cs-517 cs-372 cs-31) 604)
			((and cs-520 cs-372 cs-31) 604)
			((and cs-487 cs-377 cs-31) 604)
			((and cs-490 cs-377 cs-31) 604)
			((and cs-493 cs-377 cs-31) 604)
			((and cs-496 cs-377 cs-31) 604)
			((and cs-499 cs-377 cs-31) 604)
			((and cs-502 cs-377 cs-31) 604)
			((and cs-505 cs-377 cs-31) 604)
			((and cs-508 cs-377 cs-31) 604)
			((and cs-511 cs-377 cs-31) 604)
			((and cs-514 cs-377 cs-31) 604)
			((and cs-517 cs-377 cs-31) 604)
			((and cs-520 cs-377 cs-31) 604)
			((and cs-487 cs-382 cs-31) 604)
			((and cs-490 cs-382 cs-31) 604)
			((and cs-493 cs-382 cs-31) 604)
			((and cs-496 cs-382 cs-31) 604)
			((and cs-499 cs-382 cs-31) 604)
			((and cs-502 cs-382 cs-31) 604)
			((and cs-505 cs-382 cs-31) 604)
			((and cs-508 cs-382 cs-31) 604)
			((and cs-511 cs-382 cs-31) 604)
			((and cs-514 cs-382 cs-31) 604)
			((and cs-517 cs-382 cs-31) 604)
			((and cs-520 cs-382 cs-31) 604)
			((and cs-487 cs-387 cs-31) 604)
			((and cs-490 cs-387 cs-31) 604)
			((and cs-493 cs-387 cs-31) 604)
			((and cs-496 cs-387 cs-31) 604)
			((and cs-499 cs-387 cs-31) 604)
			((and cs-502 cs-387 cs-31) 604)
			((and cs-505 cs-387 cs-31) 604)
			((and cs-508 cs-387 cs-31) 604)
			((and cs-511 cs-387 cs-31) 604)
			((and cs-514 cs-387 cs-31) 604)
			((and cs-517 cs-387 cs-31) 604)
			((and cs-520 cs-387 cs-31) 604)
			((and cs-487 cs-392 cs-31) 604)
			((and cs-490 cs-392 cs-31) 604)
			((and cs-493 cs-392 cs-31) 604)
			((and cs-496 cs-392 cs-31) 604)
			((and cs-499 cs-392 cs-31) 604)
			((and cs-502 cs-392 cs-31) 604)
			((and cs-505 cs-392 cs-31) 604)
			((and cs-508 cs-392 cs-31) 604)
			((and cs-511 cs-392 cs-31) 604)
			((and cs-514 cs-392 cs-31) 604)
			((and cs-517 cs-392 cs-31) 604)
			((and cs-520 cs-392 cs-31) 604)
			((and cs-493 cs-44 (eqv? server-port 1537)) 603)
			((and cs-493 cs-44 (eqv? server-port 1532)) 602)
			((and cs-493 cs-44 (eqv? server-port 1531)) 601)
			((and cs-493 cs-44 (eqv? server-port 1530)) 600)
			((and cs-493 cs-44 (eqv? server-port 1529)) 599)
			((and cs-493 cs-44 (eqv? server-port 1527)) 598)
			((and cs-493 cs-44 (eqv? server-port 1526)) 597)
			((and cs-493 cs-44 (eqv? server-port 1525)) 596)
			((and cs-493 cs-44 (eqv? server-port 1524)) 595)
			((and cs-493 cs-44 (eqv? server-port 1522)) 594)
			((and cs-496 cs-44 cs-2929) 593)
			((and cs-499 cs-44 cs-2929) 592)
			((and cs-493 cs-44 cs-2929) 591)
			((and cs-487 cs-372 cs-48) 590)
			((and cs-490 cs-372 cs-48) 590)
			((and cs-493 cs-372 cs-48) 590)
			((and cs-496 cs-372 cs-48) 590)
			((and cs-499 cs-372 cs-48) 590)
			((and cs-502 cs-372 cs-48) 590)
			((and cs-505 cs-372 cs-48) 590)
			((and cs-508 cs-372 cs-48) 590)
			((and cs-511 cs-372 cs-48) 590)
			((and cs-514 cs-372 cs-48) 590)
			((and cs-517 cs-372 cs-48) 590)
			((and cs-520 cs-372 cs-48) 590)
			((and cs-487 cs-377 cs-48) 590)
			((and cs-490 cs-377 cs-48) 590)
			((and cs-493 cs-377 cs-48) 590)
			((and cs-496 cs-377 cs-48) 590)
			((and cs-499 cs-377 cs-48) 590)
			((and cs-502 cs-377 cs-48) 590)
			((and cs-505 cs-377 cs-48) 590)
			((and cs-508 cs-377 cs-48) 590)
			((and cs-511 cs-377 cs-48) 590)
			((and cs-514 cs-377 cs-48) 590)
			((and cs-517 cs-377 cs-48) 590)
			((and cs-520 cs-377 cs-48) 590)
			((and cs-487 cs-382 cs-48) 590)
			((and cs-490 cs-382 cs-48) 590)
			((and cs-493 cs-382 cs-48) 590)
			((and cs-496 cs-382 cs-48) 590)
			((and cs-499 cs-382 cs-48) 590)
			((and cs-502 cs-382 cs-48) 590)
			((and cs-505 cs-382 cs-48) 590)
			((and cs-508 cs-382 cs-48) 590)
			((and cs-511 cs-382 cs-48) 590)
			((and cs-514 cs-382 cs-48) 590)
			((and cs-517 cs-382 cs-48) 590)
			((and cs-520 cs-382 cs-48) 590)
			((and cs-487 cs-387 cs-48) 590)
			((and cs-490 cs-387 cs-48) 590)
			((and cs-493 cs-387 cs-48) 590)
			((and cs-496 cs-387 cs-48) 590)
			((and cs-499 cs-387 cs-48) 590)
			((and cs-502 cs-387 cs-48) 590)
			((and cs-505 cs-387 cs-48) 590)
			((and cs-508 cs-387 cs-48) 590)
			((and cs-511 cs-387 cs-48) 590)
			((and cs-514 cs-387 cs-48) 590)
			((and cs-517 cs-387 cs-48) 590)
			((and cs-520 cs-387 cs-48) 590)
			((and cs-487 cs-392 cs-48) 590)
			((and cs-490 cs-392 cs-48) 590)
			((and cs-493 cs-392 cs-48) 590)
			((and cs-496 cs-392 cs-48) 590)
			((and cs-499 cs-392 cs-48) 590)
			((and cs-502 cs-392 cs-48) 590)
			((and cs-505 cs-392 cs-48) 590)
			((and cs-508 cs-392 cs-48) 590)
			((and cs-511 cs-392 cs-48) 590)
			((and cs-514 cs-392 cs-48) 590)
			((and cs-517 cs-392 cs-48) 590)
			((and cs-520 cs-392 cs-48) 590)
			((and cs-487 cs-457) 589)
			((and cs-490 cs-457) 589)
			((and cs-493 cs-457) 589)
			((and cs-496 cs-457) 589)
			((and cs-499 cs-457) 589)
			((and cs-502 cs-457) 589)
			((and cs-505 cs-457) 589)
			((and cs-508 cs-457) 589)
			((and cs-511 cs-457) 589)
			((and cs-514 cs-457) 589)
			((and cs-517 cs-457) 589)
			((and cs-520 cs-457) 589)
			((and cs-520
				  cs-3080
				  (>= server-port 1024)
				  (<= server-port 65535))
			 588)
			((and cs-520
				  cs-44
				  (>= server-port 1024)
				  (<= server-port 65535))
			 588)
			((and cs-487 cs-462) 585)
			((and cs-490 cs-462) 585)
			((and cs-493 cs-462) 585)
			((and cs-496 cs-462) 585)
			((and cs-499 cs-462) 585)
			((and cs-502 cs-462) 585)
			((and cs-505 cs-462) 585)
			((and cs-508 cs-462) 585)
			((and cs-511 cs-462) 585)
			((and cs-514 cs-462) 585)
			((and cs-517 cs-462) 585)
			((and cs-520 cs-462) 585)
			((and cs-487 cs-467) 585)
			((and cs-490 cs-467) 585)
			((and cs-493 cs-467) 585)
			((and cs-496 cs-467) 585)
			((and cs-499 cs-467) 585)
			((and cs-502 cs-467) 585)
			((and cs-505 cs-467) 585)
			((and cs-508 cs-467) 585)
			((and cs-511 cs-467) 585)
			((and cs-514 cs-467) 585)
			((and cs-517 cs-467) 585)
			((and cs-520 cs-467) 585)
			((and cs-493 cs-44 (eqv? server-port 1528)) 584)
			((and cs-487 cs-44 cs-472) 583)
			((and cs-490 cs-44 cs-472) 583)
			((and cs-493 cs-44 cs-472) 583)
			((and cs-496 cs-44 cs-472) 583)
			((and cs-499 cs-44 cs-472) 583)
			((and cs-502 cs-44 cs-472) 583)
			((and cs-505 cs-44 cs-472) 583)
			((and cs-508 cs-44 cs-472) 583)
			((and cs-511 cs-44 cs-472) 583)
			((and cs-514 cs-44 cs-472) 583)
			((and cs-517 cs-44 cs-472) 583)
			((and cs-520 cs-44 cs-472) 583)
			((and cs-493 cs-44 (eqv? server-port 1533)) 581)
			((and cs-493 cs-44 (eqv? server-port 1534)) 580)
			((and cs-487 cs-44 cs-477) 579)
			((and cs-490 cs-44 cs-477) 579)
			((and cs-493 cs-44 cs-477) 579)
			((and cs-496 cs-44 cs-477) 579)
			((and cs-499 cs-44 cs-477) 579)
			((and cs-502 cs-44 cs-477) 579)
			((and cs-505 cs-44 cs-477) 579)
			((and cs-508 cs-44 cs-477) 579)
			((and cs-511 cs-44 cs-477) 579)
			((and cs-514 cs-44 cs-477) 579)
			((and cs-517 cs-44 cs-477) 579)
			((and cs-520 cs-44 cs-477) 579)
			((and cs-493 cs-44 (eqv? server-port 1535)) 578)
			((and cs-493 cs-44 (eqv? server-port 1536)) 577)
			((and cs-493 cs-44 (eqv? server-port 1541)) 576)
			((and cs-487 cs-44 cs-482) 573)
			((and cs-490 cs-44 cs-482) 573)
			((and cs-493 cs-44 cs-482) 573)
			((and cs-496 cs-44 cs-482) 573)
			((and cs-499 cs-44 cs-482) 573)
			((and cs-502 cs-44 cs-482) 573)
			((and cs-505 cs-44 cs-482) 573)
			((and cs-508 cs-44 cs-482) 573)
			((and cs-511 cs-44 cs-482) 573)
			((and cs-514 cs-44 cs-482) 573)
			((and cs-517 cs-44 cs-482) 573)
			((and cs-520 cs-44 cs-482) 573)
			((and cs-3225 cs-1 cs-2) 604)
			((and cs-3228 cs-1 cs-2) 604)
			((and cs-3231 cs-1 cs-2) 604)
			((and cs-3234 cs-1 cs-2) 604)
			((and cs-3225 cs-8 cs-2) 604)
			((and cs-3228 cs-8 cs-2) 604)
			((and cs-3231 cs-8 cs-2) 604)
			((and cs-3234 cs-8 cs-2) 604)
			((and cs-3225 cs-13 cs-2) 604)
			((and cs-3228 cs-13 cs-2) 604)
			((and cs-3231 cs-13 cs-2) 604)
			((and cs-3234 cs-13 cs-2) 604)
			((and cs-3225 cs-1 cs-18) 604)
			((and cs-3228 cs-1 cs-18) 604)
			((and cs-3231 cs-1 cs-18) 604)
			((and cs-3234 cs-1 cs-18) 604)
			((and cs-3225 cs-8 cs-18) 604)
			((and cs-3228 cs-8 cs-18) 604)
			((and cs-3231 cs-8 cs-18) 604)
			((and cs-3234 cs-8 cs-18) 604)
			((and cs-3225 cs-13 cs-18) 604)
			((and cs-3228 cs-13 cs-18) 604)
			((and cs-3231 cs-13 cs-18) 604)
			((and cs-3234 cs-13 cs-18) 604)
			((and cs-3225 cs-1 cs-31) 604)
			((and cs-3228 cs-1 cs-31) 604)
			((and cs-3231 cs-1 cs-31) 604)
			((and cs-3234 cs-1 cs-31) 604)
			((and cs-3225 cs-8 cs-31) 604)
			((and cs-3228 cs-8 cs-31) 604)
			((and cs-3231 cs-8 cs-31) 604)
			((and cs-3234 cs-8 cs-31) 604)
			((and cs-3225 cs-13 cs-31) 604)
			((and cs-3228 cs-13 cs-31) 604)
			((and cs-3231 cs-13 cs-31) 604)
			((and cs-3234 cs-13 cs-31) 604)
			((and cs-3225 cs-1 cs-48) 590)
			((and cs-3228 cs-1 cs-48) 590)
			((and cs-3231 cs-1 cs-48) 590)
			((and cs-3234 cs-1 cs-48) 590)
			((and cs-3225 cs-8 cs-48) 590)
			((and cs-3228 cs-8 cs-48) 590)
			((and cs-3231 cs-8 cs-48) 590)
			((and cs-3234 cs-8 cs-48) 590)
			((and cs-3225 cs-13 cs-48) 590)
			((and cs-3228 cs-13 cs-48) 590)
			((and cs-3231 cs-13 cs-48) 590)
			((and cs-3234 cs-13 cs-48) 590)
			((and (eqv? client-zone 34) cs-3326) 582)
			((and cs-1 cs-3326) 582)
			((and cs-8 cs-3326) 582)
			((and cs-13 cs-3326) 582)
			((and (eqv? client-zone 5) cs-3326) 582)
			((and (eqv? client-zone 1) cs-3326) 582)
			((and cs-3225 cs-61 cs-2) 604)
			((and cs-3228 cs-61 cs-2) 604)
			((and cs-3231 cs-61 cs-2) 604)
			((and cs-3234 cs-61 cs-2) 604)
			((and cs-3225 cs-66 cs-2) 604)
			((and cs-3228 cs-66 cs-2) 604)
			((and cs-3231 cs-66 cs-2) 604)
			((and cs-3234 cs-66 cs-2) 604)
			((and cs-3225 cs-71 cs-2) 604)
			((and cs-3228 cs-71 cs-2) 604)
			((and cs-3231 cs-71 cs-2) 604)
			((and cs-3234 cs-71 cs-2) 604)
			((and cs-3225 cs-76 cs-2) 604)
			((and cs-3228 cs-76 cs-2) 604)
			((and cs-3231 cs-76 cs-2) 604)
			((and cs-3234 cs-76 cs-2) 604)
			((and cs-3225 cs-81 cs-2) 604)
			((and cs-3228 cs-81 cs-2) 604)
			((and cs-3231 cs-81 cs-2) 604)
			((and cs-3234 cs-81 cs-2) 604)
			((and cs-3225 cs-86 cs-2) 604)
			((and cs-3228 cs-86 cs-2) 604)
			((and cs-3231 cs-86 cs-2) 604)
			((and cs-3234 cs-86 cs-2) 604)
			((and cs-3225 cs-91 cs-2) 604)
			((and cs-3228 cs-91 cs-2) 604)
			((and cs-3231 cs-91 cs-2) 604)
			((and cs-3234 cs-91 cs-2) 604)
			((and cs-3225 cs-96 cs-2) 604)
			((and cs-3228 cs-96 cs-2) 604)
			((and cs-3231 cs-96 cs-2) 604)
			((and cs-3234 cs-96 cs-2) 604)
			((and cs-3225 cs-101 cs-2) 604)
			((and cs-3228 cs-101 cs-2) 604)
			((and cs-3231 cs-101 cs-2) 604)
			((and cs-3234 cs-101 cs-2) 604)
			((and cs-3225 cs-106 cs-2) 604)
			((and cs-3228 cs-106 cs-2) 604)
			((and cs-3231 cs-106 cs-2) 604)
			((and cs-3234 cs-106 cs-2) 604)
			((and cs-3225 cs-111 cs-2) 604)
			((and cs-3228 cs-111 cs-2) 604)
			((and cs-3231 cs-111 cs-2) 604)
			((and cs-3234 cs-111 cs-2) 604)
			((and cs-3225 cs-116 cs-2) 604)
			((and cs-3228 cs-116 cs-2) 604)
			((and cs-3231 cs-116 cs-2) 604)
			((and cs-3234 cs-116 cs-2) 604)
			((and cs-3225 cs-121 cs-2) 604)
			((and cs-3228 cs-121 cs-2) 604)
			((and cs-3231 cs-121 cs-2) 604)
			((and cs-3234 cs-121 cs-2) 604)
			((and cs-3225 cs-126 cs-2) 604)
			((and cs-3228 cs-126 cs-2) 604)
			((and cs-3231 cs-126 cs-2) 604)
			((and cs-3234 cs-126 cs-2) 604)
			((and cs-3225 cs-131 cs-2) 604)
			((and cs-3228 cs-131 cs-2) 604)
			((and cs-3231 cs-131 cs-2) 604)
			((and cs-3234 cs-131 cs-2) 604)
			((and cs-3225 cs-136 cs-2) 604)
			((and cs-3228 cs-136 cs-2) 604)
			((and cs-3231 cs-136 cs-2) 604)
			((and cs-3234 cs-136 cs-2) 604)
			((and cs-3225 cs-141 cs-2) 604)
			((and cs-3228 cs-141 cs-2) 604)
			((and cs-3231 cs-141 cs-2) 604)
			((and cs-3234 cs-141 cs-2) 604)
			((and cs-3225 cs-146 cs-2) 604)
			((and cs-3228 cs-146 cs-2) 604)
			((and cs-3231 cs-146 cs-2) 604)
			((and cs-3234 cs-146 cs-2) 604)
			((and cs-3225 cs-61 cs-18) 604)
			((and cs-3228 cs-61 cs-18) 604)
			((and cs-3231 cs-61 cs-18) 604)
			((and cs-3234 cs-61 cs-18) 604)
			((and cs-3225 cs-66 cs-18) 604)
			((and cs-3228 cs-66 cs-18) 604)
			((and cs-3231 cs-66 cs-18) 604)
			((and cs-3234 cs-66 cs-18) 604)
			((and cs-3225 cs-71 cs-18) 604)
			((and cs-3228 cs-71 cs-18) 604)
			((and cs-3231 cs-71 cs-18) 604)
			((and cs-3234 cs-71 cs-18) 604)
			((and cs-3225 cs-76 cs-18) 604)
			((and cs-3228 cs-76 cs-18) 604)
			((and cs-3231 cs-76 cs-18) 604)
			((and cs-3234 cs-76 cs-18) 604)
			((and cs-3225 cs-81 cs-18) 604)
			((and cs-3228 cs-81 cs-18) 604)
			((and cs-3231 cs-81 cs-18) 604)
			((and cs-3234 cs-81 cs-18) 604)
			((and cs-3225 cs-86 cs-18) 604)
			((and cs-3228 cs-86 cs-18) 604)
			((and cs-3231 cs-86 cs-18) 604)
			((and cs-3234 cs-86 cs-18) 604)
			((and cs-3225 cs-91 cs-18) 604)
			((and cs-3228 cs-91 cs-18) 604)
			((and cs-3231 cs-91 cs-18) 604)
			((and cs-3234 cs-91 cs-18) 604)
			((and cs-3225 cs-96 cs-18) 604)
			((and cs-3228 cs-96 cs-18) 604)
			((and cs-3231 cs-96 cs-18) 604)
			((and cs-3234 cs-96 cs-18) 604)
			((and cs-3225 cs-101 cs-18) 604)
			((and cs-3228 cs-101 cs-18) 604)
			((and cs-3231 cs-101 cs-18) 604)
			((and cs-3234 cs-101 cs-18) 604)
			((and cs-3225 cs-106 cs-18) 604)
			((and cs-3228 cs-106 cs-18) 604)
			((and cs-3231 cs-106 cs-18) 604)
			((and cs-3234 cs-106 cs-18) 604)
			((and cs-3225 cs-111 cs-18) 604)
			((and cs-3228 cs-111 cs-18) 604)
			((and cs-3231 cs-111 cs-18) 604)
			((and cs-3234 cs-111 cs-18) 604)
			((and cs-3225 cs-116 cs-18) 604)
			((and cs-3228 cs-116 cs-18) 604)
			((and cs-3231 cs-116 cs-18) 604)
			((and cs-3234 cs-116 cs-18) 604)
			((and cs-3225 cs-121 cs-18) 604)
			((and cs-3228 cs-121 cs-18) 604)
			((and cs-3231 cs-121 cs-18) 604)
			((and cs-3234 cs-121 cs-18) 604)
			((and cs-3225 cs-126 cs-18) 604)
			((and cs-3228 cs-126 cs-18) 604)
			((and cs-3231 cs-126 cs-18) 604)
			((and cs-3234 cs-126 cs-18) 604)
			((and cs-3225 cs-131 cs-18) 604)
			((and cs-3228 cs-131 cs-18) 604)
			((and cs-3231 cs-131 cs-18) 604)
			((and cs-3234 cs-131 cs-18) 604)
			((and cs-3225 cs-136 cs-18) 604)
			((and cs-3228 cs-136 cs-18) 604)
			((and cs-3231 cs-136 cs-18) 604)
			((and cs-3234 cs-136 cs-18) 604)
			((and cs-3225 cs-141 cs-18) 604)
			((and cs-3228 cs-141 cs-18) 604)
			((and cs-3231 cs-141 cs-18) 604)
			((and cs-3234 cs-141 cs-18) 604)
			((and cs-3225 cs-146 cs-18) 604)
			((and cs-3228 cs-146 cs-18) 604)
			((and cs-3231 cs-146 cs-18) 604)
			((and cs-3234 cs-146 cs-18) 604)
			((and cs-3225 cs-61 cs-31) 604)
			((and cs-3228 cs-61 cs-31) 604)
			((and cs-3231 cs-61 cs-31) 604)
			((and cs-3234 cs-61 cs-31) 604)
			((and cs-3225 cs-66 cs-31) 604)
			((and cs-3228 cs-66 cs-31) 604)
			((and cs-3231 cs-66 cs-31) 604)
			((and cs-3234 cs-66 cs-31) 604)
			((and cs-3225 cs-71 cs-31) 604)
			((and cs-3228 cs-71 cs-31) 604)
			((and cs-3231 cs-71 cs-31) 604)
			((and cs-3234 cs-71 cs-31) 604)
			((and cs-3225 cs-76 cs-31) 604)
			((and cs-3228 cs-76 cs-31) 604)
			((and cs-3231 cs-76 cs-31) 604)
			((and cs-3234 cs-76 cs-31) 604)
			((and cs-3225 cs-81 cs-31) 604)
			((and cs-3228 cs-81 cs-31) 604)
			((and cs-3231 cs-81 cs-31) 604)
			((and cs-3234 cs-81 cs-31) 604)
			((and cs-3225 cs-86 cs-31) 604)
			((and cs-3228 cs-86 cs-31) 604)
			((and cs-3231 cs-86 cs-31) 604)
			((and cs-3234 cs-86 cs-31) 604)
			((and cs-3225 cs-91 cs-31) 604)
			((and cs-3228 cs-91 cs-31) 604)
			((and cs-3231 cs-91 cs-31) 604)
			((and cs-3234 cs-91 cs-31) 604)
			((and cs-3225 cs-96 cs-31) 604)
			((and cs-3228 cs-96 cs-31) 604)
			((and cs-3231 cs-96 cs-31) 604)
			((and cs-3234 cs-96 cs-31) 604)
			((and cs-3225 cs-101 cs-31) 604)
			((and cs-3228 cs-101 cs-31) 604)
			((and cs-3231 cs-101 cs-31) 604)
			((and cs-3234 cs-101 cs-31) 604)
			((and cs-3225 cs-106 cs-31) 604)
			((and cs-3228 cs-106 cs-31) 604)
			((and cs-3231 cs-106 cs-31) 604)
			((and cs-3234 cs-106 cs-31) 604)
			((and cs-3225 cs-111 cs-31) 604)
			((and cs-3228 cs-111 cs-31) 604)
			((and cs-3231 cs-111 cs-31) 604)
			((and cs-3234 cs-111 cs-31) 604)
			((and cs-3225 cs-116 cs-31) 604)
			((and cs-3228 cs-116 cs-31) 604)
			((and cs-3231 cs-116 cs-31) 604)
			((and cs-3234 cs-116 cs-31) 604)
			((and cs-3225 cs-121 cs-31) 604)
			((and cs-3228 cs-121 cs-31) 604)
			((and cs-3231 cs-121 cs-31) 604)
			((and cs-3234 cs-121 cs-31) 604)
			((and cs-3225 cs-126 cs-31) 604)
			((and cs-3228 cs-126 cs-31) 604)
			((and cs-3231 cs-126 cs-31) 604)
			((and cs-3234 cs-126 cs-31) 604)
			((and cs-3225 cs-131 cs-31) 604)
			((and cs-3228 cs-131 cs-31) 604)
			((and cs-3231 cs-131 cs-31) 604)
			((and cs-3234 cs-131 cs-31) 604)
			((and cs-3225 cs-136 cs-31) 604)
			((and cs-3228 cs-136 cs-31) 604)
			((and cs-3231 cs-136 cs-31) 604)
			((and cs-3234 cs-136 cs-31) 604)
			((and cs-3225 cs-141 cs-31) 604)
			((and cs-3228 cs-141 cs-31) 604)
			((and cs-3231 cs-141 cs-31) 604)
			((and cs-3234 cs-141 cs-31) 604)
			((and cs-3225 cs-146 cs-31) 604)
			((and cs-3228 cs-146 cs-31) 604)
			((and cs-3231 cs-146 cs-31) 604)
			((and cs-3234 cs-146 cs-31) 604)
			((and cs-3225 cs-61 cs-48) 590)
			((and cs-3228 cs-61 cs-48) 590)
			((and cs-3231 cs-61 cs-48) 590)
			((and cs-3234 cs-61 cs-48) 590)
			((and cs-3225 cs-66 cs-48) 590)
			((and cs-3228 cs-66 cs-48) 590)
			((and cs-3231 cs-66 cs-48) 590)
			((and cs-3234 cs-66 cs-48) 590)
			((and cs-3225 cs-71 cs-48) 590)
			((and cs-3228 cs-71 cs-48) 590)
			((and cs-3231 cs-71 cs-48) 590)
			((and cs-3234 cs-71 cs-48) 590)
			((and cs-3225 cs-76 cs-48) 590)
			((and cs-3228 cs-76 cs-48) 590)
			((and cs-3231 cs-76 cs-48) 590)
			((and cs-3234 cs-76 cs-48) 590)
			((and cs-3225 cs-81 cs-48) 590)
			((and cs-3228 cs-81 cs-48) 590)
			((and cs-3231 cs-81 cs-48) 590)
			((and cs-3234 cs-81 cs-48) 590)
			((and cs-3225 cs-86 cs-48) 590)
			((and cs-3228 cs-86 cs-48) 590)
			((and cs-3231 cs-86 cs-48) 590)
			((and cs-3234 cs-86 cs-48) 590)
			((and cs-3225 cs-91 cs-48) 590)
			((and cs-3228 cs-91 cs-48) 590)
			((and cs-3231 cs-91 cs-48) 590)
			((and cs-3234 cs-91 cs-48) 590)
			((and cs-3225 cs-96 cs-48) 590)
			((and cs-3228 cs-96 cs-48) 590)
			((and cs-3231 cs-96 cs-48) 590)
			((and cs-3234 cs-96 cs-48) 590)
			((and cs-3225 cs-101 cs-48) 590)
			((and cs-3228 cs-101 cs-48) 590)
			((and cs-3231 cs-101 cs-48) 590)
			((and cs-3234 cs-101 cs-48) 590)
			((and cs-3225 cs-106 cs-48) 590)
			((and cs-3228 cs-106 cs-48) 590)
			((and cs-3231 cs-106 cs-48) 590)
			((and cs-3234 cs-106 cs-48) 590)
			((and cs-3225 cs-111 cs-48) 590)
			((and cs-3228 cs-111 cs-48) 590)
			((and cs-3231 cs-111 cs-48) 590)
			((and cs-3234 cs-111 cs-48) 590)
			((and cs-3225 cs-116 cs-48) 590)
			((and cs-3228 cs-116 cs-48) 590)
			((and cs-3231 cs-116 cs-48) 590)
			((and cs-3234 cs-116 cs-48) 590)
			((and cs-3225 cs-121 cs-48) 590)
			((and cs-3228 cs-121 cs-48) 590)
			((and cs-3231 cs-121 cs-48) 590)
			((and cs-3234 cs-121 cs-48) 590)
			((and cs-3225 cs-126 cs-48) 590)
			((and cs-3228 cs-126 cs-48) 590)
			((and cs-3231 cs-126 cs-48) 590)
			((and cs-3234 cs-126 cs-48) 590)
			((and cs-3225 cs-131 cs-48) 590)
			((and cs-3228 cs-131 cs-48) 590)
			((and cs-3231 cs-131 cs-48) 590)
			((and cs-3234 cs-131 cs-48) 590)
			((and cs-3225 cs-136 cs-48) 590)
			((and cs-3228 cs-136 cs-48) 590)
			((and cs-3231 cs-136 cs-48) 590)
			((and cs-3234 cs-136 cs-48) 590)
			((and cs-3225 cs-141 cs-48) 590)
			((and cs-3228 cs-141 cs-48) 590)
			((and cs-3231 cs-141 cs-48) 590)
			((and cs-3234 cs-141 cs-48) 590)
			((and cs-3225 cs-146 cs-48) 590)
			((and cs-3228 cs-146 cs-48) 590)
			((and cs-3231 cs-146 cs-48) 590)
			((and cs-3234 cs-146 cs-48) 590)
			((and cs-61 cs-3326) 582)
			((and (eqv? client-zone 37) cs-3326) 582)
			((and (eqv? client-zone 36) cs-3326) 582)
			((and (eqv? client-zone 35) cs-3326) 582)
			((and cs-66 cs-3326) 582)
			((and cs-71 cs-3326) 582)
			((and (eqv? client-zone 31) cs-3326) 582)
			((and cs-76 cs-3326) 582)
			((and cs-81 cs-3326) 582)
			((and cs-86 cs-3326) 582)
			((and cs-91 cs-3326) 582)
			((and cs-96 cs-3326) 582)
			((and cs-101 cs-3326) 582)
			((and cs-106 cs-3326) 582)
			((and cs-111 cs-3326) 582)
			((and cs-116 cs-3326) 582)
			((and cs-121 cs-3326) 582)
			((and cs-126 cs-3326) 582)
			((and cs-131 cs-3326) 582)
			((and cs-136 cs-3326) 582)
			((and (eqv? client-zone 12) cs-3326) 582)
			((and (eqv? client-zone 11) cs-3326) 582)
			((and cs-141 cs-3326) 582)
			((and cs-146 cs-3326) 582)
			((and (eqv? client-zone 6) cs-3326) 582)
			((and (eqv? client-zone 4) cs-3326) 582)
			((and (eqv? client-zone 3) cs-3326) 582)
			((and cs-3225 cs-44 cs-367) 605)
			((and cs-3228 cs-44 cs-367) 605)
			((and cs-3231 cs-44 cs-367) 605)
			((and cs-3234 cs-44 cs-367) 605)
			((and cs-3225 cs-372 cs-2) 604)
			((and cs-3228 cs-372 cs-2) 604)
			((and cs-3231 cs-372 cs-2) 604)
			((and cs-3234 cs-372 cs-2) 604)
			((and cs-3225 cs-377 cs-2) 604)
			((and cs-3228 cs-377 cs-2) 604)
			((and cs-3231 cs-377 cs-2) 604)
			((and cs-3234 cs-377 cs-2) 604)
			((and cs-3225 cs-382 cs-2) 604)
			((and cs-3228 cs-382 cs-2) 604)
			((and cs-3231 cs-382 cs-2) 604)
			((and cs-3234 cs-382 cs-2) 604)
			((and cs-3225 cs-387 cs-2) 604)
			((and cs-3228 cs-387 cs-2) 604)
			((and cs-3231 cs-387 cs-2) 604)
			((and cs-3234 cs-387 cs-2) 604)
			((and cs-3225 cs-392 cs-2) 604)
			((and cs-3228 cs-392 cs-2) 604)
			((and cs-3231 cs-392 cs-2) 604)
			((and cs-3234 cs-392 cs-2) 604)
			((and cs-3225 cs-372 cs-18) 604)
			((and cs-3228 cs-372 cs-18) 604)
			((and cs-3231 cs-372 cs-18) 604)
			((and cs-3234 cs-372 cs-18) 604)
			((and cs-3225 cs-377 cs-18) 604)
			((and cs-3228 cs-377 cs-18) 604)
			((and cs-3231 cs-377 cs-18) 604)
			((and cs-3234 cs-377 cs-18) 604)
			((and cs-3225 cs-382 cs-18) 604)
			((and cs-3228 cs-382 cs-18) 604)
			((and cs-3231 cs-382 cs-18) 604)
			((and cs-3234 cs-382 cs-18) 604)
			((and cs-3225 cs-387 cs-18) 604)
			((and cs-3228 cs-387 cs-18) 604)
			((and cs-3231 cs-387 cs-18) 604)
			((and cs-3234 cs-387 cs-18) 604)
			((and cs-3225 cs-392 cs-18) 604)
			((and cs-3228 cs-392 cs-18) 604)
			((and cs-3231 cs-392 cs-18) 604)
			((and cs-3234 cs-392 cs-18) 604)
			((and cs-3225 cs-372 cs-31) 604)
			((and cs-3228 cs-372 cs-31) 604)
			((and cs-3231 cs-372 cs-31) 604)
			((and cs-3234 cs-372 cs-31) 604)
			((and cs-3225 cs-377 cs-31) 604)
			((and cs-3228 cs-377 cs-31) 604)
			((and cs-3231 cs-377 cs-31) 604)
			((and cs-3234 cs-377 cs-31) 604)
			((and cs-3225 cs-382 cs-31) 604)
			((and cs-3228 cs-382 cs-31) 604)
			((and cs-3231 cs-382 cs-31) 604)
			((and cs-3234 cs-382 cs-31) 604)
			((and cs-3225 cs-387 cs-31) 604)
			((and cs-3228 cs-387 cs-31) 604)
			((and cs-3231 cs-387 cs-31) 604)
			((and cs-3234 cs-387 cs-31) 604)
			((and cs-3225 cs-392 cs-31) 604)
			((and cs-3228 cs-392 cs-31) 604)
			((and cs-3231 cs-392 cs-31) 604)
			((and cs-3234 cs-392 cs-31) 604)
			((and cs-3225 cs-372 cs-48) 590)
			((and cs-3228 cs-372 cs-48) 590)
			((and cs-3231 cs-372 cs-48) 590)
			((and cs-3234 cs-372 cs-48) 590)
			((and cs-3225 cs-377 cs-48) 590)
			((and cs-3228 cs-377 cs-48) 590)
			((and cs-3231 cs-377 cs-48) 590)
			((and cs-3234 cs-377 cs-48) 590)
			((and cs-3225 cs-382 cs-48) 590)
			((and cs-3228 cs-382 cs-48) 590)
			((and cs-3231 cs-382 cs-48) 590)
			((and cs-3234 cs-382 cs-48) 590)
			((and cs-3225 cs-387 cs-48) 590)
			((and cs-3228 cs-387 cs-48) 590)
			((and cs-3231 cs-387 cs-48) 590)
			((and cs-3234 cs-387 cs-48) 590)
			((and cs-3225 cs-392 cs-48) 590)
			((and cs-3228 cs-392 cs-48) 590)
			((and cs-3231 cs-392 cs-48) 590)
			((and cs-3234 cs-392 cs-48) 590)
			((and cs-3225 cs-457) 589)
			((and cs-3228 cs-457) 589)
			((and cs-3231 cs-457) 589)
			((and cs-3234 cs-457) 589)
			((and cs-3225 cs-462) 585)
			((and cs-3228 cs-462) 585)
			((and cs-3231 cs-462) 585)
			((and cs-3234 cs-462) 585)
			((and cs-3225 cs-467) 585)
			((and cs-3228 cs-467) 585)
			((and cs-3231 cs-467) 585)
			((and cs-3234 cs-467) 585)
			((and cs-3225 cs-44 cs-472) 583)
			((and cs-3228 cs-44 cs-472) 583)
			((and cs-3231 cs-44 cs-472) 583)
			((and cs-3234 cs-44 cs-472) 583)
			((and (eqv? client-zone 44) cs-3326) 582)
			((and cs-372 cs-3326) 582)
			((and cs-377 cs-3326) 582)
			((and cs-382 cs-3326) 582)
			((and (eqv? client-zone 40) cs-3326) 582)
			((and (eqv? client-zone 39) cs-3326) 582)
			((and cs-387 cs-3326) 582)
			((and cs-392 cs-3326) 582)
			((and cs-3225 cs-44 cs-477) 579)
			((and cs-3228 cs-44 cs-477) 579)
			((and cs-3231 cs-44 cs-477) 579)
			((and cs-3234 cs-44 cs-477) 579)
			((and cs-3225 cs-44 cs-482) 573)
			((and cs-3228 cs-44 cs-482) 573)
			((and cs-3231 cs-44 cs-482) 573)
			((and cs-3234 cs-44 cs-482) 573)
			((eqv? signature-id 202427) 380)
			((eqv? signature-id 206881) 379)
			((eqv? signature-id 200021) 378)
			((or (and cs-3080 (eqv? server-port 5060))
				 cs-4223)
			 292)
			((or (and cs-44 (eqv? server-port 5060)) cs-4223)
			 292)
			((or (and cs-3080 (eqv? server-port 2543))
				 cs-4223)
			 292)
			((or (and cs-44 (eqv? server-port 2543)) cs-4223)
			 292)
			((or (and cs-44 (eqv? server-port 80))
				 (eqv? signature-id 200080))
			 85)
			((or (and cs-3080 (eqv? server-port 53))
				 (eqv? signature-id 200053))
			 75)
			((or (and cs-44 (eqv? server-port 53))
				 (eqv? signature-id 200053))
			 75)
			(else #f)))))

(compile program)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#13088: stack overflow while compiling
  2012-12-05 16:31 bug#13088: stack overflow while compiling rixed
@ 2012-12-06 16:01 ` Stefan Israelsson Tampe
  2012-12-08 21:44   ` Stefan Israelsson Tampe
  0 siblings, 1 reply; 10+ messages in thread
From: Stefan Israelsson Tampe @ 2012-12-06 16:01 UTC (permalink / raw)
  To: rixed; +Cc: 13088

[-- Attachment #1: Type: text/plain, Size: 1559 bytes --]

Some findings!

1. The problems probably originates in the translation to tree-il.
2. Using something like
(define-syntax my-cond
   (syntax-rule ()
      ((_ (p x ...)    )  (if p (begin x ...)))
      ((_ (p x ...) . l)  (if p (begin x ...) (my-cond . l))))

Makes the compilation to progress further but fails at a later with,
scheme@(guile-user)> (compile program #:to 'value)
language/assembly/compile-bytecode.scm:150:39: In procedure #<procedure
2be2a20 at language/assembly/compile-bytecode.scm:150:27 (x)>:
language/assembly/compile-bytecode.scm:150:39: In procedure
bytevector-u8-set!: Value out of range: 2070

I quick look at the cond clause in boot.scm does not show any evidence that
it will blow the stack. In my view the
suspect is any code in psyntax.scm that does a tree walk of the finished
code the cond clause is a really deep tree!
because that cond clause produces a already expanded large codeblock that
psyntax has to chew on while  the my-cond
clause above produces the tree-il incrementally in smaller steps.

/Stefan


On Wed, Dec 5, 2012 at 5:31 PM, <rixed@happyleptic.org> wrote:

> This program tries to compile a long cond expression and fails quickly with
> a stack overflow.
>
> Of course this procedure was generated and a user is unlikely to write
> such a
> long cond, but considering the simplicity of the expression I'm surprised
> that
> the stack is so solicited.
>
> Note that I tested with guile 2.0.6 and not the fresh new 2.0.7 but I
> haven't
> noticed anything in the changelog regarding memory consumption.
>
>

[-- Attachment #2: Type: text/html, Size: 1960 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#13088: stack overflow while compiling
  2012-12-06 16:01 ` Stefan Israelsson Tampe
@ 2012-12-08 21:44   ` Stefan Israelsson Tampe
  2012-12-10 12:16     ` rixed
  2013-03-07 13:26     ` Andy Wingo
  0 siblings, 2 replies; 10+ messages in thread
From: Stefan Israelsson Tampe @ 2012-12-08 21:44 UTC (permalink / raw)
  To: Chapi Chapo; +Cc: 13088

[-- Attachment #1: Type: text/plain, Size: 2645 bytes --]

Some further findings,

The whole macro-expansion to tree-il in psyntax is not done in a tail call
manner which limits the sizes
of code tree's that we can compile. Although it would be interesting to
know how to code the
psyntax expand algorithm in such a way that we don't risk blowing the
stack, I think we
will be better served by waiting for better stack algorithm that implement
growing stacks.

For the second bug above, it's not a bug, it's my-cond syntax not being
recognized and it tries
to tail-call 2000+ argument function which is not supported in guile :-)

In view of this I suggest that we close this bug or perhaps add a feature
request for growing stacks.
An alternate feature request is to have some way to tell guile the size of
the stack at start up.

For now anyone that need to compile large functions the only option, I
believe, is to change the stack size in the code
and recompile.

WDYT
/Stefan

On Thu, Dec 6, 2012 at 5:01 PM, Stefan Israelsson Tampe <
stefan.itampe@gmail.com> wrote:

> Some findings!
>
> 1. The problems probably originates in the translation to tree-il.
> 2. Using something like
> (define-syntax my-cond
>    (syntax-rule ()
>       ((_ (p x ...)    )  (if p (begin x ...)))
>       ((_ (p x ...) . l)  (if p (begin x ...) (my-cond . l))))
>
> Makes the compilation to progress further but fails at a later with,
> scheme@(guile-user)> (compile program #:to 'value)
> language/assembly/compile-bytecode.scm:150:39: In procedure #<procedure
> 2be2a20 at language/assembly/compile-bytecode.scm:150:27 (x)>:
> language/assembly/compile-bytecode.scm:150:39: In procedure
> bytevector-u8-set!: Value out of range: 2070
>
> I quick look at the cond clause in boot.scm does not show any evidence
> that it will blow the stack. In my view the
> suspect is any code in psyntax.scm that does a tree walk of the finished
> code the cond clause is a really deep tree!
> because that cond clause produces a already expanded large codeblock that
> psyntax has to chew on while  the my-cond
> clause above produces the tree-il incrementally in smaller steps.
>
> /Stefan
>
>
>
> On Wed, Dec 5, 2012 at 5:31 PM, <rixed@happyleptic.org> wrote:
>
>> This program tries to compile a long cond expression and fails quickly
>> with
>> a stack overflow.
>>
>> Of course this procedure was generated and a user is unlikely to write
>> such a
>> long cond, but considering the simplicity of the expression I'm surprised
>> that
>> the stack is so solicited.
>>
>> Note that I tested with guile 2.0.6 and not the fresh new 2.0.7 but I
>> haven't
>> noticed anything in the changelog regarding memory consumption.
>>
>>
>

[-- Attachment #2: Type: text/html, Size: 3417 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#13088: stack overflow while compiling
  2012-12-08 21:44   ` Stefan Israelsson Tampe
@ 2012-12-10 12:16     ` rixed
  2012-12-11 22:29       ` Stefan Israelsson Tampe
  2013-03-07 13:26     ` Andy Wingo
  1 sibling, 1 reply; 10+ messages in thread
From: rixed @ 2012-12-10 12:16 UTC (permalink / raw)
  To: Stefan Israelsson Tampe; +Cc: 13088

-[ Sat, Dec 08, 2012 at 10:44:15PM +0100, Stefan Israelsson Tampe ]----
> The whole macro-expansion to tree-il in psyntax is not done in a tail call
> manner which limits the sizes
> of code tree's that we can compile. Although it would be interesting to
> know how to code the
> psyntax expand algorithm in such a way that we don't risk blowing the
> stack, I think we
> will be better served by waiting for better stack algorithm that implement
> growing stacks.

If it was not obvious already I must confess I'm ignorant about the internals
of guile (and of any other scheme compiler), so what I will say is probably
irrelevant. but I changed the cond into the equivalent if forms, which
I believe are not macros, but the result is the same (stack overflow).

> An alternate feature request is to have some way to tell guile the size of
> the stack at start up.

If though that was what '(debug-set! stack x)' was for, but this does not
seams to change anything. I also tried changing stack limits with ulimit
to no avail.

> For now anyone that need to compile large functions the only option, I
> believe, is to change the stack size in the code
> and recompile.

Any hint on how to do that specifically for guile, beyond the above
ulimit/setrlimit?






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#13088: stack overflow while compiling
  2012-12-10 12:16     ` rixed
@ 2012-12-11 22:29       ` Stefan Israelsson Tampe
  2012-12-12  8:33         ` rixed
  0 siblings, 1 reply; 10+ messages in thread
From: Stefan Israelsson Tampe @ 2012-12-11 22:29 UTC (permalink / raw)
  To: Chapi Chapo; +Cc: 13088

[-- Attachment #1: Type: text/plain, Size: 2199 bytes --]

Hi,

I did some effort into getting this working. but first you could try to use
an
or-map to get what you want in stead if compiling everything into code. but
it's probably
faster what you are doing.

Anyway in vm.c I changed the
#define VM_DEFAULT_STACK_SIZE (64 * 1024)

to
#define VM_DEFAULT_STACK_SIZE (64 * 1024 * 64)

and recompiled!

Then I can compile to tree-il. Compiling all the way does not work well,
But if you enter
scheme@(guile-user)> (compile program #:to 'value #:opts '(#:partial-eval?
#f #:cse? #f))  ;;NO OPTIMIZATION PASSES

It will compile to.

$7 = #<procedure 3708400 (proto server-port client-zone server-zone
signature-id)>


In all this emphasizes what I said in earlier and I would still ask for a
sane way to change the stack size for guile
and document it well.

Cheers!
/Stefan




On Mon, Dec 10, 2012 at 1:16 PM, <rixed@happyleptic.org> wrote:

> -[ Sat, Dec 08, 2012 at 10:44:15PM +0100, Stefan Israelsson Tampe ]----
> > The whole macro-expansion to tree-il in psyntax is not done in a tail
> call
> > manner which limits the sizes
> > of code tree's that we can compile. Although it would be interesting to
> > know how to code the
> > psyntax expand algorithm in such a way that we don't risk blowing the
> > stack, I think we
> > will be better served by waiting for better stack algorithm that
> implement
> > growing stacks.
>
> If it was not obvious already I must confess I'm ignorant about the
> internals
> of guile (and of any other scheme compiler), so what I will say is probably
> irrelevant. but I changed the cond into the equivalent if forms, which
> I believe are not macros, but the result is the same (stack overflow).
>
> > An alternate feature request is to have some way to tell guile the size
> of
> > the stack at start up.
>
> If though that was what '(debug-set! stack x)' was for, but this does not
> seams to change anything. I also tried changing stack limits with ulimit
> to no avail.
>
> > For now anyone that need to compile large functions the only option, I
> > believe, is to change the stack size in the code
> > and recompile.
>
> Any hint on how to do that specifically for guile, beyond the above
> ulimit/setrlimit?
>
>

[-- Attachment #2: Type: text/html, Size: 3169 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#13088: stack overflow while compiling
  2012-12-11 22:29       ` Stefan Israelsson Tampe
@ 2012-12-12  8:33         ` rixed
  2012-12-12 17:13           ` Stefan Israelsson Tampe
  0 siblings, 1 reply; 10+ messages in thread
From: rixed @ 2012-12-12  8:33 UTC (permalink / raw)
  To: Stefan Israelsson Tampe; +Cc: 13088

-[ Tue, Dec 11, 2012 at 11:29:31PM +0100, Stefan Israelsson Tampe ]----
> Anyway in vm.c I changed the
> #define VM_DEFAULT_STACK_SIZE (64 * 1024)
> 
> to
> #define VM_DEFAULT_STACK_SIZE (64 * 1024 * 64)
> 
> and recompiled!

Oh, I hadn't realized you were speaking about the VM's stack. It all makes
sense now.
Any inconvenient to set this stack even bigger ? How many such stacks do we
have in a running environment ? One per thread ?

> Then I can compile to tree-il. Compiling all the way does not work well,
> But if you enter
> scheme@(guile-user)> (compile program #:to 'value #:opts '(#:partial-eval?
> #f #:cse? #f))  ;;NO OPTIMIZATION PASSES
> 
> It will compile to.
> 
> $7 = #<procedure 3708400 (proto server-port client-zone server-zone
> signature-id)>

Yes, I did this and as a result the compiled function was... 20% faster !?
(note that my bench exclude the compilation time, and uses get-internal-run-time
as a clock source).

Thank you very much for all these advices.
As usual, support from free software community is much better than it is from
any business I've seen :-)






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#13088: stack overflow while compiling
  2012-12-12  8:33         ` rixed
@ 2012-12-12 17:13           ` Stefan Israelsson Tampe
  2012-12-14 12:46             ` rixed
  2013-03-07 13:27             ` Andy Wingo
  0 siblings, 2 replies; 10+ messages in thread
From: Stefan Israelsson Tampe @ 2012-12-12 17:13 UTC (permalink / raw)
  To: Chapi Chapo; +Cc: 13088


[-- Attachment #1.1: Type: text/plain, Size: 1750 bytes --]

Hi,

I added a patch to suggest a new environment variable.

   GUILE_STACK_SIZE_NSCM

If this is defined and setted to a reasonable number then this will be the
number
of SCM (8 byte on a 64bit arch or 4 on a 32 bit arch) to allocate to the VM
stack.

The naming might not be the best, we might want to name it VM_STACK in
stead of stack.

anyway here is a patch. I tested it to the example in the beginning of this
thread and it seams
to work just fine.

The intention is for this to be enough to close the bug.

/Stefan





On Wed, Dec 12, 2012 at 9:33 AM, <rixed@happyleptic.org> wrote:

> -[ Tue, Dec 11, 2012 at 11:29:31PM +0100, Stefan Israelsson Tampe ]----
> > Anyway in vm.c I changed the
> > #define VM_DEFAULT_STACK_SIZE (64 * 1024)
> >
> > to
> > #define VM_DEFAULT_STACK_SIZE (64 * 1024 * 64)
> >
> > and recompiled!
>
> Oh, I hadn't realized you were speaking about the VM's stack. It all makes
> sense now.
> Any inconvenient to set this stack even bigger ? How many such stacks do we
> have in a running environment ? One per thread ?
>
> > Then I can compile to tree-il. Compiling all the way does not work well,
> > But if you enter
> > scheme@(guile-user)> (compile program #:to 'value #:opts
> '(#:partial-eval?
> > #f #:cse? #f))  ;;NO OPTIMIZATION PASSES
> >
> > It will compile to.
> >
> > $7 = #<procedure 3708400 (proto server-port client-zone server-zone
> > signature-id)>
>
> Yes, I did this and as a result the compiled function was... 20% faster !?
> (note that my bench exclude the compilation time, and uses
> get-internal-run-time
> as a clock source).
>
> Thank you very much for all these advices.
> As usual, support from free software community is much better than it is
> from
> any business I've seen :-)
>
>

[-- Attachment #1.2: Type: text/html, Size: 2485 bytes --]

[-- Attachment #2: stack-size.patch --]
[-- Type: application/octet-stream, Size: 1228 bytes --]

From 1b4a49db86fa6ebf6943613fe6c1ac9728f72d30 Mon Sep 17 00:00:00 2001
From: Stefan Israelsson Tampe <stefan.itampe@gmail.com>
Date: Wed, 12 Dec 2012 17:37:44 +0100
Subject: [PATCH] vm: added stack size environment variable
 GUILE_STACK_SIZE_NSCM * libguile/vm.h in function make_vm  
 added code to use environment variable for stack size if
 defined

---
 libguile/vm.c |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/libguile/vm.c b/libguile/vm.c
index 5dec106..adde00d 100644
--- a/libguile/vm.c
+++ b/libguile/vm.c
@@ -670,7 +670,18 @@ make_vm (void)
 
   vp = scm_gc_malloc (sizeof (struct scm_vm), "vm");
 
-  vp->stack_size  = VM_DEFAULT_STACK_SIZE;
+  size_t ssz = VM_DEFAULT_STACK_SIZE;
+  SCM env_stack_size = scm_getenv( scm_from_locale_string ("GUILE_STACK_SIZE_NSCM"));
+  
+  if (scm_is_true (env_stack_size))
+    {
+      env_stack_size = scm_string_to_number (env_stack_size, scm_from_int (10));
+      if(scm_is_true (env_stack_size) 
+         && scm_is_unsigned_integer (env_stack_size, 1000, 2000000000))
+        ssz = scm_to_uint32 (env_stack_size);
+    }
+
+  vp->stack_size  = ssz;
 
 #ifdef VM_ENABLE_PRECISE_STACK_GC_SCAN
   vp->stack_base = (SCM *)
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* bug#13088: stack overflow while compiling
  2012-12-12 17:13           ` Stefan Israelsson Tampe
@ 2012-12-14 12:46             ` rixed
  2013-03-07 13:27             ` Andy Wingo
  1 sibling, 0 replies; 10+ messages in thread
From: rixed @ 2012-12-14 12:46 UTC (permalink / raw)
  To: Stefan Israelsson Tampe; +Cc: 13088

> I added a patch to suggest a new environment variable.

I applied your patch locally and am satisfied so far.
I let you know is I run into troubles.






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#13088: stack overflow while compiling
  2012-12-08 21:44   ` Stefan Israelsson Tampe
  2012-12-10 12:16     ` rixed
@ 2013-03-07 13:26     ` Andy Wingo
  1 sibling, 0 replies; 10+ messages in thread
From: Andy Wingo @ 2013-03-07 13:26 UTC (permalink / raw)
  To: Stefan Israelsson Tampe; +Cc: Chapi Chapo, 13088

On Sat 08 Dec 2012 22:44, Stefan Israelsson Tampe <stefan.itampe@gmail.com> writes:

> tail-call 2000+ argument function which is not supported in guile :-)

This should be supported.  Just fixed this in stable-2.0.

> I suggest that we close this bug or perhaps add a feature request for
> growing stacks.
>
> An alternate feature request is to have some way to tell guile the size
> of the stack at start up.

In this case I agree, there is no bug in the expander or in the
compiler.  We should be able to grow stacks, but that is tricky with
stable-2.0.  Ideally we would be able to link different stack segments
together with overflow/underflow handlers, as in the Dybvig paper, but
that would require some experimentation that would best be done on
master.

I pushed a patch based on yours to add a GUILE_STACK_SIZE environment
variable.  I hate environment variables but hopefully we can remove it
in 2.2.

Thanks for looking into this!

Andy
-- 
http://wingolog.org/





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#13088: stack overflow while compiling
  2012-12-12 17:13           ` Stefan Israelsson Tampe
  2012-12-14 12:46             ` rixed
@ 2013-03-07 13:27             ` Andy Wingo
  1 sibling, 0 replies; 10+ messages in thread
From: Andy Wingo @ 2013-03-07 13:27 UTC (permalink / raw)
  To: 13088-done

Marking as done.
-- 
http://wingolog.org/





^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2013-03-07 13:27 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-05 16:31 bug#13088: stack overflow while compiling rixed
2012-12-06 16:01 ` Stefan Israelsson Tampe
2012-12-08 21:44   ` Stefan Israelsson Tampe
2012-12-10 12:16     ` rixed
2012-12-11 22:29       ` Stefan Israelsson Tampe
2012-12-12  8:33         ` rixed
2012-12-12 17:13           ` Stefan Israelsson Tampe
2012-12-14 12:46             ` rixed
2013-03-07 13:27             ` Andy Wingo
2013-03-07 13:26     ` Andy Wingo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).