1/-- This set of tests is run only with the 8-bit library. They do not require
2    UTF-8 or Unicode property support. The file starts with all the tests of
3    the POSIX interface, because that is supported only with the 8-bit library.
4    --/
5
6< forbid 8W
7
8/abc/P
9    abc
10 0: abc
11    *** Failers
12No match: POSIX code 17: match failed
13
14/^abc|def/P
15    abcdef
16 0: abc
17    abcdef\B
18 0: def
19
20/.*((abc)$|(def))/P
21    defabc
22 0: defabc
23 1: abc
24 2: abc
25    \Zdefabc
26 0: def
27 1: def
28 3: def
29
30/the quick brown fox/P
31    the quick brown fox
32 0: the quick brown fox
33    *** Failers
34No match: POSIX code 17: match failed
35    The Quick Brown Fox
36No match: POSIX code 17: match failed
37
38/the quick brown fox/Pi
39    the quick brown fox
40 0: the quick brown fox
41    The Quick Brown Fox
42 0: The Quick Brown Fox
43
44/abc.def/P
45    *** Failers
46No match: POSIX code 17: match failed
47    abc\ndef
48No match: POSIX code 17: match failed
49
50/abc$/P
51    abc
52 0: abc
53    abc\n
54 0: abc
55
56/(abc)\2/P
57Failed: POSIX code 15: bad back reference at offset 7
58
59/(abc\1)/P
60    abc
61No match: POSIX code 17: match failed
62
63/a*(b+)(z)(z)/P
64    aaaabbbbzzzz
65 0: aaaabbbbzz
66 1: bbbb
67 2: z
68 3: z
69    aaaabbbbzzzz\O0
70    aaaabbbbzzzz\O1
71 0: aaaabbbbzz
72    aaaabbbbzzzz\O2
73 0: aaaabbbbzz
74 1: bbbb
75    aaaabbbbzzzz\O3
76 0: aaaabbbbzz
77 1: bbbb
78 2: z
79    aaaabbbbzzzz\O4
80 0: aaaabbbbzz
81 1: bbbb
82 2: z
83 3: z
84    aaaabbbbzzzz\O5
85 0: aaaabbbbzz
86 1: bbbb
87 2: z
88 3: z
89
90/ab.cd/P
91    ab-cd
92 0: ab-cd
93    ab=cd
94 0: ab=cd
95    ** Failers
96No match: POSIX code 17: match failed
97    ab\ncd
98No match: POSIX code 17: match failed
99
100/ab.cd/Ps
101    ab-cd
102 0: ab-cd
103    ab=cd
104 0: ab=cd
105    ab\ncd
106 0: ab\x0acd
107
108/a(b)c/PN
109    abc
110Matched with REG_NOSUB
111
112/a(?P<name>b)c/PN
113    abc
114Matched with REG_NOSUB
115
116/a?|b?/P
117    abc
118 0: a
119    ** Failers
120 0:
121    ddd\N
122No match: POSIX code 17: match failed
123
124/\w+A/P
125   CDAAAAB
126 0: CDAAAA
127
128/\w+A/PU
129   CDAAAAB
130 0: CDA
131
132/\Biss\B/I+P
133    Mississippi
134 0: iss
135 0+ issippi
136
137/abc/\P
138Failed: POSIX code 9: bad escape sequence at offset 4
139
140/-- End of POSIX tests --/
141
142/a\Cb/
143    aXb
144 0: aXb
145    a\nb
146 0: a\x0ab
147    ** Failers (too big char)
148No match
149    A\x{123}B
150** Character \x{123} is greater than 255 and UTF-8 mode is not enabled.
151** Truncation will probably give the wrong result.
152No match
153    A\o{443}B
154** Character \x{123} is greater than 255 and UTF-8 mode is not enabled.
155** Truncation will probably give the wrong result.
156No match
157
158/\x{100}/I
159Failed: character value in \x{} or \o{} is too large at offset 6
160
161/\o{400}/I
162Failed: character value in \x{} or \o{} is too large at offset 6
163
164/  (?: [\040\t] |  \(
165(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
166\)  )*                          # optional leading comment
167(?:    (?:
168[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
169(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
170|
171" (?:                      # opening quote...
172[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
173|                     #    or
174\\ [^\x80-\xff]           #   Escaped something (something != CR)
175)* "  # closing quote
176)                    # initial word
177(?:  (?: [\040\t] |  \(
178(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
179\)  )*  \.  (?: [\040\t] |  \(
180(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
181\)  )*   (?:
182[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
183(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
184|
185" (?:                      # opening quote...
186[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
187|                     #    or
188\\ [^\x80-\xff]           #   Escaped something (something != CR)
189)* "  # closing quote
190)  )* # further okay, if led by a period
191(?: [\040\t] |  \(
192(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
193\)  )*  @  (?: [\040\t] |  \(
194(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
195\)  )*    (?:
196[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
197(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
198|   \[                         # [
199(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
200\]                        #           ]
201)                           # initial subdomain
202(?:                                  #
203(?: [\040\t] |  \(
204(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
205\)  )*  \.                        # if led by a period...
206(?: [\040\t] |  \(
207(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
208\)  )*   (?:
209[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
210(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
211|   \[                         # [
212(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
213\]                        #           ]
214)                     #   ...further okay
215)*
216# address
217|                     #  or
218(?:
219[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
220(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
221|
222" (?:                      # opening quote...
223[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
224|                     #    or
225\\ [^\x80-\xff]           #   Escaped something (something != CR)
226)* "  # closing quote
227)             # one word, optionally followed by....
228(?:
229[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
230\(
231(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
232\)       |  # comments, or...
233
234" (?:                      # opening quote...
235[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
236|                     #    or
237\\ [^\x80-\xff]           #   Escaped something (something != CR)
238)* "  # closing quote
239# quoted strings
240)*
241<  (?: [\040\t] |  \(
242(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
243\)  )*                     # leading <
244(?:  @  (?: [\040\t] |  \(
245(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
246\)  )*    (?:
247[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
248(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
249|   \[                         # [
250(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
251\]                        #           ]
252)                           # initial subdomain
253(?:                                  #
254(?: [\040\t] |  \(
255(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
256\)  )*  \.                        # if led by a period...
257(?: [\040\t] |  \(
258(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
259\)  )*   (?:
260[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
261(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
262|   \[                         # [
263(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
264\]                        #           ]
265)                     #   ...further okay
266)*
267
268(?:  (?: [\040\t] |  \(
269(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
270\)  )*  ,  (?: [\040\t] |  \(
271(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
272\)  )*  @  (?: [\040\t] |  \(
273(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
274\)  )*    (?:
275[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
276(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
277|   \[                         # [
278(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
279\]                        #           ]
280)                           # initial subdomain
281(?:                                  #
282(?: [\040\t] |  \(
283(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
284\)  )*  \.                        # if led by a period...
285(?: [\040\t] |  \(
286(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
287\)  )*   (?:
288[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
289(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
290|   \[                         # [
291(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
292\]                        #           ]
293)                     #   ...further okay
294)*
295)* # further okay, if led by comma
296:                                # closing colon
297(?: [\040\t] |  \(
298(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
299\)  )*  )? #       optional route
300(?:
301[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
302(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
303|
304" (?:                      # opening quote...
305[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
306|                     #    or
307\\ [^\x80-\xff]           #   Escaped something (something != CR)
308)* "  # closing quote
309)                    # initial word
310(?:  (?: [\040\t] |  \(
311(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
312\)  )*  \.  (?: [\040\t] |  \(
313(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
314\)  )*   (?:
315[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
316(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
317|
318" (?:                      # opening quote...
319[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
320|                     #    or
321\\ [^\x80-\xff]           #   Escaped something (something != CR)
322)* "  # closing quote
323)  )* # further okay, if led by a period
324(?: [\040\t] |  \(
325(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
326\)  )*  @  (?: [\040\t] |  \(
327(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
328\)  )*    (?:
329[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
330(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
331|   \[                         # [
332(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
333\]                        #           ]
334)                           # initial subdomain
335(?:                                  #
336(?: [\040\t] |  \(
337(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
338\)  )*  \.                        # if led by a period...
339(?: [\040\t] |  \(
340(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
341\)  )*   (?:
342[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
343(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
344|   \[                         # [
345(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
346\]                        #           ]
347)                     #   ...further okay
348)*
349#       address spec
350(?: [\040\t] |  \(
351(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
352\)  )*  > #                  trailing >
353# name and address
354)  (?: [\040\t] |  \(
355(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
356\)  )*                       # optional trailing comment
357/xSI
358Capturing subpattern count = 0
359Contains explicit CR or LF match
360Options: extended
361No first char
362No need char
363Subject length lower bound = 3
364Starting chars: \x09 \x20 ! " # $ % & ' ( * + - / 0 1 2 3 4 5 6 7 8
365  9 = ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ^ _ ` a b c d e
366  f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f
367
368/-- Although this saved pattern was compiled with link-size=2, it does no harm
369to run this test with other link sizes because it is going to generated a
370"compiled in wrong mode" error as soon as it is loaded, so the link size does
371not matter. --/
372
373<!testsaved16
374Compiled pattern loaded from testsaved16
375No study data
376Error -28 from pcre_fullinfo(0)
377Running in 8-bit mode but pattern was compiled in 16-bit mode
378
379<!testsaved32
380Compiled pattern loaded from testsaved32
381No study data
382Error -28 from pcre_fullinfo(0)
383Running in 8-bit mode but pattern was compiled in 32-bit mode
384
385/\h/SI
386Capturing subpattern count = 0
387No options
388No first char
389No need char
390Subject length lower bound = 1
391Starting chars: \x09 \x20 \xa0
392
393/\H/SI
394Capturing subpattern count = 0
395No options
396No first char
397No need char
398Subject length lower bound = 1
399No starting char list
400
401/\v/SI
402Capturing subpattern count = 0
403No options
404No first char
405No need char
406Subject length lower bound = 1
407Starting chars: \x0a \x0b \x0c \x0d \x85
408
409/\V/SI
410Capturing subpattern count = 0
411No options
412No first char
413No need char
414Subject length lower bound = 1
415No starting char list
416
417/\R/SI
418Capturing subpattern count = 0
419No options
420No first char
421No need char
422Subject length lower bound = 1
423Starting chars: \x0a \x0b \x0c \x0d \x85
424
425/[\h]/BZ
426------------------------------------------------------------------
427        Bra
428        [\x09 \xa0]
429        Ket
430        End
431------------------------------------------------------------------
432    >\x09<
433 0: \x09
434
435/[\h]+/BZ
436------------------------------------------------------------------
437        Bra
438        [\x09 \xa0]++
439        Ket
440        End
441------------------------------------------------------------------
442    >\x09\x20\xa0<
443 0: \x09 \xa0
444
445/[\v]/BZ
446------------------------------------------------------------------
447        Bra
448        [\x0a-\x0d\x85]
449        Ket
450        End
451------------------------------------------------------------------
452
453/[\H]/BZ
454------------------------------------------------------------------
455        Bra
456        [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff]
457        Ket
458        End
459------------------------------------------------------------------
460
461/[^\h]/BZ
462------------------------------------------------------------------
463        Bra
464        [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] (neg)
465        Ket
466        End
467------------------------------------------------------------------
468
469/[\V]/BZ
470------------------------------------------------------------------
471        Bra
472        [\x00-\x09\x0e-\x84\x86-\xff]
473        Ket
474        End
475------------------------------------------------------------------
476
477/[\x0a\V]/BZ
478------------------------------------------------------------------
479        Bra
480        [\x00-\x0a\x0e-\x84\x86-\xff]
481        Ket
482        End
483------------------------------------------------------------------
484
485/\777/I
486Failed: octal value is greater than \377 in 8-bit non-UTF-8 mode at offset 3
487
488/(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF)XX/K
489Failed: name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN) at offset 259
490
491/(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE)XX/K
492    XX
493 0: XX
494MK: 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE
495
496/\u0100/<JS>
497Failed: character value in \u.... sequence is too large at offset 5
498
499/[\u0100-\u0200]/<JS>
500Failed: character value in \u.... sequence is too large at offset 6
501
502/[^\x00-a]{12,}[^b-\xff]*/BZ
503------------------------------------------------------------------
504        Bra
505        [b-\xff] (neg){12,}+
506        [\x00-a] (neg)*+
507        Ket
508        End
509------------------------------------------------------------------
510
511/[^\s]*\s* [^\W]+\W+ [^\d]*?\d0 [^\d\w]{4,6}?\w*A/BZ
512------------------------------------------------------------------
513        Bra
514        [\x00-\x08\x0e-\x1f!-\xff] (neg)*+
515        \s*
516
517        [0-9A-Z_a-z]++
518        \W+
519
520        [\x00-/:-\xff] (neg)*+
521        \d
522        0
523        [\x00-/:-@[-^`{-\xff] (neg){4,6}+
524        \w*
525        A
526        Ket
527        End
528------------------------------------------------------------------
529
530/(?'ABC'[bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar](*THEN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
531
532/-- End of testinput14 --/
533