File Coverage

blib/lib/Mail/IMAPClient/BodyStructure/Parse.pm
Criterion Covered Total %
statement 5822 6741 86.3
branch 1619 3516 46.0
condition 429 975 44.0
subroutine 359 362 99.1
pod 0 1 0.0
total 8229 11595 70.9


line stmt bran cond sub pod time code
1             #
2             # This parser was generated with
3             # Parse::RecDescent version 1.967015
4             #
5              
6             package Mail::IMAPClient::BodyStructure::Parse;
7 1     1   1235 use Parse::RecDescent;
  1         45447  
  1         7  
8             { my $ERRORS;
9              
10              
11             package Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse;
12 1     1   82 use strict;
  1         2  
  1         26  
13 1     1   5 use vars qw($skip $AUTOLOAD );
  1         2  
  1         232  
14             @Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ISA = ();
15             $skip = '\\s*';
16              
17              
18             my $mibs = "Mail::IMAPClient::BodyStructure";
19             my $subpartCount = 0;
20             my $partCount = 0;
21              
22             sub take_optional_items($$@)
23 158     158   393 { my ($r, $items) = (shift, shift);
24 158         374 foreach (@_)
25 820         1532 { my $opt = $_ .'(?)';
26 820 50       1635 exists $items->{$opt} or next;
27             $r->{$_} = UNIVERSAL::isa($items->{$opt}, 'ARRAY')
28 820 50       2835 ? $items->{$opt}[0] : $items->{$opt};
29             }
30             }
31              
32             sub merge_hash($$)
33 54     54   94 { my $to = shift;
34 54 100       157 my $from = shift or return;
35 12         67 while( my($k,$v) = each %$from) { $to->{$k} = $v }
  72         252  
36             }
37             ;
38              
39              
40             {
41             local $SIG{__WARN__} = sub {0};
42             # PRETEND TO BE IN Parse::RecDescent NAMESPACE
43             *Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::AUTOLOAD = sub
44             {
45 1     1   8 no strict 'refs';
  1         2  
  1         102  
46              
47 0     0   0 ${"AUTOLOAD"} =~ s/^Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse/Parse::RecDescent/;
  0         0  
48 0         0 goto &{${"AUTOLOAD"}};
  0         0  
  0         0  
49             }
50             }
51              
52             push @Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ISA, 'Parse::RecDescent';
53             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
54             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES
55             {
56 144     144   280 my $thisparser = $_[0];
57 1     1   7 use vars q{$tracelevel};
  1         2  
  1         328  
58 144   50     322 local $tracelevel = ($tracelevel||0)+1;
59 144         201 $ERRORS = 0;
60 144         363 my $thisrule = $thisparser->{"rules"}{"ADDRESSES"};
61              
62 144 50       339 Parse::RecDescent::_trace(q{Trying rule: [ADDRESSES]},
63             Parse::RecDescent::_tracefirst($_[1]),
64             q{ADDRESSES},
65             $tracelevel)
66             if defined $::RD_TRACE;
67              
68 144         204 my $def_at = @{$thisparser->{deferred}};
  144         267  
69 144         223 my $err_at = @{$thisparser->{errors}};
  144         257  
70              
71 144         359 my $score;
72             my $score_return;
73 144         0 my $_tok;
74 144         230 my $return = undef;
75 144         188 my $_matched=0;
76 144         263 my $commit=0;
77 144         217 my @item = ();
78 144         226 my %item = ();
79 144         210 my $repeating = $_[2];
80 144         221 my $_noactions = $_[3];
81 144 50       264 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  144         196  
  144         281  
82 144         236 my $_itempos = $_[5];
83 144 50       301 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
84 144         334 my $text;
85             my $lastsep;
86 144         0 my $current_match;
87 144         334 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or RFCNONCOMPLY, or '('});
88 144         901 $expectation->at($_[1]);
89            
90 144         577 my $thisline;
91 144         427 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
92              
93            
94              
95 144   33     1092 while (!$_matched && !$commit)
96             {
97            
98 144 50       291 Parse::RecDescent::_trace(q{Trying production: [NIL]},
99             Parse::RecDescent::_tracefirst($_[1]),
100             q{ADDRESSES},
101             $tracelevel)
102             if defined $::RD_TRACE;
103 144         322 my $thisprod = $thisrule->{"prods"}[0];
104 144         255 $text = $_[1];
105 144         240 my $_savetext;
106 144         284 @item = (q{ADDRESSES});
107 144         307 %item = (__RULE__ => q{ADDRESSES});
108 144         205 my $repcount = 0;
109              
110              
111 144 50       347 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
112             Parse::RecDescent::_tracefirst($text),
113             q{ADDRESSES},
114             $tracelevel)
115             if defined $::RD_TRACE;
116 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         420  
  144         205  
117 144         326 $expectation->is(q{})->at($text);
118 144 100   144   1361 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  144         276  
119             {
120            
121 98 50       218 Parse::RecDescent::_trace(q{<>},
122             Parse::RecDescent::_tracefirst($text),
123             q{ADDRESSES},
124             $tracelevel)
125             if defined $::RD_TRACE;
126 98         354 $expectation->failed();
127 98         364 last;
128             }
129 46 50       181 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
130             . $_tok . q{]},
131              
132             Parse::RecDescent::_tracefirst($text),
133             q{ADDRESSES},
134             $tracelevel)
135             if defined $::RD_TRACE;
136 46         119 $item{q{NIL}} = $_tok;
137 46         91 push @item, $_tok;
138            
139             }
140              
141 46 50       102 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
142             Parse::RecDescent::_tracefirst($text),
143             q{ADDRESSES},
144             $tracelevel)
145             if defined $::RD_TRACE;
146              
147              
148              
149 46         88 $_matched = 1;
150 46         81 last;
151             }
152              
153             splice
154 144 100       469 @{$thisparser->{deferred}}, $def_at unless $_matched;
  98         231  
155            
156 144   66     534 while (!$_matched && !$commit)
157             {
158            
159 98 50       195 Parse::RecDescent::_trace(q{Trying production: [RFCNONCOMPLY]},
160             Parse::RecDescent::_tracefirst($_[1]),
161             q{ADDRESSES},
162             $tracelevel)
163             if defined $::RD_TRACE;
164 98         238 my $thisprod = $thisrule->{"prods"}[1];
165 98         191 $text = $_[1];
166 98         145 my $_savetext;
167 98         253 @item = (q{ADDRESSES});
168 98         253 %item = (__RULE__ => q{ADDRESSES});
169 98         162 my $repcount = 0;
170              
171              
172 98 50       224 Parse::RecDescent::_trace(q{Trying subrule: [RFCNONCOMPLY]},
173             Parse::RecDescent::_tracefirst($text),
174             q{ADDRESSES},
175             $tracelevel)
176             if defined $::RD_TRACE;
177 1     1   9 if (1) { no strict qw{refs};
  1         1  
  1         1202  
  98         167  
178 98         231 $expectation->is(q{})->at($text);
179 98 100   98   1019 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::RFCNONCOMPLY($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  98         180  
180             {
181            
182 94 50       194 Parse::RecDescent::_trace(q{<>},
183             Parse::RecDescent::_tracefirst($text),
184             q{ADDRESSES},
185             $tracelevel)
186             if defined $::RD_TRACE;
187 94         263 $expectation->failed();
188 94         347 last;
189             }
190 4 50       21 Parse::RecDescent::_trace(q{>>Matched subrule: [RFCNONCOMPLY]<< (return value: [}
191             . $_tok . q{]},
192              
193             Parse::RecDescent::_tracefirst($text),
194             q{ADDRESSES},
195             $tracelevel)
196             if defined $::RD_TRACE;
197 4         12 $item{q{RFCNONCOMPLY}} = $_tok;
198 4         10 push @item, $_tok;
199            
200             }
201              
202 4 50       13 Parse::RecDescent::_trace(q{>>Matched production: [RFCNONCOMPLY]<<},
203             Parse::RecDescent::_tracefirst($text),
204             q{ADDRESSES},
205             $tracelevel)
206             if defined $::RD_TRACE;
207              
208              
209              
210 4         8 $_matched = 1;
211 4         7 last;
212             }
213              
214             splice
215 144 100       440 @{$thisparser->{deferred}}, $def_at unless $_matched;
  94         190  
216            
217 144   66     457 while (!$_matched && !$commit)
218             {
219            
220 94 50       192 Parse::RecDescent::_trace(q{Trying production: ['(' addressstruct ')']},
221             Parse::RecDescent::_tracefirst($_[1]),
222             q{ADDRESSES},
223             $tracelevel)
224             if defined $::RD_TRACE;
225 94         206 my $thisprod = $thisrule->{"prods"}[2];
226 94         205 $text = $_[1];
227 94         143 my $_savetext;
228 94         228 @item = (q{ADDRESSES});
229 94         214 %item = (__RULE__ => q{ADDRESSES});
230 94         140 my $repcount = 0;
231              
232              
233 94 50       170 Parse::RecDescent::_trace(q{Trying terminal: ['(']},
234             Parse::RecDescent::_tracefirst($text),
235             q{ADDRESSES},
236             $tracelevel)
237             if defined $::RD_TRACE;
238 94         166 undef $lastsep;
239 94         212 $expectation->is(q{})->at($text);
240            
241              
242 94 50 33     1013 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and
  94 50 33     659  
  94   33     179  
  94         593  
243             substr($text,0,length($_tok)) eq $_tok and
244 94         223 do { substr($text,0,length($_tok)) = ""; 1; }
  94         252  
245             )
246             {
247 0 0       0 $text = $lastsep . $text if defined $lastsep;
248            
249 0         0 $expectation->failed();
250 0 0       0 Parse::RecDescent::_trace(q{<>},
251             Parse::RecDescent::_tracefirst($text))
252             if defined $::RD_TRACE;
253 0         0 last;
254             }
255 94 50       277 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
256             . $_tok . q{])},
257             Parse::RecDescent::_tracefirst($text))
258             if defined $::RD_TRACE;
259 94         227 push @item, $item{__STRING1__}=$_tok;
260            
261              
262 94 50       237 Parse::RecDescent::_trace(q{Trying repeated subrule: [addressstruct]},
263             Parse::RecDescent::_tracefirst($text),
264             q{ADDRESSES},
265             $tracelevel)
266             if defined $::RD_TRACE;
267 94         242 $expectation->is(q{addressstruct})->at($text);
268            
269 94 50   188   1096 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::addressstruct, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
  188         407  
270             {
271 0 0       0 Parse::RecDescent::_trace(q{<>},
272             Parse::RecDescent::_tracefirst($text),
273             q{ADDRESSES},
274             $tracelevel)
275             if defined $::RD_TRACE;
276 0         0 last;
277             }
278 94 50       1500 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [addressstruct]<< (}
279             . @$_tok . q{ times)},
280              
281             Parse::RecDescent::_tracefirst($text),
282             q{ADDRESSES},
283             $tracelevel)
284             if defined $::RD_TRACE;
285 94         239 $item{q{addressstruct(s)}} = $_tok;
286 94         196 push @item, $_tok;
287            
288              
289              
290 94 50       198 Parse::RecDescent::_trace(q{Trying terminal: [')']},
291             Parse::RecDescent::_tracefirst($text),
292             q{ADDRESSES},
293             $tracelevel)
294             if defined $::RD_TRACE;
295 94         154 undef $lastsep;
296 94         224 $expectation->is(q{')'})->at($text);
297            
298              
299 94 50 33     999 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and
  94 50 33     596  
  94   33     171  
  94         453  
300             substr($text,0,length($_tok)) eq $_tok and
301 94         181 do { substr($text,0,length($_tok)) = ""; 1; }
  94         256  
302             )
303             {
304 0 0       0 $text = $lastsep . $text if defined $lastsep;
305            
306 0         0 $expectation->failed();
307 0 0       0 Parse::RecDescent::_trace(q{<>},
308             Parse::RecDescent::_tracefirst($text))
309             if defined $::RD_TRACE;
310 0         0 last;
311             }
312 94 50       278 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
313             . $_tok . q{])},
314             Parse::RecDescent::_tracefirst($text))
315             if defined $::RD_TRACE;
316 94         230 push @item, $item{__STRING2__}=$_tok;
317            
318              
319 94 50       189 Parse::RecDescent::_trace(q{Trying action},
320             Parse::RecDescent::_tracefirst($text),
321             q{ADDRESSES},
322             $tracelevel)
323             if defined $::RD_TRACE;
324            
325              
326 94 50       193 $_tok = ($_noactions) ? 0 : do { $return = $item{'addressstruct(s)'} };
  94         199  
327 94 50       238 unless (defined $_tok)
328             {
329 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
330             if defined $::RD_TRACE;
331 0         0 last;
332             }
333 94 50       179 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
334             . $_tok . q{])},
335             Parse::RecDescent::_tracefirst($text))
336             if defined $::RD_TRACE;
337 94         150 push @item, $_tok;
338 94         185 $item{__ACTION1__}=$_tok;
339            
340              
341 94 50       167 Parse::RecDescent::_trace(q{>>Matched production: ['(' addressstruct ')']<<},
342             Parse::RecDescent::_tracefirst($text),
343             q{ADDRESSES},
344             $tracelevel)
345             if defined $::RD_TRACE;
346              
347              
348              
349 94         151 $_matched = 1;
350 94         181 last;
351             }
352              
353             splice
354 144 50       286 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
355            
356 144 50 33     346 unless ( $_matched || defined($score) )
357             {
358 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
359            
360              
361 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
362 0 0       0 Parse::RecDescent::_trace(q{<>},
363             Parse::RecDescent::_tracefirst($_[1]),
364             q{ADDRESSES},
365             $tracelevel)
366             if defined $::RD_TRACE;
367 0         0 return undef;
368             }
369 144 50 66     458 if (!defined($return) && defined($score))
370             {
371 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
372             q{ADDRESSES},
373             $tracelevel)
374             if defined $::RD_TRACE;
375 0         0 $return = $score_return;
376             }
377 144         213 splice @{$thisparser->{errors}}, $err_at;
  144         327  
378 144 100       341 $return = $item[$#item] unless defined $return;
379 144 50       279 if (defined $::RD_TRACE)
380             {
381 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
382             $return . q{])}, "",
383             q{ADDRESSES},
384             $tracelevel);
385 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
386             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
387             Parse::RecDescent::_tracefirst($text),
388             , q{ADDRESSES},
389             $tracelevel)
390             }
391 144         355 $_[1] = $text;
392 144         1015 return $return;
393             }
394              
395             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
396             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::BARESTRING
397             {
398 183     183   319 my $thisparser = $_[0];
399 1     1   9 use vars q{$tracelevel};
  1         3  
  1         1193  
400 183   50     444 local $tracelevel = ($tracelevel||0)+1;
401 183         263 $ERRORS = 0;
402 183         368 my $thisrule = $thisparser->{"rules"}{"BARESTRING"};
403              
404 183 50       439 Parse::RecDescent::_trace(q{Trying rule: [BARESTRING]},
405             Parse::RecDescent::_tracefirst($_[1]),
406             q{BARESTRING},
407             $tracelevel)
408             if defined $::RD_TRACE;
409              
410 183         247 my $def_at = @{$thisparser->{deferred}};
  183         333  
411 183         323 my $err_at = @{$thisparser->{errors}};
  183         304  
412              
413 183         436 my $score;
414             my $score_return;
415 183         0 my $_tok;
416 183         271 my $return = undef;
417 183         318 my $_matched=0;
418 183         255 my $commit=0;
419 183         301 my @item = ();
420 183         275 my %item = ();
421 183         267 my $repeating = $_[2];
422 183         273 my $_noactions = $_[3];
423 183 50       376 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  183         261  
  183         350  
424 183         342 my $_itempos = $_[5];
425 183 50       388 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
426 183         414 my $text;
427             my $lastsep;
428 183         0 my $current_match;
429 183         442 my $expectation = new Parse::RecDescent::Expectation(q{/^[)('"]/});
430 183         1230 $expectation->at($_[1]);
431            
432 183         1148 my $thisline;
433 183         636 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
434              
435            
436              
437 183   33     1449 while (!$_matched && !$commit)
438             {
439            
440 183 50       397 Parse::RecDescent::_trace(q{Trying production: [/^[)('"]/ /^(?!\\(|\\))(?:\\\\ |\\S)+/]},
441             Parse::RecDescent::_tracefirst($_[1]),
442             q{BARESTRING},
443             $tracelevel)
444             if defined $::RD_TRACE;
445 183         428 my $thisprod = $thisrule->{"prods"}[0];
446 183         357 $text = $_[1];
447 183         258 my $_savetext;
448 183         343 @item = (q{BARESTRING});
449 183         343 %item = (__RULE__ => q{BARESTRING});
450 183         266 my $repcount = 0;
451              
452              
453 183 50       324 Parse::RecDescent::_trace(q{Trying terminal: [/^[)('"]/]}, Parse::RecDescent::_tracefirst($text),
454             q{BARESTRING},
455             $tracelevel)
456             if defined $::RD_TRACE;
457 183         325 undef $lastsep;
458 183         412 $expectation->is(q{})->at($text);
459 183         1244 $_savetext = $text;
460              
461 183 100 33     1136 if ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^[)('"])/)
  183 50       1424  
462             {
463 183         405 $text = $_savetext;
464 183         617 $expectation->failed();
465 183 50       699 Parse::RecDescent::_trace(q{<>},
466             Parse::RecDescent::_tracefirst($text))
467             if defined $::RD_TRACE;
468              
469 183         428 last;
470             }
471 0         0 $current_match = substr($text, $-[0], $+[0] - $-[0]);
472 0         0 substr($text,0,length($current_match),q{});
473 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
474             . $current_match . q{])},
475             Parse::RecDescent::_tracefirst($text))
476             if defined $::RD_TRACE;
477 0         0 push @item, $item{__PATTERN1__}=$current_match;
478 0         0 $text = $_savetext;
479              
480 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/^(?!\\(|\\))(?:\\\\ |\\S)+/]}, Parse::RecDescent::_tracefirst($text),
481             q{BARESTRING},
482             $tracelevel)
483             if defined $::RD_TRACE;
484 0         0 undef $lastsep;
485 0         0 $expectation->is(q{/^(?!\\(|\\))(?:\\\\ |\\S)+/})->at($text);
486            
487              
488 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^(?!\(|\))(?:\\ |\S)+)/)
  0 0       0  
489             {
490 0 0       0 $text = $lastsep . $text if defined $lastsep;
491 0         0 $expectation->failed();
492 0 0       0 Parse::RecDescent::_trace(q{<>},
493             Parse::RecDescent::_tracefirst($text))
494             if defined $::RD_TRACE;
495              
496 0         0 last;
497             }
498 0         0 $current_match = substr($text, $-[0], $+[0] - $-[0]);
499 0         0 substr($text,0,length($current_match),q{});
500 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
501             . $current_match . q{])},
502             Parse::RecDescent::_tracefirst($text))
503             if defined $::RD_TRACE;
504 0         0 push @item, $item{__PATTERN2__}=$current_match;
505            
506              
507 0 0       0 Parse::RecDescent::_trace(q{Trying action},
508             Parse::RecDescent::_tracefirst($text),
509             q{BARESTRING},
510             $tracelevel)
511             if defined $::RD_TRACE;
512            
513              
514 0 0       0 $_tok = ($_noactions) ? 0 : do { $return = $item{__PATTERN1__} };
  0         0  
515 0 0       0 unless (defined $_tok)
516             {
517 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
518             if defined $::RD_TRACE;
519 0         0 last;
520             }
521 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
522             . $_tok . q{])},
523             Parse::RecDescent::_tracefirst($text))
524             if defined $::RD_TRACE;
525 0         0 push @item, $_tok;
526 0         0 $item{__ACTION1__}=$_tok;
527            
528              
529 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/^[)('"]/ /^(?!\\(|\\))(?:\\\\ |\\S)+/]<<},
530             Parse::RecDescent::_tracefirst($text),
531             q{BARESTRING},
532             $tracelevel)
533             if defined $::RD_TRACE;
534              
535              
536              
537 0         0 $_matched = 1;
538 0         0 last;
539             }
540              
541             splice
542 183 50       382 @{$thisparser->{deferred}}, $def_at unless $_matched;
  183         403  
543            
544 183 50 33     613 unless ( $_matched || defined($score) )
545             {
546 183         251 splice @{$thisparser->{deferred}}, $def_at;
  183         310  
547            
548              
549 183         358 $_[1] = $text; # NOT SURE THIS IS NEEDED
550 183 50       375 Parse::RecDescent::_trace(q{<>},
551             Parse::RecDescent::_tracefirst($_[1]),
552             q{BARESTRING},
553             $tracelevel)
554             if defined $::RD_TRACE;
555 183         901 return undef;
556             }
557 0 0 0     0 if (!defined($return) && defined($score))
558             {
559 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
560             q{BARESTRING},
561             $tracelevel)
562             if defined $::RD_TRACE;
563 0         0 $return = $score_return;
564             }
565 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
566 0 0       0 $return = $item[$#item] unless defined $return;
567 0 0       0 if (defined $::RD_TRACE)
568             {
569 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
570             $return . q{])}, "",
571             q{BARESTRING},
572             $tracelevel);
573 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
574             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
575             Parse::RecDescent::_tracefirst($text),
576             , q{BARESTRING},
577             $tracelevel)
578             }
579 0         0 $_[1] = $text;
580 0         0 return $return;
581             }
582              
583             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
584             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::DOUBLE_QUOTED_STRING
585             {
586 905     905   1847 my $thisparser = $_[0];
587 1     1   9 use vars q{$tracelevel};
  1         2  
  1         1283  
588 905   50     2057 local $tracelevel = ($tracelevel||0)+1;
589 905         1320 $ERRORS = 0;
590 905         1796 my $thisrule = $thisparser->{"rules"}{"DOUBLE_QUOTED_STRING"};
591              
592 905 50       1775 Parse::RecDescent::_trace(q{Trying rule: [DOUBLE_QUOTED_STRING]},
593             Parse::RecDescent::_tracefirst($_[1]),
594             q{DOUBLE_QUOTED_STRING},
595             $tracelevel)
596             if defined $::RD_TRACE;
597              
598 905         1322 my $def_at = @{$thisparser->{deferred}};
  905         1560  
599 905         1570 my $err_at = @{$thisparser->{errors}};
  905         1535  
600              
601 905         2548 my $score;
602             my $score_return;
603 905         0 my $_tok;
604 905         1403 my $return = undef;
605 905         1321 my $_matched=0;
606 905         1206 my $commit=0;
607 905         1507 my @item = ();
608 905         1510 my %item = ();
609 905         1407 my $repeating = $_[2];
610 905         1295 my $_noactions = $_[3];
611 905 50       1848 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  905         1326  
  905         1484  
612 905         1623 my $_itempos = $_[5];
613 905 50       1966 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
614 905         2121 my $text;
615             my $lastsep;
616 905         0 my $current_match;
617 905         1989 my $expectation = new Parse::RecDescent::Expectation(q{'"'});
618 905         6001 $expectation->at($_[1]);
619            
620 905         3689 my $thisline;
621 905         2703 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
622              
623            
624              
625 905   33     6445 while (!$_matched && !$commit)
626             {
627            
628 905 50       2015 Parse::RecDescent::_trace(q{Trying production: ['"' /(?:\\\\["\\\\]|[^"])*/ '"']},
629             Parse::RecDescent::_tracefirst($_[1]),
630             q{DOUBLE_QUOTED_STRING},
631             $tracelevel)
632             if defined $::RD_TRACE;
633 905         1707 my $thisprod = $thisrule->{"prods"}[0];
634 905         1702 $text = $_[1];
635 905         1231 my $_savetext;
636 905         1686 @item = (q{DOUBLE_QUOTED_STRING});
637 905         1795 %item = (__RULE__ => q{DOUBLE_QUOTED_STRING});
638 905         1471 my $repcount = 0;
639              
640              
641 905 50       1798 Parse::RecDescent::_trace(q{Trying terminal: ['"']},
642             Parse::RecDescent::_tracefirst($text),
643             q{DOUBLE_QUOTED_STRING},
644             $tracelevel)
645             if defined $::RD_TRACE;
646 905         1631 undef $lastsep;
647 905         1965 $expectation->is(q{})->at($text);
648            
649              
650 905 100 66     10372 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\"/)
  905 100       8213  
651             {
652 184 50       688 $text = $lastsep . $text if defined $lastsep;
653            
654 184         601 $expectation->failed();
655 184 50       730 Parse::RecDescent::_trace(qq{<>},
656             Parse::RecDescent::_tracefirst($text))
657             if defined $::RD_TRACE;
658 184         403 last;
659             }
660 721         3638 $current_match = substr($text, $-[0], $+[0] - $-[0]);
661 721         2590 substr($text,0,length($current_match),q{});
662 721 50       1717 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
663             . $current_match . q{])},
664             Parse::RecDescent::_tracefirst($text))
665             if defined $::RD_TRACE;
666 721         1969 push @item, $item{__STRING1__}=$current_match;
667            
668              
669 721 50       1498 Parse::RecDescent::_trace(q{Trying terminal: [/(?:\\\\["\\\\]|[^"])*/]}, Parse::RecDescent::_tracefirst($text),
670             q{DOUBLE_QUOTED_STRING},
671             $tracelevel)
672             if defined $::RD_TRACE;
673 721         1093 undef $lastsep;
674 721         1739 $expectation->is(q{/(?:\\\\["\\\\]|[^"])*/})->at($text);
675            
676              
677 721 50 33     7513 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:(?:\\["\\]|[^"])*)/)
  721 50       8446  
678             {
679 0 0       0 $text = $lastsep . $text if defined $lastsep;
680 0         0 $expectation->failed();
681 0 0       0 Parse::RecDescent::_trace(q{<>},
682             Parse::RecDescent::_tracefirst($text))
683             if defined $::RD_TRACE;
684              
685 0         0 last;
686             }
687 721         3592 $current_match = substr($text, $-[0], $+[0] - $-[0]);
688 721         2318 substr($text,0,length($current_match),q{});
689 721 50       1542 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
690             . $current_match . q{])},
691             Parse::RecDescent::_tracefirst($text))
692             if defined $::RD_TRACE;
693 721         1773 push @item, $item{__PATTERN1__}=$current_match;
694            
695              
696 721 50       1400 Parse::RecDescent::_trace(q{Trying terminal: ['"']},
697             Parse::RecDescent::_tracefirst($text),
698             q{DOUBLE_QUOTED_STRING},
699             $tracelevel)
700             if defined $::RD_TRACE;
701 721         1093 undef $lastsep;
702 721         1862 $expectation->is(q{'"'})->at($text);
703            
704              
705 721 50 33     7126 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\"/)
  721 50       5889  
706             {
707 0 0       0 $text = $lastsep . $text if defined $lastsep;
708            
709 0         0 $expectation->failed();
710 0 0       0 Parse::RecDescent::_trace(qq{<>},
711             Parse::RecDescent::_tracefirst($text))
712             if defined $::RD_TRACE;
713 0         0 last;
714             }
715 721         3060 $current_match = substr($text, $-[0], $+[0] - $-[0]);
716 721         2251 substr($text,0,length($current_match),q{});
717 721 50       1519 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
718             . $current_match . q{])},
719             Parse::RecDescent::_tracefirst($text))
720             if defined $::RD_TRACE;
721 721         1911 push @item, $item{__STRING2__}=$current_match;
722            
723              
724 721 50       1642 Parse::RecDescent::_trace(q{Trying action},
725             Parse::RecDescent::_tracefirst($text),
726             q{DOUBLE_QUOTED_STRING},
727             $tracelevel)
728             if defined $::RD_TRACE;
729            
730              
731 721 50       1446 $_tok = ($_noactions) ? 0 : do { $return = $item{__PATTERN1__} };
  721         1597  
732 721 50       1484 unless (defined $_tok)
733             {
734 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
735             if defined $::RD_TRACE;
736 0         0 last;
737             }
738 721 50       1525 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
739             . $_tok . q{])},
740             Parse::RecDescent::_tracefirst($text))
741             if defined $::RD_TRACE;
742 721         1141 push @item, $_tok;
743 721         1322 $item{__ACTION1__}=$_tok;
744            
745              
746 721 50       1629 Parse::RecDescent::_trace(q{>>Matched production: ['"' /(?:\\\\["\\\\]|[^"])*/ '"']<<},
747             Parse::RecDescent::_tracefirst($text),
748             q{DOUBLE_QUOTED_STRING},
749             $tracelevel)
750             if defined $::RD_TRACE;
751              
752              
753              
754 721         1188 $_matched = 1;
755 721         1496 last;
756             }
757              
758             splice
759 905 100       1830 @{$thisparser->{deferred}}, $def_at unless $_matched;
  184         411  
760            
761 905 100 66     2092 unless ( $_matched || defined($score) )
762             {
763 184         270 splice @{$thisparser->{deferred}}, $def_at;
  184         326  
764            
765              
766 184         316 $_[1] = $text; # NOT SURE THIS IS NEEDED
767 184 50       373 Parse::RecDescent::_trace(q{<>},
768             Parse::RecDescent::_tracefirst($_[1]),
769             q{DOUBLE_QUOTED_STRING},
770             $tracelevel)
771             if defined $::RD_TRACE;
772 184         929 return undef;
773             }
774 721 50 33     1622 if (!defined($return) && defined($score))
775             {
776 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
777             q{DOUBLE_QUOTED_STRING},
778             $tracelevel)
779             if defined $::RD_TRACE;
780 0         0 $return = $score_return;
781             }
782 721         975 splice @{$thisparser->{errors}}, $err_at;
  721         1834  
783 721 50       1437 $return = $item[$#item] unless defined $return;
784 721 50       1441 if (defined $::RD_TRACE)
785             {
786 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
787             $return . q{])}, "",
788             q{DOUBLE_QUOTED_STRING},
789             $tracelevel);
790 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
791             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
792             Parse::RecDescent::_tracefirst($text),
793             , q{DOUBLE_QUOTED_STRING},
794             $tracelevel)
795             }
796 721         1790 $_[1] = $text;
797 721         4846 return $return;
798             }
799              
800             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
801             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::HTML
802             {
803 53     53   94 my $thisparser = $_[0];
804 1     1   10 use vars q{$tracelevel};
  1         2  
  1         901  
805 53   50     251 local $tracelevel = ($tracelevel||0)+1;
806 53         88 $ERRORS = 0;
807 53         147 my $thisrule = $thisparser->{"rules"}{"HTML"};
808              
809 53 50       105 Parse::RecDescent::_trace(q{Trying rule: [HTML]},
810             Parse::RecDescent::_tracefirst($_[1]),
811             q{HTML},
812             $tracelevel)
813             if defined $::RD_TRACE;
814              
815 53         73 my $def_at = @{$thisparser->{deferred}};
  53         108  
816 53         96 my $err_at = @{$thisparser->{errors}};
  53         94  
817              
818 53         137 my $score;
819             my $score_return;
820 53         0 my $_tok;
821 53         95 my $return = undef;
822 53         83 my $_matched=0;
823 53         76 my $commit=0;
824 53         94 my @item = ();
825 53         92 my %item = ();
826 53         78 my $repeating = $_[2];
827 53         89 my $_noactions = $_[3];
828 53 50       110 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  53         76  
  53         108  
829 53         79 my $_itempos = $_[5];
830 53 50       148 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
831 53         129 my $text;
832             my $lastsep;
833 53         0 my $current_match;
834 53         139 my $expectation = new Parse::RecDescent::Expectation(q{/"HTML"|HTML/i});
835 53         355 $expectation->at($_[1]);
836            
837 53         224 my $thisline;
838 53         182 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
839              
840            
841              
842 53   33     575 while (!$_matched && !$commit)
843             {
844            
845 53 50       115 Parse::RecDescent::_trace(q{Trying production: [/"HTML"|HTML/i]},
846             Parse::RecDescent::_tracefirst($_[1]),
847             q{HTML},
848             $tracelevel)
849             if defined $::RD_TRACE;
850 53         119 my $thisprod = $thisrule->{"prods"}[0];
851 53         99 $text = $_[1];
852 53         88 my $_savetext;
853 53         107 @item = (q{HTML});
854 53         115 %item = (__RULE__ => q{HTML});
855 53         86 my $repcount = 0;
856              
857              
858 53 50       101 Parse::RecDescent::_trace(q{Trying terminal: [/"HTML"|HTML/i]}, Parse::RecDescent::_tracefirst($text),
859             q{HTML},
860             $tracelevel)
861             if defined $::RD_TRACE;
862 53         102 undef $lastsep;
863 53         124 $expectation->is(q{})->at($text);
864            
865              
866 53 50 66     624 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:"HTML"|HTML)/i)
  53 100       566  
867             {
868 44 50       178 $text = $lastsep . $text if defined $lastsep;
869 44         142 $expectation->failed();
870 44 50       230 Parse::RecDescent::_trace(q{<>},
871             Parse::RecDescent::_tracefirst($text))
872             if defined $::RD_TRACE;
873              
874 44         100 last;
875             }
876 9         62 $current_match = substr($text, $-[0], $+[0] - $-[0]);
877 9         38 substr($text,0,length($current_match),q{});
878 9 50       30 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
879             . $current_match . q{])},
880             Parse::RecDescent::_tracefirst($text))
881             if defined $::RD_TRACE;
882 9         32 push @item, $item{__PATTERN1__}=$current_match;
883            
884              
885 9 50       24 Parse::RecDescent::_trace(q{Trying action},
886             Parse::RecDescent::_tracefirst($text),
887             q{HTML},
888             $tracelevel)
889             if defined $::RD_TRACE;
890            
891              
892 9 50       22 $_tok = ($_noactions) ? 0 : do { $return = "HTML" };
  9         23  
893 9 50       25 unless (defined $_tok)
894             {
895 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
896             if defined $::RD_TRACE;
897 0         0 last;
898             }
899 9 50       36 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
900             . $_tok . q{])},
901             Parse::RecDescent::_tracefirst($text))
902             if defined $::RD_TRACE;
903 9         19 push @item, $_tok;
904 9         22 $item{__ACTION1__}=$_tok;
905            
906              
907 9 50       20 Parse::RecDescent::_trace(q{>>Matched production: [/"HTML"|HTML/i]<<},
908             Parse::RecDescent::_tracefirst($text),
909             q{HTML},
910             $tracelevel)
911             if defined $::RD_TRACE;
912              
913              
914              
915 9         18 $_matched = 1;
916 9         20 last;
917             }
918              
919             splice
920 53 100       126 @{$thisparser->{deferred}}, $def_at unless $_matched;
  44         104  
921            
922 53 100 66     198 unless ( $_matched || defined($score) )
923             {
924 44         74 splice @{$thisparser->{deferred}}, $def_at;
  44         81  
925            
926              
927 44         88 $_[1] = $text; # NOT SURE THIS IS NEEDED
928 44 50       96 Parse::RecDescent::_trace(q{<>},
929             Parse::RecDescent::_tracefirst($_[1]),
930             q{HTML},
931             $tracelevel)
932             if defined $::RD_TRACE;
933 44         227 return undef;
934             }
935 9 50 33     31 if (!defined($return) && defined($score))
936             {
937 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
938             q{HTML},
939             $tracelevel)
940             if defined $::RD_TRACE;
941 0         0 $return = $score_return;
942             }
943 9         39 splice @{$thisparser->{errors}}, $err_at;
  9         22  
944 9 50       32 $return = $item[$#item] unless defined $return;
945 9 50       29 if (defined $::RD_TRACE)
946             {
947 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
948             $return . q{])}, "",
949             q{HTML},
950             $tracelevel);
951 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
952             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
953             Parse::RecDescent::_tracefirst($text),
954             , q{HTML},
955             $tracelevel)
956             }
957 9         23 $_[1] = $text;
958 9         61 return $return;
959             }
960              
961             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
962             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::KVPAIRS
963             {
964 136     136   302 my $thisparser = $_[0];
965 1     1   9 use vars q{$tracelevel};
  1         1  
  1         1201  
966 136   50     339 local $tracelevel = ($tracelevel||0)+1;
967 136         236 $ERRORS = 0;
968 136         319 my $thisrule = $thisparser->{"rules"}{"KVPAIRS"};
969              
970 136 50       277 Parse::RecDescent::_trace(q{Trying rule: [KVPAIRS]},
971             Parse::RecDescent::_tracefirst($_[1]),
972             q{KVPAIRS},
973             $tracelevel)
974             if defined $::RD_TRACE;
975              
976 136         182 my $def_at = @{$thisparser->{deferred}};
  136         233  
977 136         272 my $err_at = @{$thisparser->{errors}};
  136         228  
978              
979 136         527 my $score;
980             my $score_return;
981 136         0 my $_tok;
982 136         186 my $return = undef;
983 136         194 my $_matched=0;
984 136         206 my $commit=0;
985 136         219 my @item = ();
986 136         199 my %item = ();
987 136         257 my $repeating = $_[2];
988 136         214 my $_noactions = $_[3];
989 136 50       301 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  136         192  
  136         278  
990 136         206 my $_itempos = $_[5];
991 136 50       314 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
992 136         309 my $text;
993             my $lastsep;
994 136         0 my $current_match;
995 136         331 my $expectation = new Parse::RecDescent::Expectation(q{'('});
996 136         903 $expectation->at($_[1]);
997            
998 136         588 my $thisline;
999 136         485 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1000              
1001            
1002              
1003 136   33     1065 while (!$_matched && !$commit)
1004             {
1005            
1006 136 50       280 Parse::RecDescent::_trace(q{Trying production: ['(' kvpair ')']},
1007             Parse::RecDescent::_tracefirst($_[1]),
1008             q{KVPAIRS},
1009             $tracelevel)
1010             if defined $::RD_TRACE;
1011 136         294 my $thisprod = $thisrule->{"prods"}[0];
1012 136         266 $text = $_[1];
1013 136         190 my $_savetext;
1014 136         263 @item = (q{KVPAIRS});
1015 136         257 %item = (__RULE__ => q{KVPAIRS});
1016 136         220 my $repcount = 0;
1017              
1018              
1019 136 50       288 Parse::RecDescent::_trace(q{Trying terminal: ['(']},
1020             Parse::RecDescent::_tracefirst($text),
1021             q{KVPAIRS},
1022             $tracelevel)
1023             if defined $::RD_TRACE;
1024 136         234 undef $lastsep;
1025 136         303 $expectation->is(q{})->at($text);
1026            
1027              
1028 136 100 33     1480 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and
  136 100 66     977  
  136   66     238  
  136         691  
1029             substr($text,0,length($_tok)) eq $_tok and
1030 123         261 do { substr($text,0,length($_tok)) = ""; 1; }
  123         394  
1031             )
1032             {
1033 13 50       35 $text = $lastsep . $text if defined $lastsep;
1034            
1035 13         40 $expectation->failed();
1036 13 50       54 Parse::RecDescent::_trace(q{<>},
1037             Parse::RecDescent::_tracefirst($text))
1038             if defined $::RD_TRACE;
1039 13         27 last;
1040             }
1041 123 50       357 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1042             . $_tok . q{])},
1043             Parse::RecDescent::_tracefirst($text))
1044             if defined $::RD_TRACE;
1045 123         300 push @item, $item{__STRING1__}=$_tok;
1046            
1047              
1048 123 50       259 Parse::RecDescent::_trace(q{Trying repeated subrule: [kvpair]},
1049             Parse::RecDescent::_tracefirst($text),
1050             q{KVPAIRS},
1051             $tracelevel)
1052             if defined $::RD_TRACE;
1053 123         299 $expectation->is(q{kvpair})->at($text);
1054            
1055 123 50   255   1440 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::kvpair, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
  255         495  
1056             {
1057 0 0       0 Parse::RecDescent::_trace(q{<>},
1058             Parse::RecDescent::_tracefirst($text),
1059             q{KVPAIRS},
1060             $tracelevel)
1061             if defined $::RD_TRACE;
1062 0         0 last;
1063             }
1064 123 50       1844 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [kvpair]<< (}
1065             . @$_tok . q{ times)},
1066              
1067             Parse::RecDescent::_tracefirst($text),
1068             q{KVPAIRS},
1069             $tracelevel)
1070             if defined $::RD_TRACE;
1071 123         285 $item{q{kvpair(s)}} = $_tok;
1072 123         223 push @item, $_tok;
1073            
1074              
1075              
1076 123 50       247 Parse::RecDescent::_trace(q{Trying terminal: [')']},
1077             Parse::RecDescent::_tracefirst($text),
1078             q{KVPAIRS},
1079             $tracelevel)
1080             if defined $::RD_TRACE;
1081 123         216 undef $lastsep;
1082 123         298 $expectation->is(q{')'})->at($text);
1083            
1084              
1085 123 50 33     1429 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and
  123 50 33     742  
  123   33     256  
  123         623  
1086             substr($text,0,length($_tok)) eq $_tok and
1087 123         239 do { substr($text,0,length($_tok)) = ""; 1; }
  123         359  
1088             )
1089             {
1090 0 0       0 $text = $lastsep . $text if defined $lastsep;
1091            
1092 0         0 $expectation->failed();
1093 0 0       0 Parse::RecDescent::_trace(q{<>},
1094             Parse::RecDescent::_tracefirst($text))
1095             if defined $::RD_TRACE;
1096 0         0 last;
1097             }
1098 123 50       350 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1099             . $_tok . q{])},
1100             Parse::RecDescent::_tracefirst($text))
1101             if defined $::RD_TRACE;
1102 123         314 push @item, $item{__STRING2__}=$_tok;
1103            
1104              
1105 123 50       245 Parse::RecDescent::_trace(q{Trying action},
1106             Parse::RecDescent::_tracefirst($text),
1107             q{KVPAIRS},
1108             $tracelevel)
1109             if defined $::RD_TRACE;
1110            
1111              
1112 123 50       223 $_tok = ($_noactions) ? 0 : do { $return = { map { (%$_) } @{$item{'kvpair(s)'}} } };
  123         198  
  132         784  
  123         324  
1113 123 50       317 unless (defined $_tok)
1114             {
1115 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
1116             if defined $::RD_TRACE;
1117 0         0 last;
1118             }
1119 123 50       248 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1120             . $_tok . q{])},
1121             Parse::RecDescent::_tracefirst($text))
1122             if defined $::RD_TRACE;
1123 123         266 push @item, $_tok;
1124 123         227 $item{__ACTION1__}=$_tok;
1125            
1126              
1127 123 50       270 Parse::RecDescent::_trace(q{>>Matched production: ['(' kvpair ')']<<},
1128             Parse::RecDescent::_tracefirst($text),
1129             q{KVPAIRS},
1130             $tracelevel)
1131             if defined $::RD_TRACE;
1132              
1133              
1134              
1135 123         191 $_matched = 1;
1136 123         290 last;
1137             }
1138              
1139             splice
1140 136 100       305 @{$thisparser->{deferred}}, $def_at unless $_matched;
  13         32  
1141            
1142 136 100 66     320 unless ( $_matched || defined($score) )
1143             {
1144 13         18 splice @{$thisparser->{deferred}}, $def_at;
  13         23  
1145            
1146              
1147 13         26 $_[1] = $text; # NOT SURE THIS IS NEEDED
1148 13 50       26 Parse::RecDescent::_trace(q{<>},
1149             Parse::RecDescent::_tracefirst($_[1]),
1150             q{KVPAIRS},
1151             $tracelevel)
1152             if defined $::RD_TRACE;
1153 13         63 return undef;
1154             }
1155 123 50 33     311 if (!defined($return) && defined($score))
1156             {
1157 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1158             q{KVPAIRS},
1159             $tracelevel)
1160             if defined $::RD_TRACE;
1161 0         0 $return = $score_return;
1162             }
1163 123         173 splice @{$thisparser->{errors}}, $err_at;
  123         329  
1164 123 50       268 $return = $item[$#item] unless defined $return;
1165 123 50       253 if (defined $::RD_TRACE)
1166             {
1167 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1168             $return . q{])}, "",
1169             q{KVPAIRS},
1170             $tracelevel);
1171 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1172             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1173             Parse::RecDescent::_tracefirst($text),
1174             , q{KVPAIRS},
1175             $tracelevel)
1176             }
1177 123         318 $_[1] = $text;
1178 123         909 return $return;
1179             }
1180              
1181             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
1182             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::MESSAGE
1183             {
1184 53     53   90 my $thisparser = $_[0];
1185 1     1   9 use vars q{$tracelevel};
  1         2  
  1         898  
1186 53   50     142 local $tracelevel = ($tracelevel||0)+1;
1187 53         98 $ERRORS = 0;
1188 53         142 my $thisrule = $thisparser->{"rules"}{"MESSAGE"};
1189              
1190 53 50       110 Parse::RecDescent::_trace(q{Trying rule: [MESSAGE]},
1191             Parse::RecDescent::_tracefirst($_[1]),
1192             q{MESSAGE},
1193             $tracelevel)
1194             if defined $::RD_TRACE;
1195              
1196 53         72 my $def_at = @{$thisparser->{deferred}};
  53         112  
1197 53         81 my $err_at = @{$thisparser->{errors}};
  53         104  
1198              
1199 53         141 my $score;
1200             my $score_return;
1201 53         0 my $_tok;
1202 53         102 my $return = undef;
1203 53         89 my $_matched=0;
1204 53         82 my $commit=0;
1205 53         84 my @item = ();
1206 53         80 my %item = ();
1207 53         98 my $repeating = $_[2];
1208 53         90 my $_noactions = $_[3];
1209 53 50       115 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  53         75  
  53         96  
1210 53         93 my $_itempos = $_[5];
1211 53 50       127 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1212 53         127 my $text;
1213             my $lastsep;
1214 53         0 my $current_match;
1215 53         137 my $expectation = new Parse::RecDescent::Expectation(q{/^"MESSAGE"|^MESSAGE/i});
1216 53         329 $expectation->at($_[1]);
1217            
1218 53         242 my $thisline;
1219 53         159 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1220              
1221            
1222              
1223 53   33     371 while (!$_matched && !$commit)
1224             {
1225            
1226 53 50       120 Parse::RecDescent::_trace(q{Trying production: [/^"MESSAGE"|^MESSAGE/i]},
1227             Parse::RecDescent::_tracefirst($_[1]),
1228             q{MESSAGE},
1229             $tracelevel)
1230             if defined $::RD_TRACE;
1231 53         134 my $thisprod = $thisrule->{"prods"}[0];
1232 53         112 $text = $_[1];
1233 53         88 my $_savetext;
1234 53         111 @item = (q{MESSAGE});
1235 53         123 %item = (__RULE__ => q{MESSAGE});
1236 53         81 my $repcount = 0;
1237              
1238              
1239 53 50       108 Parse::RecDescent::_trace(q{Trying terminal: [/^"MESSAGE"|^MESSAGE/i]}, Parse::RecDescent::_tracefirst($text),
1240             q{MESSAGE},
1241             $tracelevel)
1242             if defined $::RD_TRACE;
1243 53         87 undef $lastsep;
1244 53         116 $expectation->is(q{})->at($text);
1245            
1246              
1247 53 50 66     645 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^"MESSAGE"|^MESSAGE)/i)
  53 100       534  
1248             {
1249 31 50       134 $text = $lastsep . $text if defined $lastsep;
1250 31         124 $expectation->failed();
1251 31 50       141 Parse::RecDescent::_trace(q{<>},
1252             Parse::RecDescent::_tracefirst($text))
1253             if defined $::RD_TRACE;
1254              
1255 31         77 last;
1256             }
1257 22         144 $current_match = substr($text, $-[0], $+[0] - $-[0]);
1258 22         106 substr($text,0,length($current_match),q{});
1259 22 50       68 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1260             . $current_match . q{])},
1261             Parse::RecDescent::_tracefirst($text))
1262             if defined $::RD_TRACE;
1263 22         63 push @item, $item{__PATTERN1__}=$current_match;
1264            
1265              
1266 22 50       49 Parse::RecDescent::_trace(q{Trying action},
1267             Parse::RecDescent::_tracefirst($text),
1268             q{MESSAGE},
1269             $tracelevel)
1270             if defined $::RD_TRACE;
1271            
1272              
1273 22 50       63 $_tok = ($_noactions) ? 0 : do { $return = "MESSAGE"};
  22         47  
1274 22 50       62 unless (defined $_tok)
1275             {
1276 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
1277             if defined $::RD_TRACE;
1278 0         0 last;
1279             }
1280 22 50       54 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1281             . $_tok . q{])},
1282             Parse::RecDescent::_tracefirst($text))
1283             if defined $::RD_TRACE;
1284 22         40 push @item, $_tok;
1285 22         44 $item{__ACTION1__}=$_tok;
1286            
1287              
1288 22 50       60 Parse::RecDescent::_trace(q{>>Matched production: [/^"MESSAGE"|^MESSAGE/i]<<},
1289             Parse::RecDescent::_tracefirst($text),
1290             q{MESSAGE},
1291             $tracelevel)
1292             if defined $::RD_TRACE;
1293              
1294              
1295              
1296 22         40 $_matched = 1;
1297 22         45 last;
1298             }
1299              
1300             splice
1301 53 100       126 @{$thisparser->{deferred}}, $def_at unless $_matched;
  31         91  
1302            
1303 53 100 66     241 unless ( $_matched || defined($score) )
1304             {
1305 31         50 splice @{$thisparser->{deferred}}, $def_at;
  31         67  
1306            
1307              
1308 31         72 $_[1] = $text; # NOT SURE THIS IS NEEDED
1309 31 50       82 Parse::RecDescent::_trace(q{<>},
1310             Parse::RecDescent::_tracefirst($_[1]),
1311             q{MESSAGE},
1312             $tracelevel)
1313             if defined $::RD_TRACE;
1314 31         184 return undef;
1315             }
1316 22 50 33     78 if (!defined($return) && defined($score))
1317             {
1318 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1319             q{MESSAGE},
1320             $tracelevel)
1321             if defined $::RD_TRACE;
1322 0         0 $return = $score_return;
1323             }
1324 22         42 splice @{$thisparser->{errors}}, $err_at;
  22         75  
1325 22 50       50 $return = $item[$#item] unless defined $return;
1326 22 50       59 if (defined $::RD_TRACE)
1327             {
1328 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1329             $return . q{])}, "",
1330             q{MESSAGE},
1331             $tracelevel);
1332 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1333             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1334             Parse::RecDescent::_tracefirst($text),
1335             , q{MESSAGE},
1336             $tracelevel)
1337             }
1338 22         108 $_[1] = $text;
1339 22         165 return $return;
1340             }
1341              
1342             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
1343             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL
1344             {
1345 1752     1752   3134 my $thisparser = $_[0];
1346 1     1   9 use vars q{$tracelevel};
  1         3  
  1         899  
1347 1752   50     4068 local $tracelevel = ($tracelevel||0)+1;
1348 1752         2810 $ERRORS = 0;
1349 1752         3472 my $thisrule = $thisparser->{"rules"}{"NIL"};
1350              
1351 1752 50       3478 Parse::RecDescent::_trace(q{Trying rule: [NIL]},
1352             Parse::RecDescent::_tracefirst($_[1]),
1353             q{NIL},
1354             $tracelevel)
1355             if defined $::RD_TRACE;
1356              
1357 1752         2392 my $def_at = @{$thisparser->{deferred}};
  1752         3100  
1358 1752         2618 my $err_at = @{$thisparser->{errors}};
  1752         3045  
1359              
1360 1752         3877 my $score;
1361             my $score_return;
1362 1752         0 my $_tok;
1363 1752         2419 my $return = undef;
1364 1752         2671 my $_matched=0;
1365 1752         2426 my $commit=0;
1366 1752         2748 my @item = ();
1367 1752         2582 my %item = ();
1368 1752         2510 my $repeating = $_[2];
1369 1752         2422 my $_noactions = $_[3];
1370 1752 50       3260 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  1752         2667  
  1752         3592  
1371 1752         2731 my $_itempos = $_[5];
1372 1752 50       3644 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1373 1752         4161 my $text;
1374             my $lastsep;
1375 1752         0 my $current_match;
1376 1752         4050 my $expectation = new Parse::RecDescent::Expectation(q{/^NIL/i});
1377 1752         10714 $expectation->at($_[1]);
1378            
1379 1752         7243 my $thisline;
1380 1752         4843 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1381              
1382            
1383              
1384 1752   33     12379 while (!$_matched && !$commit)
1385             {
1386            
1387 1752 50       3669 Parse::RecDescent::_trace(q{Trying production: [/^NIL/i]},
1388             Parse::RecDescent::_tracefirst($_[1]),
1389             q{NIL},
1390             $tracelevel)
1391             if defined $::RD_TRACE;
1392 1752         3425 my $thisprod = $thisrule->{"prods"}[0];
1393 1752         3039 $text = $_[1];
1394 1752         2576 my $_savetext;
1395 1752         3296 @item = (q{NIL});
1396 1752         3396 %item = (__RULE__ => q{NIL});
1397 1752         2693 my $repcount = 0;
1398              
1399              
1400 1752 50       3529 Parse::RecDescent::_trace(q{Trying terminal: [/^NIL/i]}, Parse::RecDescent::_tracefirst($text),
1401             q{NIL},
1402             $tracelevel)
1403             if defined $::RD_TRACE;
1404 1752         3075 undef $lastsep;
1405 1752         3900 $expectation->is(q{})->at($text);
1406            
1407              
1408 1752 100 66     19951 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^NIL)/i)
  1752 100       16781  
1409             {
1410 1093 50       4959 $text = $lastsep . $text if defined $lastsep;
1411 1093         3973 $expectation->failed();
1412 1093 50       4667 Parse::RecDescent::_trace(q{<>},
1413             Parse::RecDescent::_tracefirst($text))
1414             if defined $::RD_TRACE;
1415              
1416 1093         2437 last;
1417             }
1418 659         3146 $current_match = substr($text, $-[0], $+[0] - $-[0]);
1419 659         3259 substr($text,0,length($current_match),q{});
1420 659 50       1365 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1421             . $current_match . q{])},
1422             Parse::RecDescent::_tracefirst($text))
1423             if defined $::RD_TRACE;
1424 659         1852 push @item, $item{__PATTERN1__}=$current_match;
1425            
1426              
1427 659 50       1432 Parse::RecDescent::_trace(q{Trying action},
1428             Parse::RecDescent::_tracefirst($text),
1429             q{NIL},
1430             $tracelevel)
1431             if defined $::RD_TRACE;
1432            
1433              
1434 659 50       1205 $_tok = ($_noactions) ? 0 : do { $return = "NIL" };
  659         1134  
1435 659 50       1305 unless (defined $_tok)
1436             {
1437 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
1438             if defined $::RD_TRACE;
1439 0         0 last;
1440             }
1441 659 50       1194 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1442             . $_tok . q{])},
1443             Parse::RecDescent::_tracefirst($text))
1444             if defined $::RD_TRACE;
1445 659         1042 push @item, $_tok;
1446 659         1087 $item{__ACTION1__}=$_tok;
1447            
1448              
1449 659 50       1331 Parse::RecDescent::_trace(q{>>Matched production: [/^NIL/i]<<},
1450             Parse::RecDescent::_tracefirst($text),
1451             q{NIL},
1452             $tracelevel)
1453             if defined $::RD_TRACE;
1454              
1455              
1456              
1457 659         902 $_matched = 1;
1458 659         1392 last;
1459             }
1460              
1461             splice
1462 1752 100       3720 @{$thisparser->{deferred}}, $def_at unless $_matched;
  1093         2545  
1463            
1464 1752 100 66     4992 unless ( $_matched || defined($score) )
1465             {
1466 1093         1880 splice @{$thisparser->{deferred}}, $def_at;
  1093         1841  
1467            
1468              
1469 1093         1963 $_[1] = $text; # NOT SURE THIS IS NEEDED
1470 1093 50       2440 Parse::RecDescent::_trace(q{<>},
1471             Parse::RecDescent::_tracefirst($_[1]),
1472             q{NIL},
1473             $tracelevel)
1474             if defined $::RD_TRACE;
1475 1093         6204 return undef;
1476             }
1477 659 50 33     1415 if (!defined($return) && defined($score))
1478             {
1479 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1480             q{NIL},
1481             $tracelevel)
1482             if defined $::RD_TRACE;
1483 0         0 $return = $score_return;
1484             }
1485 659         974 splice @{$thisparser->{errors}}, $err_at;
  659         1401  
1486 659 50       1266 $return = $item[$#item] unless defined $return;
1487 659 50       1332 if (defined $::RD_TRACE)
1488             {
1489 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1490             $return . q{])}, "",
1491             q{NIL},
1492             $tracelevel);
1493 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1494             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1495             Parse::RecDescent::_tracefirst($text),
1496             , q{NIL},
1497             $tracelevel)
1498             }
1499 659         1836 $_[1] = $text;
1500 659         4379 return $return;
1501             }
1502              
1503             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
1504             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NUMBER
1505             {
1506 256     256   490 my $thisparser = $_[0];
1507 1     1   10 use vars q{$tracelevel};
  1         2  
  1         892  
1508 256   50     614 local $tracelevel = ($tracelevel||0)+1;
1509 256         410 $ERRORS = 0;
1510 256         548 my $thisrule = $thisparser->{"rules"}{"NUMBER"};
1511              
1512 256 50       518 Parse::RecDescent::_trace(q{Trying rule: [NUMBER]},
1513             Parse::RecDescent::_tracefirst($_[1]),
1514             q{NUMBER},
1515             $tracelevel)
1516             if defined $::RD_TRACE;
1517              
1518 256         398 my $def_at = @{$thisparser->{deferred}};
  256         449  
1519 256         379 my $err_at = @{$thisparser->{errors}};
  256         418  
1520              
1521 256         617 my $score;
1522             my $score_return;
1523 256         0 my $_tok;
1524 256         374 my $return = undef;
1525 256         345 my $_matched=0;
1526 256         363 my $commit=0;
1527 256         429 my @item = ();
1528 256         485 my %item = ();
1529 256         364 my $repeating = $_[2];
1530 256         394 my $_noactions = $_[3];
1531 256 50       542 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  256         354  
  256         463  
1532 256         458 my $_itempos = $_[5];
1533 256 50       679 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1534 256         602 my $text;
1535             my $lastsep;
1536 256         0 my $current_match;
1537 256         668 my $expectation = new Parse::RecDescent::Expectation(q{/^(\\d+)/});
1538 256         1697 $expectation->at($_[1]);
1539            
1540 256         1039 my $thisline;
1541 256         881 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1542              
1543            
1544              
1545 256   33     1952 while (!$_matched && !$commit)
1546             {
1547            
1548 256 50       519 Parse::RecDescent::_trace(q{Trying production: [/^(\\d+)/]},
1549             Parse::RecDescent::_tracefirst($_[1]),
1550             q{NUMBER},
1551             $tracelevel)
1552             if defined $::RD_TRACE;
1553 256         552 my $thisprod = $thisrule->{"prods"}[0];
1554 256         470 $text = $_[1];
1555 256         346 my $_savetext;
1556 256         492 @item = (q{NUMBER});
1557 256         475 %item = (__RULE__ => q{NUMBER});
1558 256         368 my $repcount = 0;
1559              
1560              
1561 256 50       472 Parse::RecDescent::_trace(q{Trying terminal: [/^(\\d+)/]}, Parse::RecDescent::_tracefirst($text),
1562             q{NUMBER},
1563             $tracelevel)
1564             if defined $::RD_TRACE;
1565 256         494 undef $lastsep;
1566 256         614 $expectation->is(q{})->at($text);
1567            
1568              
1569 256 100 66     2833 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^(\d+))/)
  256 100       2406  
1570             {
1571 122 50       547 $text = $lastsep . $text if defined $lastsep;
1572 122         545 $expectation->failed();
1573 122 50       538 Parse::RecDescent::_trace(q{<>},
1574             Parse::RecDescent::_tracefirst($text))
1575             if defined $::RD_TRACE;
1576              
1577 122         273 last;
1578             }
1579 134         704 $current_match = substr($text, $-[0], $+[0] - $-[0]);
1580 134         477 substr($text,0,length($current_match),q{});
1581 134 50       313 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1582             . $current_match . q{])},
1583             Parse::RecDescent::_tracefirst($text))
1584             if defined $::RD_TRACE;
1585 134         349 push @item, $item{__PATTERN1__}=$current_match;
1586            
1587              
1588 134 50       262 Parse::RecDescent::_trace(q{Trying action},
1589             Parse::RecDescent::_tracefirst($text),
1590             q{NUMBER},
1591             $tracelevel)
1592             if defined $::RD_TRACE;
1593            
1594              
1595 134 50       258 $_tok = ($_noactions) ? 0 : do { $return = $item[1] };
  134         324  
1596 134 50       337 unless (defined $_tok)
1597             {
1598 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
1599             if defined $::RD_TRACE;
1600 0         0 last;
1601             }
1602 134 50       262 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1603             . $_tok . q{])},
1604             Parse::RecDescent::_tracefirst($text))
1605             if defined $::RD_TRACE;
1606 134         218 push @item, $_tok;
1607 134         246 $item{__ACTION1__}=$_tok;
1608            
1609              
1610 134 50       262 Parse::RecDescent::_trace(q{>>Matched production: [/^(\\d+)/]<<},
1611             Parse::RecDescent::_tracefirst($text),
1612             q{NUMBER},
1613             $tracelevel)
1614             if defined $::RD_TRACE;
1615              
1616              
1617              
1618 134         246 $_matched = 1;
1619 134         253 last;
1620             }
1621              
1622             splice
1623 256 100       613 @{$thisparser->{deferred}}, $def_at unless $_matched;
  122         270  
1624            
1625 256 100 66     762 unless ( $_matched || defined($score) )
1626             {
1627 122         185 splice @{$thisparser->{deferred}}, $def_at;
  122         234  
1628            
1629              
1630 122         234 $_[1] = $text; # NOT SURE THIS IS NEEDED
1631 122 50       248 Parse::RecDescent::_trace(q{<>},
1632             Parse::RecDescent::_tracefirst($_[1]),
1633             q{NUMBER},
1634             $tracelevel)
1635             if defined $::RD_TRACE;
1636 122         617 return undef;
1637             }
1638 134 50 33     312 if (!defined($return) && defined($score))
1639             {
1640 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1641             q{NUMBER},
1642             $tracelevel)
1643             if defined $::RD_TRACE;
1644 0         0 $return = $score_return;
1645             }
1646 134         228 splice @{$thisparser->{errors}}, $err_at;
  134         314  
1647 134 50       282 $return = $item[$#item] unless defined $return;
1648 134 50       269 if (defined $::RD_TRACE)
1649             {
1650 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1651             $return . q{])}, "",
1652             q{NUMBER},
1653             $tracelevel);
1654 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1655             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1656             Parse::RecDescent::_tracefirst($text),
1657             , q{NUMBER},
1658             $tracelevel)
1659             }
1660 134         386 $_[1] = $text;
1661 134         845 return $return;
1662             }
1663              
1664             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
1665             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::PLAIN
1666             {
1667 84     84   153 my $thisparser = $_[0];
1668 1     1   9 use vars q{$tracelevel};
  1         3  
  1         881  
1669 84   50     196 local $tracelevel = ($tracelevel||0)+1;
1670 84         138 $ERRORS = 0;
1671 84         183 my $thisrule = $thisparser->{"rules"}{"PLAIN"};
1672              
1673 84 50       212 Parse::RecDescent::_trace(q{Trying rule: [PLAIN]},
1674             Parse::RecDescent::_tracefirst($_[1]),
1675             q{PLAIN},
1676             $tracelevel)
1677             if defined $::RD_TRACE;
1678              
1679 84         134 my $def_at = @{$thisparser->{deferred}};
  84         181  
1680 84         135 my $err_at = @{$thisparser->{errors}};
  84         154  
1681              
1682 84         209 my $score;
1683             my $score_return;
1684 84         0 my $_tok;
1685 84         124 my $return = undef;
1686 84         128 my $_matched=0;
1687 84         127 my $commit=0;
1688 84         154 my @item = ();
1689 84         155 my %item = ();
1690 84         132 my $repeating = $_[2];
1691 84         128 my $_noactions = $_[3];
1692 84 50       210 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  84         126  
  84         175  
1693 84         133 my $_itempos = $_[5];
1694 84 50       230 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1695 84         198 my $text;
1696             my $lastsep;
1697 84         0 my $current_match;
1698 84         194 my $expectation = new Parse::RecDescent::Expectation(q{/^"PLAIN"|^PLAIN/i});
1699 84         550 $expectation->at($_[1]);
1700            
1701 84         347 my $thisline;
1702 84         244 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1703              
1704            
1705              
1706 84   33     678 while (!$_matched && !$commit)
1707             {
1708            
1709 84 50       193 Parse::RecDescent::_trace(q{Trying production: [/^"PLAIN"|^PLAIN/i]},
1710             Parse::RecDescent::_tracefirst($_[1]),
1711             q{PLAIN},
1712             $tracelevel)
1713             if defined $::RD_TRACE;
1714 84         178 my $thisprod = $thisrule->{"prods"}[0];
1715 84         145 $text = $_[1];
1716 84         125 my $_savetext;
1717 84         152 @item = (q{PLAIN});
1718 84         195 %item = (__RULE__ => q{PLAIN});
1719 84         128 my $repcount = 0;
1720              
1721              
1722 84 50       181 Parse::RecDescent::_trace(q{Trying terminal: [/^"PLAIN"|^PLAIN/i]}, Parse::RecDescent::_tracefirst($text),
1723             q{PLAIN},
1724             $tracelevel)
1725             if defined $::RD_TRACE;
1726 84         165 undef $lastsep;
1727 84         231 $expectation->is(q{})->at($text);
1728            
1729              
1730 84 50 66     1076 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^"PLAIN"|^PLAIN)/i)
  84 100       900  
1731             {
1732 53 50       227 $text = $lastsep . $text if defined $lastsep;
1733 53         216 $expectation->failed();
1734 53 50       228 Parse::RecDescent::_trace(q{<>},
1735             Parse::RecDescent::_tracefirst($text))
1736             if defined $::RD_TRACE;
1737              
1738 53         127 last;
1739             }
1740 31         178 $current_match = substr($text, $-[0], $+[0] - $-[0]);
1741 31         154 substr($text,0,length($current_match),q{});
1742 31 50       80 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1743             . $current_match . q{])},
1744             Parse::RecDescent::_tracefirst($text))
1745             if defined $::RD_TRACE;
1746 31         92 push @item, $item{__PATTERN1__}=$current_match;
1747            
1748              
1749 31 50       77 Parse::RecDescent::_trace(q{Trying action},
1750             Parse::RecDescent::_tracefirst($text),
1751             q{PLAIN},
1752             $tracelevel)
1753             if defined $::RD_TRACE;
1754            
1755              
1756 31 50       62 $_tok = ($_noactions) ? 0 : do { $return = "PLAIN" };
  31         67  
1757 31 50       86 unless (defined $_tok)
1758             {
1759 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
1760             if defined $::RD_TRACE;
1761 0         0 last;
1762             }
1763 31 50       76 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1764             . $_tok . q{])},
1765             Parse::RecDescent::_tracefirst($text))
1766             if defined $::RD_TRACE;
1767 31         56 push @item, $_tok;
1768 31         69 $item{__ACTION1__}=$_tok;
1769            
1770              
1771 31 50       67 Parse::RecDescent::_trace(q{>>Matched production: [/^"PLAIN"|^PLAIN/i]<<},
1772             Parse::RecDescent::_tracefirst($text),
1773             q{PLAIN},
1774             $tracelevel)
1775             if defined $::RD_TRACE;
1776              
1777              
1778              
1779 31         48 $_matched = 1;
1780 31         71 last;
1781             }
1782              
1783             splice
1784 84 100       207 @{$thisparser->{deferred}}, $def_at unless $_matched;
  53         126  
1785            
1786 84 100 66     298 unless ( $_matched || defined($score) )
1787             {
1788 53         84 splice @{$thisparser->{deferred}}, $def_at;
  53         92  
1789            
1790              
1791 53         109 $_[1] = $text; # NOT SURE THIS IS NEEDED
1792 53 50       115 Parse::RecDescent::_trace(q{<>},
1793             Parse::RecDescent::_tracefirst($_[1]),
1794             q{PLAIN},
1795             $tracelevel)
1796             if defined $::RD_TRACE;
1797 53         280 return undef;
1798             }
1799 31 50 33     111 if (!defined($return) && defined($score))
1800             {
1801 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1802             q{PLAIN},
1803             $tracelevel)
1804             if defined $::RD_TRACE;
1805 0         0 $return = $score_return;
1806             }
1807 31         83 splice @{$thisparser->{errors}}, $err_at;
  31         110  
1808 31 50       101 $return = $item[$#item] unless defined $return;
1809 31 50       87 if (defined $::RD_TRACE)
1810             {
1811 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1812             $return . q{])}, "",
1813             q{PLAIN},
1814             $tracelevel);
1815 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1816             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1817             Parse::RecDescent::_tracefirst($text),
1818             , q{PLAIN},
1819             $tracelevel)
1820             }
1821 31         132 $_[1] = $text;
1822 31         220 return $return;
1823             }
1824              
1825             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
1826             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::RFC822
1827             {
1828 22     22   52 my $thisparser = $_[0];
1829 1     1   9 use vars q{$tracelevel};
  1         2  
  1         936  
1830 22   50     61 local $tracelevel = ($tracelevel||0)+1;
1831 22         42 $ERRORS = 0;
1832 22         58 my $thisrule = $thisparser->{"rules"}{"RFC822"};
1833              
1834 22 50       53 Parse::RecDescent::_trace(q{Trying rule: [RFC822]},
1835             Parse::RecDescent::_tracefirst($_[1]),
1836             q{RFC822},
1837             $tracelevel)
1838             if defined $::RD_TRACE;
1839              
1840 22         32 my $def_at = @{$thisparser->{deferred}};
  22         51  
1841 22         43 my $err_at = @{$thisparser->{errors}};
  22         39  
1842              
1843 22         62 my $score;
1844             my $score_return;
1845 22         0 my $_tok;
1846 22         41 my $return = undef;
1847 22         41 my $_matched=0;
1848 22         39 my $commit=0;
1849 22         46 my @item = ();
1850 22         41 my %item = ();
1851 22         36 my $repeating = $_[2];
1852 22         41 my $_noactions = $_[3];
1853 22 50       53 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  22         38  
  22         45  
1854 22         45 my $_itempos = $_[5];
1855 22 50       89 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1856 22         70 my $text;
1857             my $lastsep;
1858 22         0 my $current_match;
1859 22         65 my $expectation = new Parse::RecDescent::Expectation(q{/^"RFC822"|^RFC822/i});
1860 22         160 $expectation->at($_[1]);
1861            
1862 22         94 my $thisline;
1863 22         80 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1864              
1865            
1866              
1867 22   33     241 while (!$_matched && !$commit)
1868             {
1869            
1870 22 50       57 Parse::RecDescent::_trace(q{Trying production: [/^"RFC822"|^RFC822/i]},
1871             Parse::RecDescent::_tracefirst($_[1]),
1872             q{RFC822},
1873             $tracelevel)
1874             if defined $::RD_TRACE;
1875 22         62 my $thisprod = $thisrule->{"prods"}[0];
1876 22         47 $text = $_[1];
1877 22         38 my $_savetext;
1878 22         43 @item = (q{RFC822});
1879 22         48 %item = (__RULE__ => q{RFC822});
1880 22         35 my $repcount = 0;
1881              
1882              
1883 22 50       43 Parse::RecDescent::_trace(q{Trying terminal: [/^"RFC822"|^RFC822/i]}, Parse::RecDescent::_tracefirst($text),
1884             q{RFC822},
1885             $tracelevel)
1886             if defined $::RD_TRACE;
1887 22         50 undef $lastsep;
1888 22         55 $expectation->is(q{})->at($text);
1889            
1890              
1891 22 50 66     290 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^"RFC822"|^RFC822)/i)
  22 100       294  
1892             {
1893 1 50       7 $text = $lastsep . $text if defined $lastsep;
1894 1         4 $expectation->failed();
1895 1 50       7 Parse::RecDescent::_trace(q{<>},
1896             Parse::RecDescent::_tracefirst($text))
1897             if defined $::RD_TRACE;
1898              
1899 1         4 last;
1900             }
1901 21         132 $current_match = substr($text, $-[0], $+[0] - $-[0]);
1902 21         125 substr($text,0,length($current_match),q{});
1903 21 50       55 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1904             . $current_match . q{])},
1905             Parse::RecDescent::_tracefirst($text))
1906             if defined $::RD_TRACE;
1907 21         74 push @item, $item{__PATTERN1__}=$current_match;
1908            
1909              
1910 21 50       61 Parse::RecDescent::_trace(q{Trying action},
1911             Parse::RecDescent::_tracefirst($text),
1912             q{RFC822},
1913             $tracelevel)
1914             if defined $::RD_TRACE;
1915            
1916              
1917 21 50       63 $_tok = ($_noactions) ? 0 : do { $return = "RFC822" };
  21         47  
1918 21 50       63 unless (defined $_tok)
1919             {
1920 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
1921             if defined $::RD_TRACE;
1922 0         0 last;
1923             }
1924 21 50       55 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1925             . $_tok . q{])},
1926             Parse::RecDescent::_tracefirst($text))
1927             if defined $::RD_TRACE;
1928 21         41 push @item, $_tok;
1929 21         42 $item{__ACTION1__}=$_tok;
1930            
1931              
1932 21 50       49 Parse::RecDescent::_trace(q{>>Matched production: [/^"RFC822"|^RFC822/i]<<},
1933             Parse::RecDescent::_tracefirst($text),
1934             q{RFC822},
1935             $tracelevel)
1936             if defined $::RD_TRACE;
1937              
1938              
1939              
1940 21         31 $_matched = 1;
1941 21         51 last;
1942             }
1943              
1944             splice
1945 22 100       51 @{$thisparser->{deferred}}, $def_at unless $_matched;
  1         3  
1946            
1947 22 100 66     70 unless ( $_matched || defined($score) )
1948             {
1949 1         2 splice @{$thisparser->{deferred}}, $def_at;
  1         3  
1950            
1951              
1952 1         3 $_[1] = $text; # NOT SURE THIS IS NEEDED
1953 1 50       3 Parse::RecDescent::_trace(q{<>},
1954             Parse::RecDescent::_tracefirst($_[1]),
1955             q{RFC822},
1956             $tracelevel)
1957             if defined $::RD_TRACE;
1958 1         6 return undef;
1959             }
1960 21 50 33     61 if (!defined($return) && defined($score))
1961             {
1962 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1963             q{RFC822},
1964             $tracelevel)
1965             if defined $::RD_TRACE;
1966 0         0 $return = $score_return;
1967             }
1968 21         44 splice @{$thisparser->{errors}}, $err_at;
  21         52  
1969 21 50       66 $return = $item[$#item] unless defined $return;
1970 21 50       70 if (defined $::RD_TRACE)
1971             {
1972 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1973             $return . q{])}, "",
1974             q{RFC822},
1975             $tracelevel);
1976 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1977             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1978             Parse::RecDescent::_tracefirst($text),
1979             , q{RFC822},
1980             $tracelevel)
1981             }
1982 21         85 $_[1] = $text;
1983 21         145 return $return;
1984             }
1985              
1986             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
1987             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::RFCNONCOMPLY
1988             {
1989 98     98   171 my $thisparser = $_[0];
1990 1     1   9 use vars q{$tracelevel};
  1         2  
  1         906  
1991 98   50     298 local $tracelevel = ($tracelevel||0)+1;
1992 98         146 $ERRORS = 0;
1993 98         197 my $thisrule = $thisparser->{"rules"}{"RFCNONCOMPLY"};
1994              
1995 98 50       236 Parse::RecDescent::_trace(q{Trying rule: [RFCNONCOMPLY]},
1996             Parse::RecDescent::_tracefirst($_[1]),
1997             q{RFCNONCOMPLY},
1998             $tracelevel)
1999             if defined $::RD_TRACE;
2000              
2001 98         145 my $def_at = @{$thisparser->{deferred}};
  98         183  
2002 98         176 my $err_at = @{$thisparser->{errors}};
  98         180  
2003              
2004 98         247 my $score;
2005             my $score_return;
2006 98         0 my $_tok;
2007 98         150 my $return = undef;
2008 98         143 my $_matched=0;
2009 98         164 my $commit=0;
2010 98         157 my @item = ();
2011 98         202 my %item = ();
2012 98         139 my $repeating = $_[2];
2013 98         197 my $_noactions = $_[3];
2014 98 50       207 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  98         128  
  98         164  
2015 98         204 my $_itempos = $_[5];
2016 98 50       267 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2017 98         225 my $text;
2018             my $lastsep;
2019 98         0 my $current_match;
2020 98         288 my $expectation = new Parse::RecDescent::Expectation(q{/^\\(\\)/i});
2021 98         757 $expectation->at($_[1]);
2022            
2023 98         389 my $thisline;
2024 98         333 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2025              
2026            
2027              
2028 98   33     783 while (!$_matched && !$commit)
2029             {
2030            
2031 98 50       226 Parse::RecDescent::_trace(q{Trying production: [/^\\(\\)/i]},
2032             Parse::RecDescent::_tracefirst($_[1]),
2033             q{RFCNONCOMPLY},
2034             $tracelevel)
2035             if defined $::RD_TRACE;
2036 98         210 my $thisprod = $thisrule->{"prods"}[0];
2037 98         166 $text = $_[1];
2038 98         149 my $_savetext;
2039 98         204 @item = (q{RFCNONCOMPLY});
2040 98         202 %item = (__RULE__ => q{RFCNONCOMPLY});
2041 98         158 my $repcount = 0;
2042              
2043              
2044 98 50       189 Parse::RecDescent::_trace(q{Trying terminal: [/^\\(\\)/i]}, Parse::RecDescent::_tracefirst($text),
2045             q{RFCNONCOMPLY},
2046             $tracelevel)
2047             if defined $::RD_TRACE;
2048 98         188 undef $lastsep;
2049 98         208 $expectation->is(q{})->at($text);
2050            
2051              
2052 98 50 66     1143 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^\(\))/i)
  98 100       902  
2053             {
2054 94 50       386 $text = $lastsep . $text if defined $lastsep;
2055 94         302 $expectation->failed();
2056 94 50       380 Parse::RecDescent::_trace(q{<>},
2057             Parse::RecDescent::_tracefirst($text))
2058             if defined $::RD_TRACE;
2059              
2060 94         223 last;
2061             }
2062 4         24 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2063 4         15 substr($text,0,length($current_match),q{});
2064 4 50       15 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2065             . $current_match . q{])},
2066             Parse::RecDescent::_tracefirst($text))
2067             if defined $::RD_TRACE;
2068 4         13 push @item, $item{__PATTERN1__}=$current_match;
2069            
2070              
2071 4 50       14 Parse::RecDescent::_trace(q{Trying action},
2072             Parse::RecDescent::_tracefirst($text),
2073             q{RFCNONCOMPLY},
2074             $tracelevel)
2075             if defined $::RD_TRACE;
2076            
2077              
2078 4 50       11 $_tok = ($_noactions) ? 0 : do { $return = "NIL" };
  4         12  
2079 4 50       15 unless (defined $_tok)
2080             {
2081 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2082             if defined $::RD_TRACE;
2083 0         0 last;
2084             }
2085 4 50       13 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2086             . $_tok . q{])},
2087             Parse::RecDescent::_tracefirst($text))
2088             if defined $::RD_TRACE;
2089 4         9 push @item, $_tok;
2090 4         10 $item{__ACTION1__}=$_tok;
2091            
2092              
2093 4 50       12 Parse::RecDescent::_trace(q{>>Matched production: [/^\\(\\)/i]<<},
2094             Parse::RecDescent::_tracefirst($text),
2095             q{RFCNONCOMPLY},
2096             $tracelevel)
2097             if defined $::RD_TRACE;
2098              
2099              
2100              
2101 4         10 $_matched = 1;
2102 4         11 last;
2103             }
2104              
2105             splice
2106 98 100       231 @{$thisparser->{deferred}}, $def_at unless $_matched;
  94         212  
2107            
2108 98 100 66     361 unless ( $_matched || defined($score) )
2109             {
2110 94         135 splice @{$thisparser->{deferred}}, $def_at;
  94         217  
2111            
2112              
2113 94         175 $_[1] = $text; # NOT SURE THIS IS NEEDED
2114 94 50       198 Parse::RecDescent::_trace(q{<>},
2115             Parse::RecDescent::_tracefirst($_[1]),
2116             q{RFCNONCOMPLY},
2117             $tracelevel)
2118             if defined $::RD_TRACE;
2119 94         518 return undef;
2120             }
2121 4 50 33     18 if (!defined($return) && defined($score))
2122             {
2123 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2124             q{RFCNONCOMPLY},
2125             $tracelevel)
2126             if defined $::RD_TRACE;
2127 0         0 $return = $score_return;
2128             }
2129 4         8 splice @{$thisparser->{errors}}, $err_at;
  4         11  
2130 4 50       13 $return = $item[$#item] unless defined $return;
2131 4 50       13 if (defined $::RD_TRACE)
2132             {
2133 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2134             $return . q{])}, "",
2135             q{RFCNONCOMPLY},
2136             $tracelevel);
2137 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2138             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2139             Parse::RecDescent::_tracefirst($text),
2140             , q{RFCNONCOMPLY},
2141             $tracelevel)
2142             }
2143 4         13 $_[1] = $text;
2144 4         25 return $return;
2145             }
2146              
2147             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
2148             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::SINGLE_QUOTED_STRING
2149             {
2150 184     184   295 my $thisparser = $_[0];
2151 1     1   9 use vars q{$tracelevel};
  1         2  
  1         1182  
2152 184   50     419 local $tracelevel = ($tracelevel||0)+1;
2153 184         275 $ERRORS = 0;
2154 184         339 my $thisrule = $thisparser->{"rules"}{"SINGLE_QUOTED_STRING"};
2155              
2156 184 50       347 Parse::RecDescent::_trace(q{Trying rule: [SINGLE_QUOTED_STRING]},
2157             Parse::RecDescent::_tracefirst($_[1]),
2158             q{SINGLE_QUOTED_STRING},
2159             $tracelevel)
2160             if defined $::RD_TRACE;
2161              
2162 184         253 my $def_at = @{$thisparser->{deferred}};
  184         362  
2163 184         348 my $err_at = @{$thisparser->{errors}};
  184         341  
2164              
2165 184         421 my $score;
2166             my $score_return;
2167 184         0 my $_tok;
2168 184         269 my $return = undef;
2169 184         257 my $_matched=0;
2170 184         254 my $commit=0;
2171 184         334 my @item = ();
2172 184         278 my %item = ();
2173 184         303 my $repeating = $_[2];
2174 184         250 my $_noactions = $_[3];
2175 184 50       367 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  184         246  
  184         370  
2176 184         282 my $_itempos = $_[5];
2177 184 50       412 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2178 184         438 my $text;
2179             my $lastsep;
2180 184         0 my $current_match;
2181 184         494 my $expectation = new Parse::RecDescent::Expectation(q{'''});
2182 184         1211 $expectation->at($_[1]);
2183            
2184 184         750 my $thisline;
2185 184         652 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2186              
2187            
2188              
2189 184   33     1499 while (!$_matched && !$commit)
2190             {
2191            
2192 184 50       401 Parse::RecDescent::_trace(q{Trying production: [''' /(?:\\\\['\\\\]|[^'])*/ ''']},
2193             Parse::RecDescent::_tracefirst($_[1]),
2194             q{SINGLE_QUOTED_STRING},
2195             $tracelevel)
2196             if defined $::RD_TRACE;
2197 184         431 my $thisprod = $thisrule->{"prods"}[0];
2198 184         291 $text = $_[1];
2199 184         261 my $_savetext;
2200 184         340 @item = (q{SINGLE_QUOTED_STRING});
2201 184         330 %item = (__RULE__ => q{SINGLE_QUOTED_STRING});
2202 184         297 my $repcount = 0;
2203              
2204              
2205 184 50       355 Parse::RecDescent::_trace(q{Trying terminal: [''']},
2206             Parse::RecDescent::_tracefirst($text),
2207             q{SINGLE_QUOTED_STRING},
2208             $tracelevel)
2209             if defined $::RD_TRACE;
2210 184         370 undef $lastsep;
2211 184         408 $expectation->is(q{})->at($text);
2212            
2213              
2214 184 100 33     1952 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "'"; 1 } and
  184 100 66     1133  
  184   66     337  
  184         1413  
2215             substr($text,0,length($_tok)) eq $_tok and
2216 1         3 do { substr($text,0,length($_tok)) = ""; 1; }
  1         3  
2217             )
2218             {
2219 183 50       621 $text = $lastsep . $text if defined $lastsep;
2220            
2221 183         595 $expectation->failed();
2222 183 50       731 Parse::RecDescent::_trace(q{<>},
2223             Parse::RecDescent::_tracefirst($text))
2224             if defined $::RD_TRACE;
2225 183         393 last;
2226             }
2227 1 50       4 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2228             . $_tok . q{])},
2229             Parse::RecDescent::_tracefirst($text))
2230             if defined $::RD_TRACE;
2231 1         4 push @item, $item{__STRING1__}=$_tok;
2232            
2233              
2234 1 50       3 Parse::RecDescent::_trace(q{Trying terminal: [/(?:\\\\['\\\\]|[^'])*/]}, Parse::RecDescent::_tracefirst($text),
2235             q{SINGLE_QUOTED_STRING},
2236             $tracelevel)
2237             if defined $::RD_TRACE;
2238 1         2 undef $lastsep;
2239 1         4 $expectation->is(q{/(?:\\\\['\\\\]|[^'])*/})->at($text);
2240            
2241              
2242 1 50 33     23 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:(?:\\['\\]|[^'])*)/)
  1 50       36  
2243             {
2244 0 0       0 $text = $lastsep . $text if defined $lastsep;
2245 0         0 $expectation->failed();
2246 0 0       0 Parse::RecDescent::_trace(q{<>},
2247             Parse::RecDescent::_tracefirst($text))
2248             if defined $::RD_TRACE;
2249              
2250 0         0 last;
2251             }
2252 1         10 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2253 1         5 substr($text,0,length($current_match),q{});
2254 1 50       3 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2255             . $current_match . q{])},
2256             Parse::RecDescent::_tracefirst($text))
2257             if defined $::RD_TRACE;
2258 1         5 push @item, $item{__PATTERN1__}=$current_match;
2259            
2260              
2261 1 50       3 Parse::RecDescent::_trace(q{Trying terminal: [''']},
2262             Parse::RecDescent::_tracefirst($text),
2263             q{SINGLE_QUOTED_STRING},
2264             $tracelevel)
2265             if defined $::RD_TRACE;
2266 1         2 undef $lastsep;
2267 1         4 $expectation->is(q{'''})->at($text);
2268            
2269              
2270 1 50 33     67 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "'"; 1 } and
  1 50 33     20  
  1   33     3  
  1         8  
2271             substr($text,0,length($_tok)) eq $_tok and
2272 1         3 do { substr($text,0,length($_tok)) = ""; 1; }
  1         5  
2273             )
2274             {
2275 0 0       0 $text = $lastsep . $text if defined $lastsep;
2276            
2277 0         0 $expectation->failed();
2278 0 0       0 Parse::RecDescent::_trace(q{<>},
2279             Parse::RecDescent::_tracefirst($text))
2280             if defined $::RD_TRACE;
2281 0         0 last;
2282             }
2283 1 50       4 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2284             . $_tok . q{])},
2285             Parse::RecDescent::_tracefirst($text))
2286             if defined $::RD_TRACE;
2287 1         4 push @item, $item{__STRING2__}=$_tok;
2288            
2289              
2290 1 50       4 Parse::RecDescent::_trace(q{Trying action},
2291             Parse::RecDescent::_tracefirst($text),
2292             q{SINGLE_QUOTED_STRING},
2293             $tracelevel)
2294             if defined $::RD_TRACE;
2295            
2296              
2297 1 50       3 $_tok = ($_noactions) ? 0 : do { $return = $item{__PATTERN1__} };
  1         3  
2298 1 50       4 unless (defined $_tok)
2299             {
2300 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2301             if defined $::RD_TRACE;
2302 0         0 last;
2303             }
2304 1 50       3 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2305             . $_tok . q{])},
2306             Parse::RecDescent::_tracefirst($text))
2307             if defined $::RD_TRACE;
2308 1         3 push @item, $_tok;
2309 1         2 $item{__ACTION1__}=$_tok;
2310            
2311              
2312 1 50       11 Parse::RecDescent::_trace(q{>>Matched production: [''' /(?:\\\\['\\\\]|[^'])*/ ''']<<},
2313             Parse::RecDescent::_tracefirst($text),
2314             q{SINGLE_QUOTED_STRING},
2315             $tracelevel)
2316             if defined $::RD_TRACE;
2317              
2318              
2319              
2320 1         3 $_matched = 1;
2321 1         3 last;
2322             }
2323              
2324             splice
2325 184 100       407 @{$thisparser->{deferred}}, $def_at unless $_matched;
  183         403  
2326            
2327 184 100 66     684 unless ( $_matched || defined($score) )
2328             {
2329 183         307 splice @{$thisparser->{deferred}}, $def_at;
  183         336  
2330            
2331              
2332 183         329 $_[1] = $text; # NOT SURE THIS IS NEEDED
2333 183 50       352 Parse::RecDescent::_trace(q{<>},
2334             Parse::RecDescent::_tracefirst($_[1]),
2335             q{SINGLE_QUOTED_STRING},
2336             $tracelevel)
2337             if defined $::RD_TRACE;
2338 183         889 return undef;
2339             }
2340 1 50 33     5 if (!defined($return) && defined($score))
2341             {
2342 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2343             q{SINGLE_QUOTED_STRING},
2344             $tracelevel)
2345             if defined $::RD_TRACE;
2346 0         0 $return = $score_return;
2347             }
2348 1         2 splice @{$thisparser->{errors}}, $err_at;
  1         3  
2349 1 50       4 $return = $item[$#item] unless defined $return;
2350 1 50       11 if (defined $::RD_TRACE)
2351             {
2352 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2353             $return . q{])}, "",
2354             q{SINGLE_QUOTED_STRING},
2355             $tracelevel);
2356 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2357             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2358             Parse::RecDescent::_tracefirst($text),
2359             , q{SINGLE_QUOTED_STRING},
2360             $tracelevel)
2361             }
2362 1         5 $_[1] = $text;
2363 1         9 return $return;
2364             }
2365              
2366             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
2367             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING
2368             {
2369 905     905   1555 my $thisparser = $_[0];
2370 1     1   17 use vars q{$tracelevel};
  1         4  
  1         370  
2371 905   50     2052 local $tracelevel = ($tracelevel||0)+1;
2372 905         1343 $ERRORS = 0;
2373 905         1740 my $thisrule = $thisparser->{"rules"}{"STRING"};
2374              
2375 905 50       1726 Parse::RecDescent::_trace(q{Trying rule: [STRING]},
2376             Parse::RecDescent::_tracefirst($_[1]),
2377             q{STRING},
2378             $tracelevel)
2379             if defined $::RD_TRACE;
2380              
2381 905         1278 my $def_at = @{$thisparser->{deferred}};
  905         1507  
2382 905         1328 my $err_at = @{$thisparser->{errors}};
  905         1526  
2383              
2384 905         2200 my $score;
2385             my $score_return;
2386 905         0 my $_tok;
2387 905         1300 my $return = undef;
2388 905         1326 my $_matched=0;
2389 905         1306 my $commit=0;
2390 905         1527 my @item = ();
2391 905         1492 my %item = ();
2392 905         1481 my $repeating = $_[2];
2393 905         1360 my $_noactions = $_[3];
2394 905 50       1810 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  905         1215  
  905         1671  
2395 905         1450 my $_itempos = $_[5];
2396 905 50       2015 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2397 905         2023 my $text;
2398             my $lastsep;
2399 905         0 my $current_match;
2400 905         2131 my $expectation = new Parse::RecDescent::Expectation(q{DOUBLE_QUOTED_STRING, or SINGLE_QUOTED_STRING, or BARESTRING});
2401 905         5780 $expectation->at($_[1]);
2402            
2403 905         3697 my $thisline;
2404 905         3264 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2405              
2406            
2407              
2408 905   33     6803 while (!$_matched && !$commit)
2409             {
2410            
2411 905 50       1965 Parse::RecDescent::_trace(q{Trying production: [DOUBLE_QUOTED_STRING]},
2412             Parse::RecDescent::_tracefirst($_[1]),
2413             q{STRING},
2414             $tracelevel)
2415             if defined $::RD_TRACE;
2416 905         1761 my $thisprod = $thisrule->{"prods"}[0];
2417 905         1618 $text = $_[1];
2418 905         1372 my $_savetext;
2419 905         1747 @item = (q{STRING});
2420 905         1753 %item = (__RULE__ => q{STRING});
2421 905         1345 my $repcount = 0;
2422              
2423              
2424 905 50       1949 Parse::RecDescent::_trace(q{Trying subrule: [DOUBLE_QUOTED_STRING]},
2425             Parse::RecDescent::_tracefirst($text),
2426             q{STRING},
2427             $tracelevel)
2428             if defined $::RD_TRACE;
2429 1     1   8 if (1) { no strict qw{refs};
  1         21  
  1         305  
  905         1269  
2430 905         2051 $expectation->is(q{})->at($text);
2431 905 100   905   8232 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::DOUBLE_QUOTED_STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  905         1727  
2432             {
2433            
2434 184 50       489 Parse::RecDescent::_trace(q{<>},
2435             Parse::RecDescent::_tracefirst($text),
2436             q{STRING},
2437             $tracelevel)
2438             if defined $::RD_TRACE;
2439 184         519 $expectation->failed();
2440 184         628 last;
2441             }
2442 721 50       2633 Parse::RecDescent::_trace(q{>>Matched subrule: [DOUBLE_QUOTED_STRING]<< (return value: [}
2443             . $_tok . q{]},
2444              
2445             Parse::RecDescent::_tracefirst($text),
2446             q{STRING},
2447             $tracelevel)
2448             if defined $::RD_TRACE;
2449 721         1513 $item{q{DOUBLE_QUOTED_STRING}} = $_tok;
2450 721         1409 push @item, $_tok;
2451            
2452             }
2453              
2454 721 50       1377 Parse::RecDescent::_trace(q{>>Matched production: [DOUBLE_QUOTED_STRING]<<},
2455             Parse::RecDescent::_tracefirst($text),
2456             q{STRING},
2457             $tracelevel)
2458             if defined $::RD_TRACE;
2459              
2460              
2461              
2462 721         1122 $_matched = 1;
2463 721         1132 last;
2464             }
2465              
2466             splice
2467 905 100       2195 @{$thisparser->{deferred}}, $def_at unless $_matched;
  184         369  
2468            
2469 905   66     2345 while (!$_matched && !$commit)
2470             {
2471            
2472 184 50       379 Parse::RecDescent::_trace(q{Trying production: [SINGLE_QUOTED_STRING]},
2473             Parse::RecDescent::_tracefirst($_[1]),
2474             q{STRING},
2475             $tracelevel)
2476             if defined $::RD_TRACE;
2477 184         351 my $thisprod = $thisrule->{"prods"}[1];
2478 184         300 $text = $_[1];
2479 184         266 my $_savetext;
2480 184         443 @item = (q{STRING});
2481 184         419 %item = (__RULE__ => q{STRING});
2482 184         267 my $repcount = 0;
2483              
2484              
2485 184 50       376 Parse::RecDescent::_trace(q{Trying subrule: [SINGLE_QUOTED_STRING]},
2486             Parse::RecDescent::_tracefirst($text),
2487             q{STRING},
2488             $tracelevel)
2489             if defined $::RD_TRACE;
2490 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         304  
  184         261  
2491 184         468 $expectation->is(q{})->at($text);
2492 184 100   184   1748 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::SINGLE_QUOTED_STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  184         337  
2493             {
2494            
2495 183 50       350 Parse::RecDescent::_trace(q{<>},
2496             Parse::RecDescent::_tracefirst($text),
2497             q{STRING},
2498             $tracelevel)
2499             if defined $::RD_TRACE;
2500 183         480 $expectation->failed();
2501 183         593 last;
2502             }
2503 1 50       5 Parse::RecDescent::_trace(q{>>Matched subrule: [SINGLE_QUOTED_STRING]<< (return value: [}
2504             . $_tok . q{]},
2505              
2506             Parse::RecDescent::_tracefirst($text),
2507             q{STRING},
2508             $tracelevel)
2509             if defined $::RD_TRACE;
2510 1         3 $item{q{SINGLE_QUOTED_STRING}} = $_tok;
2511 1         3 push @item, $_tok;
2512            
2513             }
2514              
2515 1 50       3 Parse::RecDescent::_trace(q{>>Matched production: [SINGLE_QUOTED_STRING]<<},
2516             Parse::RecDescent::_tracefirst($text),
2517             q{STRING},
2518             $tracelevel)
2519             if defined $::RD_TRACE;
2520              
2521              
2522              
2523 1         1 $_matched = 1;
2524 1         2 last;
2525             }
2526              
2527             splice
2528 905 100       2001 @{$thisparser->{deferred}}, $def_at unless $_matched;
  183         334  
2529            
2530 905   66     2286 while (!$_matched && !$commit)
2531             {
2532            
2533 183 50       395 Parse::RecDescent::_trace(q{Trying production: [BARESTRING]},
2534             Parse::RecDescent::_tracefirst($_[1]),
2535             q{STRING},
2536             $tracelevel)
2537             if defined $::RD_TRACE;
2538 183         346 my $thisprod = $thisrule->{"prods"}[2];
2539 183         328 $text = $_[1];
2540 183         265 my $_savetext;
2541 183         429 @item = (q{STRING});
2542 183         388 %item = (__RULE__ => q{STRING});
2543 183         309 my $repcount = 0;
2544              
2545              
2546 183 50       358 Parse::RecDescent::_trace(q{Trying subrule: [BARESTRING]},
2547             Parse::RecDescent::_tracefirst($text),
2548             q{STRING},
2549             $tracelevel)
2550             if defined $::RD_TRACE;
2551 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         546  
  183         267  
2552 183         400 $expectation->is(q{})->at($text);
2553 183 50   183   1767 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::BARESTRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  183         371  
2554             {
2555            
2556 183 50       386 Parse::RecDescent::_trace(q{<>},
2557             Parse::RecDescent::_tracefirst($text),
2558             q{STRING},
2559             $tracelevel)
2560             if defined $::RD_TRACE;
2561 183         502 $expectation->failed();
2562 183         681 last;
2563             }
2564 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [BARESTRING]<< (return value: [}
2565             . $_tok . q{]},
2566              
2567             Parse::RecDescent::_tracefirst($text),
2568             q{STRING},
2569             $tracelevel)
2570             if defined $::RD_TRACE;
2571 0         0 $item{q{BARESTRING}} = $_tok;
2572 0         0 push @item, $_tok;
2573            
2574             }
2575              
2576 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [BARESTRING]<<},
2577             Parse::RecDescent::_tracefirst($text),
2578             q{STRING},
2579             $tracelevel)
2580             if defined $::RD_TRACE;
2581              
2582              
2583              
2584 0         0 $_matched = 1;
2585 0         0 last;
2586             }
2587              
2588             splice
2589 905 100       1970 @{$thisparser->{deferred}}, $def_at unless $_matched;
  183         355  
2590            
2591 905 100 66     2177 unless ( $_matched || defined($score) )
2592             {
2593 183         256 splice @{$thisparser->{deferred}}, $def_at;
  183         309  
2594            
2595              
2596 183         417 $_[1] = $text; # NOT SURE THIS IS NEEDED
2597 183 50       388 Parse::RecDescent::_trace(q{<>},
2598             Parse::RecDescent::_tracefirst($_[1]),
2599             q{STRING},
2600             $tracelevel)
2601             if defined $::RD_TRACE;
2602 183         963 return undef;
2603             }
2604 722 50 33     2691 if (!defined($return) && defined($score))
2605             {
2606 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2607             q{STRING},
2608             $tracelevel)
2609             if defined $::RD_TRACE;
2610 0         0 $return = $score_return;
2611             }
2612 722         1048 splice @{$thisparser->{errors}}, $err_at;
  722         1574  
2613 722 50       1811 $return = $item[$#item] unless defined $return;
2614 722 50       1730 if (defined $::RD_TRACE)
2615             {
2616 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2617             $return . q{])}, "",
2618             q{STRING},
2619             $tracelevel);
2620 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2621             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2622             Parse::RecDescent::_tracefirst($text),
2623             , q{STRING},
2624             $tracelevel)
2625             }
2626 722         1214 $_[1] = $text;
2627 722         4088 return $return;
2628             }
2629              
2630             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
2631             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRINGS
2632             {
2633 58     58   115 my $thisparser = $_[0];
2634 1     1   8 use vars q{$tracelevel};
  1         2  
  1         1190  
2635 58   50     136 local $tracelevel = ($tracelevel||0)+1;
2636 58         119 $ERRORS = 0;
2637 58         118 my $thisrule = $thisparser->{"rules"}{"STRINGS"};
2638              
2639 58 50       132 Parse::RecDescent::_trace(q{Trying rule: [STRINGS]},
2640             Parse::RecDescent::_tracefirst($_[1]),
2641             q{STRINGS},
2642             $tracelevel)
2643             if defined $::RD_TRACE;
2644              
2645 58         91 my $def_at = @{$thisparser->{deferred}};
  58         102  
2646 58         89 my $err_at = @{$thisparser->{errors}};
  58         124  
2647              
2648 58         144 my $score;
2649             my $score_return;
2650 58         0 my $_tok;
2651 58         101 my $return = undef;
2652 58         83 my $_matched=0;
2653 58         94 my $commit=0;
2654 58         93 my @item = ();
2655 58         94 my %item = ();
2656 58         100 my $repeating = $_[2];
2657 58         88 my $_noactions = $_[3];
2658 58 50       123 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  58         79  
  58         98  
2659 58         94 my $_itempos = $_[5];
2660 58 50       138 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2661 58         152 my $text;
2662             my $lastsep;
2663 58         0 my $current_match;
2664 58         160 my $expectation = new Parse::RecDescent::Expectation(q{'('});
2665 58         389 $expectation->at($_[1]);
2666            
2667 58         242 my $thisline;
2668 58         207 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2669              
2670            
2671              
2672 58   33     440 while (!$_matched && !$commit)
2673             {
2674            
2675 58 50       124 Parse::RecDescent::_trace(q{Trying production: ['(' STRING ')']},
2676             Parse::RecDescent::_tracefirst($_[1]),
2677             q{STRINGS},
2678             $tracelevel)
2679             if defined $::RD_TRACE;
2680 58         143 my $thisprod = $thisrule->{"prods"}[0];
2681 58         116 $text = $_[1];
2682 58         78 my $_savetext;
2683 58         113 @item = (q{STRINGS});
2684 58         103 %item = (__RULE__ => q{STRINGS});
2685 58         83 my $repcount = 0;
2686              
2687              
2688 58 50       122 Parse::RecDescent::_trace(q{Trying terminal: ['(']},
2689             Parse::RecDescent::_tracefirst($text),
2690             q{STRINGS},
2691             $tracelevel)
2692             if defined $::RD_TRACE;
2693 58         120 undef $lastsep;
2694 58         140 $expectation->is(q{})->at($text);
2695            
2696              
2697 58 100 33     677 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and
  58 100 66     344  
  58   66     110  
  58         318  
2698             substr($text,0,length($_tok)) eq $_tok and
2699 1         4 do { substr($text,0,length($_tok)) = ""; 1; }
  1         5  
2700             )
2701             {
2702 57 50       213 $text = $lastsep . $text if defined $lastsep;
2703            
2704 57         214 $expectation->failed();
2705 57 50       232 Parse::RecDescent::_trace(q{<>},
2706             Parse::RecDescent::_tracefirst($text))
2707             if defined $::RD_TRACE;
2708 57         108 last;
2709             }
2710 1 50       4 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2711             . $_tok . q{])},
2712             Parse::RecDescent::_tracefirst($text))
2713             if defined $::RD_TRACE;
2714 1         4 push @item, $item{__STRING1__}=$_tok;
2715            
2716              
2717 1 50       5 Parse::RecDescent::_trace(q{Trying repeated subrule: [STRING]},
2718             Parse::RecDescent::_tracefirst($text),
2719             q{STRINGS},
2720             $tracelevel)
2721             if defined $::RD_TRACE;
2722 1         3 $expectation->is(q{STRING})->at($text);
2723            
2724 1 50   2   17 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
  2         14  
2725             {
2726 0 0       0 Parse::RecDescent::_trace(q{<>},
2727             Parse::RecDescent::_tracefirst($text),
2728             q{STRINGS},
2729             $tracelevel)
2730             if defined $::RD_TRACE;
2731 0         0 last;
2732             }
2733 1 50       17 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [STRING]<< (}
2734             . @$_tok . q{ times)},
2735              
2736             Parse::RecDescent::_tracefirst($text),
2737             q{STRINGS},
2738             $tracelevel)
2739             if defined $::RD_TRACE;
2740 1         5 $item{q{STRING(s)}} = $_tok;
2741 1         3 push @item, $_tok;
2742            
2743              
2744              
2745 1 50       12 Parse::RecDescent::_trace(q{Trying terminal: [')']},
2746             Parse::RecDescent::_tracefirst($text),
2747             q{STRINGS},
2748             $tracelevel)
2749             if defined $::RD_TRACE;
2750 1         2 undef $lastsep;
2751 1         5 $expectation->is(q{')'})->at($text);
2752            
2753              
2754 1 50 33     25 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and
  1 50 33     13  
  1   33     3  
  1         19  
2755             substr($text,0,length($_tok)) eq $_tok and
2756 1         3 do { substr($text,0,length($_tok)) = ""; 1; }
  1         22  
2757             )
2758             {
2759 0 0       0 $text = $lastsep . $text if defined $lastsep;
2760            
2761 0         0 $expectation->failed();
2762 0 0       0 Parse::RecDescent::_trace(q{<>},
2763             Parse::RecDescent::_tracefirst($text))
2764             if defined $::RD_TRACE;
2765 0         0 last;
2766             }
2767 1 50       4 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2768             . $_tok . q{])},
2769             Parse::RecDescent::_tracefirst($text))
2770             if defined $::RD_TRACE;
2771 1         4 push @item, $item{__STRING2__}=$_tok;
2772            
2773              
2774 1 50       4 Parse::RecDescent::_trace(q{Trying action},
2775             Parse::RecDescent::_tracefirst($text),
2776             q{STRINGS},
2777             $tracelevel)
2778             if defined $::RD_TRACE;
2779            
2780              
2781 1 50       15 $_tok = ($_noactions) ? 0 : do { $return = $item{'STRING(s)'} };
  1         4  
2782 1 50       4 unless (defined $_tok)
2783             {
2784 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2785             if defined $::RD_TRACE;
2786 0         0 last;
2787             }
2788 1 50       3 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2789             . $_tok . q{])},
2790             Parse::RecDescent::_tracefirst($text))
2791             if defined $::RD_TRACE;
2792 1         3 push @item, $_tok;
2793 1         2 $item{__ACTION1__}=$_tok;
2794            
2795              
2796 1 50       4 Parse::RecDescent::_trace(q{>>Matched production: ['(' STRING ')']<<},
2797             Parse::RecDescent::_tracefirst($text),
2798             q{STRINGS},
2799             $tracelevel)
2800             if defined $::RD_TRACE;
2801              
2802              
2803              
2804 1         3 $_matched = 1;
2805 1         3 last;
2806             }
2807              
2808             splice
2809 58 100       138 @{$thisparser->{deferred}}, $def_at unless $_matched;
  57         158  
2810            
2811 58 100 66     203 unless ( $_matched || defined($score) )
2812             {
2813 57         88 splice @{$thisparser->{deferred}}, $def_at;
  57         106  
2814            
2815              
2816 57         96 $_[1] = $text; # NOT SURE THIS IS NEEDED
2817 57 50       119 Parse::RecDescent::_trace(q{<>},
2818             Parse::RecDescent::_tracefirst($_[1]),
2819             q{STRINGS},
2820             $tracelevel)
2821             if defined $::RD_TRACE;
2822 57         330 return undef;
2823             }
2824 1 50 33     5 if (!defined($return) && defined($score))
2825             {
2826 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2827             q{STRINGS},
2828             $tracelevel)
2829             if defined $::RD_TRACE;
2830 0         0 $return = $score_return;
2831             }
2832 1         2 splice @{$thisparser->{errors}}, $err_at;
  1         3  
2833 1 50       4 $return = $item[$#item] unless defined $return;
2834 1 50       3 if (defined $::RD_TRACE)
2835             {
2836 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2837             $return . q{])}, "",
2838             q{STRINGS},
2839             $tracelevel);
2840 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2841             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2842             Parse::RecDescent::_tracefirst($text),
2843             , q{STRINGS},
2844             $tracelevel)
2845             }
2846 1         4 $_[1] = $text;
2847 1         25 return $return;
2848             }
2849              
2850             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
2851             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::TEXT
2852             {
2853 94     94   191 my $thisparser = $_[0];
2854 1     1   9 use vars q{$tracelevel};
  1         2  
  1         881  
2855 94   50     215 local $tracelevel = ($tracelevel||0)+1;
2856 94         161 $ERRORS = 0;
2857 94         197 my $thisrule = $thisparser->{"rules"}{"TEXT"};
2858              
2859 94 50       202 Parse::RecDescent::_trace(q{Trying rule: [TEXT]},
2860             Parse::RecDescent::_tracefirst($_[1]),
2861             q{TEXT},
2862             $tracelevel)
2863             if defined $::RD_TRACE;
2864              
2865 94         141 my $def_at = @{$thisparser->{deferred}};
  94         156  
2866 94         143 my $err_at = @{$thisparser->{errors}};
  94         152  
2867              
2868 94         266 my $score;
2869             my $score_return;
2870 94         0 my $_tok;
2871 94         141 my $return = undef;
2872 94         142 my $_matched=0;
2873 94         157 my $commit=0;
2874 94         201 my @item = ();
2875 94         154 my %item = ();
2876 94         140 my $repeating = $_[2];
2877 94         133 my $_noactions = $_[3];
2878 94 50       218 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  94         141  
  94         185  
2879 94         145 my $_itempos = $_[5];
2880 94 50       197 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2881 94         235 my $text;
2882             my $lastsep;
2883 94         0 my $current_match;
2884 94         225 my $expectation = new Parse::RecDescent::Expectation(q{/^"TEXT"|^TEXT/i});
2885 94         583 $expectation->at($_[1]);
2886            
2887 94         401 my $thisline;
2888 94         278 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2889              
2890            
2891              
2892 94   33     691 while (!$_matched && !$commit)
2893             {
2894            
2895 94 50       189 Parse::RecDescent::_trace(q{Trying production: [/^"TEXT"|^TEXT/i]},
2896             Parse::RecDescent::_tracefirst($_[1]),
2897             q{TEXT},
2898             $tracelevel)
2899             if defined $::RD_TRACE;
2900 94         192 my $thisprod = $thisrule->{"prods"}[0];
2901 94         170 $text = $_[1];
2902 94         144 my $_savetext;
2903 94         186 @item = (q{TEXT});
2904 94         192 %item = (__RULE__ => q{TEXT});
2905 94         130 my $repcount = 0;
2906              
2907              
2908 94 50       203 Parse::RecDescent::_trace(q{Trying terminal: [/^"TEXT"|^TEXT/i]}, Parse::RecDescent::_tracefirst($text),
2909             q{TEXT},
2910             $tracelevel)
2911             if defined $::RD_TRACE;
2912 94         182 undef $lastsep;
2913 94         235 $expectation->is(q{})->at($text);
2914            
2915              
2916 94 50 66     1139 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^"TEXT"|^TEXT)/i)
  94 100       889  
2917             {
2918 53 50       220 $text = $lastsep . $text if defined $lastsep;
2919 53         179 $expectation->failed();
2920 53 50       237 Parse::RecDescent::_trace(q{<>},
2921             Parse::RecDescent::_tracefirst($text))
2922             if defined $::RD_TRACE;
2923              
2924 53         120 last;
2925             }
2926 41         223 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2927 41         180 substr($text,0,length($current_match),q{});
2928 41 50       108 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2929             . $current_match . q{])},
2930             Parse::RecDescent::_tracefirst($text))
2931             if defined $::RD_TRACE;
2932 41         130 push @item, $item{__PATTERN1__}=$current_match;
2933            
2934              
2935 41 50       97 Parse::RecDescent::_trace(q{Trying action},
2936             Parse::RecDescent::_tracefirst($text),
2937             q{TEXT},
2938             $tracelevel)
2939             if defined $::RD_TRACE;
2940            
2941              
2942 41 50       84 $_tok = ($_noactions) ? 0 : do { $return = "TEXT" };
  41         129  
2943 41 50       138 unless (defined $_tok)
2944             {
2945 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2946             if defined $::RD_TRACE;
2947 0         0 last;
2948             }
2949 41 50       92 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2950             . $_tok . q{])},
2951             Parse::RecDescent::_tracefirst($text))
2952             if defined $::RD_TRACE;
2953 41         89 push @item, $_tok;
2954 41         82 $item{__ACTION1__}=$_tok;
2955            
2956              
2957 41 50       116 Parse::RecDescent::_trace(q{>>Matched production: [/^"TEXT"|^TEXT/i]<<},
2958             Parse::RecDescent::_tracefirst($text),
2959             q{TEXT},
2960             $tracelevel)
2961             if defined $::RD_TRACE;
2962              
2963              
2964              
2965 41         65 $_matched = 1;
2966 41         87 last;
2967             }
2968              
2969             splice
2970 94 100       226 @{$thisparser->{deferred}}, $def_at unless $_matched;
  53         127  
2971            
2972 94 100 66     316 unless ( $_matched || defined($score) )
2973             {
2974 53         75 splice @{$thisparser->{deferred}}, $def_at;
  53         105  
2975            
2976              
2977 53         115 $_[1] = $text; # NOT SURE THIS IS NEEDED
2978 53 50       121 Parse::RecDescent::_trace(q{<>},
2979             Parse::RecDescent::_tracefirst($_[1]),
2980             q{TEXT},
2981             $tracelevel)
2982             if defined $::RD_TRACE;
2983 53         295 return undef;
2984             }
2985 41 50 33     138 if (!defined($return) && defined($score))
2986             {
2987 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2988             q{TEXT},
2989             $tracelevel)
2990             if defined $::RD_TRACE;
2991 0         0 $return = $score_return;
2992             }
2993 41         71 splice @{$thisparser->{errors}}, $err_at;
  41         100  
2994 41 50       86 $return = $item[$#item] unless defined $return;
2995 41 50       92 if (defined $::RD_TRACE)
2996             {
2997 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2998             $return . q{])}, "",
2999             q{TEXT},
3000             $tracelevel);
3001 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3002             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3003             Parse::RecDescent::_tracefirst($text),
3004             , q{TEXT},
3005             $tracelevel)
3006             }
3007 41         138 $_[1] = $text;
3008 41         337 return $return;
3009             }
3010              
3011             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
3012             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::addressstruct
3013             {
3014 188     188   3334 my $thisparser = $_[0];
3015 1     1   9 use vars q{$tracelevel};
  1         1  
  1         511  
3016 188   50     475 local $tracelevel = ($tracelevel||0)+1;
3017 188         269 $ERRORS = 0;
3018 188         374 my $thisrule = $thisparser->{"rules"}{"addressstruct"};
3019              
3020 188 50       376 Parse::RecDescent::_trace(q{Trying rule: [addressstruct]},
3021             Parse::RecDescent::_tracefirst($_[1]),
3022             q{addressstruct},
3023             $tracelevel)
3024             if defined $::RD_TRACE;
3025              
3026 188         302 my $def_at = @{$thisparser->{deferred}};
  188         333  
3027 188         286 my $err_at = @{$thisparser->{errors}};
  188         306  
3028              
3029 188         539 my $score;
3030             my $score_return;
3031 188         0 my $_tok;
3032 188         278 my $return = undef;
3033 188         252 my $_matched=0;
3034 188         263 my $commit=0;
3035 188         306 my @item = ();
3036 188         330 my %item = ();
3037 188         292 my $repeating = $_[2];
3038 188         267 my $_noactions = $_[3];
3039 188 50       377 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  188         282  
  188         319  
3040 188         308 my $_itempos = $_[5];
3041 188 50       414 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3042 188         520 my $text;
3043             my $lastsep;
3044 188         0 my $current_match;
3045 188         493 my $expectation = new Parse::RecDescent::Expectation(q{'('});
3046 188         1311 $expectation->at($_[1]);
3047            
3048 188         773 my $thisline;
3049 188         679 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3050              
3051            
3052              
3053 188   33     1560 while (!$_matched && !$commit)
3054             {
3055            
3056 188 50       373 Parse::RecDescent::_trace(q{Trying production: ['(' personalname sourceroute mailboxname hostname ')']},
3057             Parse::RecDescent::_tracefirst($_[1]),
3058             q{addressstruct},
3059             $tracelevel)
3060             if defined $::RD_TRACE;
3061 188         400 my $thisprod = $thisrule->{"prods"}[0];
3062 188         342 $text = $_[1];
3063 188         247 my $_savetext;
3064 188         347 @item = (q{addressstruct});
3065 188         386 %item = (__RULE__ => q{addressstruct});
3066 188         311 my $repcount = 0;
3067              
3068              
3069 188 50       389 Parse::RecDescent::_trace(q{Trying terminal: ['(']},
3070             Parse::RecDescent::_tracefirst($text),
3071             q{addressstruct},
3072             $tracelevel)
3073             if defined $::RD_TRACE;
3074 188         353 undef $lastsep;
3075 188         426 $expectation->is(q{})->at($text);
3076            
3077              
3078 188 50 33     2075 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and
  188 100 66     1171  
  188   66     363  
  188         959  
3079             substr($text,0,length($_tok)) eq $_tok and
3080 94         205 do { substr($text,0,length($_tok)) = ""; 1; }
  94         266  
3081             )
3082             {
3083 94 50       345 $text = $lastsep . $text if defined $lastsep;
3084            
3085 94         318 $expectation->failed();
3086 94 50       403 Parse::RecDescent::_trace(q{<>},
3087             Parse::RecDescent::_tracefirst($text))
3088             if defined $::RD_TRACE;
3089 94         198 last;
3090             }
3091 94 50       236 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3092             . $_tok . q{])},
3093             Parse::RecDescent::_tracefirst($text))
3094             if defined $::RD_TRACE;
3095 94         239 push @item, $item{__STRING1__}=$_tok;
3096            
3097              
3098 94 50       220 Parse::RecDescent::_trace(q{Trying subrule: [personalname]},
3099             Parse::RecDescent::_tracefirst($text),
3100             q{addressstruct},
3101             $tracelevel)
3102             if defined $::RD_TRACE;
3103 1     1   17 if (1) { no strict qw{refs};
  1         2  
  1         170  
  94         147  
3104 94         240 $expectation->is(q{personalname})->at($text);
3105 94 50   94   1018 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::personalname($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  94         191  
3106             {
3107            
3108 0 0       0 Parse::RecDescent::_trace(q{<>},
3109             Parse::RecDescent::_tracefirst($text),
3110             q{addressstruct},
3111             $tracelevel)
3112             if defined $::RD_TRACE;
3113 0         0 $expectation->failed();
3114 0         0 last;
3115             }
3116 94 50       312 Parse::RecDescent::_trace(q{>>Matched subrule: [personalname]<< (return value: [}
3117             . $_tok . q{]},
3118              
3119             Parse::RecDescent::_tracefirst($text),
3120             q{addressstruct},
3121             $tracelevel)
3122             if defined $::RD_TRACE;
3123 94         240 $item{q{personalname}} = $_tok;
3124 94         166 push @item, $_tok;
3125            
3126             }
3127              
3128 94 50       188 Parse::RecDescent::_trace(q{Trying subrule: [sourceroute]},
3129             Parse::RecDescent::_tracefirst($text),
3130             q{addressstruct},
3131             $tracelevel)
3132             if defined $::RD_TRACE;
3133 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         194  
  94         146  
3134 94         327 $expectation->is(q{sourceroute})->at($text);
3135 94 50   94   1048 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::sourceroute($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  94         200  
3136             {
3137            
3138 0 0       0 Parse::RecDescent::_trace(q{<>},
3139             Parse::RecDescent::_tracefirst($text),
3140             q{addressstruct},
3141             $tracelevel)
3142             if defined $::RD_TRACE;
3143 0         0 $expectation->failed();
3144 0         0 last;
3145             }
3146 94 50       301 Parse::RecDescent::_trace(q{>>Matched subrule: [sourceroute]<< (return value: [}
3147             . $_tok . q{]},
3148              
3149             Parse::RecDescent::_tracefirst($text),
3150             q{addressstruct},
3151             $tracelevel)
3152             if defined $::RD_TRACE;
3153 94         206 $item{q{sourceroute}} = $_tok;
3154 94         171 push @item, $_tok;
3155            
3156             }
3157              
3158 94 50       183 Parse::RecDescent::_trace(q{Trying subrule: [mailboxname]},
3159             Parse::RecDescent::_tracefirst($text),
3160             q{addressstruct},
3161             $tracelevel)
3162             if defined $::RD_TRACE;
3163 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         168  
  94         159  
3164 94         446 $expectation->is(q{mailboxname})->at($text);
3165 94 50   94   957 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::mailboxname($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  94         185  
3166             {
3167            
3168 0 0       0 Parse::RecDescent::_trace(q{<>},
3169             Parse::RecDescent::_tracefirst($text),
3170             q{addressstruct},
3171             $tracelevel)
3172             if defined $::RD_TRACE;
3173 0         0 $expectation->failed();
3174 0         0 last;
3175             }
3176 94 50       293 Parse::RecDescent::_trace(q{>>Matched subrule: [mailboxname]<< (return value: [}
3177             . $_tok . q{]},
3178              
3179             Parse::RecDescent::_tracefirst($text),
3180             q{addressstruct},
3181             $tracelevel)
3182             if defined $::RD_TRACE;
3183 94         208 $item{q{mailboxname}} = $_tok;
3184 94         271 push @item, $_tok;
3185            
3186             }
3187              
3188 94 50       196 Parse::RecDescent::_trace(q{Trying subrule: [hostname]},
3189             Parse::RecDescent::_tracefirst($text),
3190             q{addressstruct},
3191             $tracelevel)
3192             if defined $::RD_TRACE;
3193 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         827  
  94         461  
3194 94         301 $expectation->is(q{hostname})->at($text);
3195 94 50   94   1078 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::hostname($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  94         243  
3196             {
3197            
3198 0 0       0 Parse::RecDescent::_trace(q{<>},
3199             Parse::RecDescent::_tracefirst($text),
3200             q{addressstruct},
3201             $tracelevel)
3202             if defined $::RD_TRACE;
3203 0         0 $expectation->failed();
3204 0         0 last;
3205             }
3206 94 50       304 Parse::RecDescent::_trace(q{>>Matched subrule: [hostname]<< (return value: [}
3207             . $_tok . q{]},
3208              
3209             Parse::RecDescent::_tracefirst($text),
3210             q{addressstruct},
3211             $tracelevel)
3212             if defined $::RD_TRACE;
3213 94         220 $item{q{hostname}} = $_tok;
3214 94         174 push @item, $_tok;
3215            
3216             }
3217              
3218 94 50       201 Parse::RecDescent::_trace(q{Trying terminal: [')']},
3219             Parse::RecDescent::_tracefirst($text),
3220             q{addressstruct},
3221             $tracelevel)
3222             if defined $::RD_TRACE;
3223 94         147 undef $lastsep;
3224 94         290 $expectation->is(q{')'})->at($text);
3225            
3226              
3227 94 50 33     1161 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and
  94 50 33     680  
  94   33     224  
  94         460  
3228             substr($text,0,length($_tok)) eq $_tok and
3229 94         189 do { substr($text,0,length($_tok)) = ""; 1; }
  94         281  
3230             )
3231             {
3232 0 0       0 $text = $lastsep . $text if defined $lastsep;
3233            
3234 0         0 $expectation->failed();
3235 0 0       0 Parse::RecDescent::_trace(q{<>},
3236             Parse::RecDescent::_tracefirst($text))
3237             if defined $::RD_TRACE;
3238 0         0 last;
3239             }
3240 94 50       250 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3241             . $_tok . q{])},
3242             Parse::RecDescent::_tracefirst($text))
3243             if defined $::RD_TRACE;
3244 94         230 push @item, $item{__STRING2__}=$_tok;
3245            
3246              
3247 94 50       467 Parse::RecDescent::_trace(q{Trying action},
3248             Parse::RecDescent::_tracefirst($text),
3249             q{addressstruct},
3250             $tracelevel)
3251             if defined $::RD_TRACE;
3252            
3253              
3254 94 50       198 $_tok = ($_noactions) ? 0 : do { bless { personalname => $item{personalname}
3255             , sourceroute => $item{sourceroute}
3256             , mailboxname => $item{mailboxname}
3257             , hostname => $item{hostname}
3258 94         471 }, 'Mail::IMAPClient::BodyStructure::Address';
3259             };
3260 94 50       262 unless (defined $_tok)
3261             {
3262 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
3263             if defined $::RD_TRACE;
3264 0         0 last;
3265             }
3266 94 50       208 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3267             . $_tok . q{])},
3268             Parse::RecDescent::_tracefirst($text))
3269             if defined $::RD_TRACE;
3270 94         164 push @item, $_tok;
3271 94         163 $item{__ACTION1__}=$_tok;
3272            
3273              
3274 94 50       165 Parse::RecDescent::_trace(q{>>Matched production: ['(' personalname sourceroute mailboxname hostname ')']<<},
3275             Parse::RecDescent::_tracefirst($text),
3276             q{addressstruct},
3277             $tracelevel)
3278             if defined $::RD_TRACE;
3279              
3280              
3281              
3282 94         136 $_matched = 1;
3283 94         201 last;
3284             }
3285              
3286             splice
3287 188 100       403 @{$thisparser->{deferred}}, $def_at unless $_matched;
  94         216  
3288            
3289 188 100 66     564 unless ( $_matched || defined($score) )
3290             {
3291 94         141 splice @{$thisparser->{deferred}}, $def_at;
  94         175  
3292            
3293              
3294 94         171 $_[1] = $text; # NOT SURE THIS IS NEEDED
3295 94 50       193 Parse::RecDescent::_trace(q{<>},
3296             Parse::RecDescent::_tracefirst($_[1]),
3297             q{addressstruct},
3298             $tracelevel)
3299             if defined $::RD_TRACE;
3300 94         444 return undef;
3301             }
3302 94 50 33     312 if (!defined($return) && defined($score))
3303             {
3304 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3305             q{addressstruct},
3306             $tracelevel)
3307             if defined $::RD_TRACE;
3308 0         0 $return = $score_return;
3309             }
3310 94         170 splice @{$thisparser->{errors}}, $err_at;
  94         228  
3311 94 50       222 $return = $item[$#item] unless defined $return;
3312 94 50       190 if (defined $::RD_TRACE)
3313             {
3314 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3315             $return . q{])}, "",
3316             q{addressstruct},
3317             $tracelevel);
3318 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3319             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3320             Parse::RecDescent::_tracefirst($text),
3321             , q{addressstruct},
3322             $tracelevel)
3323             }
3324 94         279 $_[1] = $text;
3325 94         639 return $return;
3326             }
3327              
3328             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
3329             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::basicfields
3330             {
3331 53     53   97 my $thisparser = $_[0];
3332 1     1   9 use vars q{$tracelevel};
  1         1  
  1         357  
3333 53   50     172 local $tracelevel = ($tracelevel||0)+1;
3334 53         85 $ERRORS = 0;
3335 53         130 my $thisrule = $thisparser->{"rules"}{"basicfields"};
3336              
3337 53 50       113 Parse::RecDescent::_trace(q{Trying rule: [basicfields]},
3338             Parse::RecDescent::_tracefirst($_[1]),
3339             q{basicfields},
3340             $tracelevel)
3341             if defined $::RD_TRACE;
3342              
3343 53         104 my $def_at = @{$thisparser->{deferred}};
  53         107  
3344 53         90 my $err_at = @{$thisparser->{errors}};
  53         124  
3345              
3346 53         145 my $score;
3347             my $score_return;
3348 53         0 my $_tok;
3349 53         86 my $return = undef;
3350 53         93 my $_matched=0;
3351 53         81 my $commit=0;
3352 53         105 my @item = ();
3353 53         105 my %item = ();
3354 53         90 my $repeating = $_[2];
3355 53         95 my $_noactions = $_[3];
3356 53 50       117 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  53         68  
  53         99  
3357 53         83 my $_itempos = $_[5];
3358 53 50       133 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3359 53         163 my $text;
3360             my $lastsep;
3361 53         0 my $current_match;
3362 53         145 my $expectation = new Parse::RecDescent::Expectation(q{bodysubtype});
3363 53         383 $expectation->at($_[1]);
3364            
3365 53         210 my $thisline;
3366 53         192 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3367              
3368            
3369              
3370 53   33     472 while (!$_matched && !$commit)
3371             {
3372            
3373 53 50       121 Parse::RecDescent::_trace(q{Trying production: [bodysubtype bodyparms bodyid bodydesc bodyenc bodysize]},
3374             Parse::RecDescent::_tracefirst($_[1]),
3375             q{basicfields},
3376             $tracelevel)
3377             if defined $::RD_TRACE;
3378 53         144 my $thisprod = $thisrule->{"prods"}[0];
3379 53         91 $text = $_[1];
3380 53         74 my $_savetext;
3381 53         107 @item = (q{basicfields});
3382 53         115 %item = (__RULE__ => q{basicfields});
3383 53         88 my $repcount = 0;
3384              
3385              
3386 53 50       122 Parse::RecDescent::_trace(q{Trying subrule: [bodysubtype]},
3387             Parse::RecDescent::_tracefirst($text),
3388             q{basicfields},
3389             $tracelevel)
3390             if defined $::RD_TRACE;
3391 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         1258  
  53         77  
3392 53         136 $expectation->is(q{})->at($text);
3393 53 50   53   527 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodysubtype($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  53         105  
3394             {
3395            
3396 0 0       0 Parse::RecDescent::_trace(q{<>},
3397             Parse::RecDescent::_tracefirst($text),
3398             q{basicfields},
3399             $tracelevel)
3400             if defined $::RD_TRACE;
3401 0         0 $expectation->failed();
3402 0         0 last;
3403             }
3404 53 50       204 Parse::RecDescent::_trace(q{>>Matched subrule: [bodysubtype]<< (return value: [}
3405             . $_tok . q{]},
3406              
3407             Parse::RecDescent::_tracefirst($text),
3408             q{basicfields},
3409             $tracelevel)
3410             if defined $::RD_TRACE;
3411 53         122 $item{q{bodysubtype}} = $_tok;
3412 53         107 push @item, $_tok;
3413            
3414             }
3415              
3416 53 50       454 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyparms]},
3417             Parse::RecDescent::_tracefirst($text),
3418             q{basicfields},
3419             $tracelevel)
3420             if defined $::RD_TRACE;
3421 53         171 $expectation->is(q{bodyparms})->at($text);
3422            
3423 53 50   53   602 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyparms, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  53         109  
3424             {
3425 0 0       0 Parse::RecDescent::_trace(q{<>},
3426             Parse::RecDescent::_tracefirst($text),
3427             q{basicfields},
3428             $tracelevel)
3429             if defined $::RD_TRACE;
3430 0         0 last;
3431             }
3432 53 50       969 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyparms]<< (}
3433             . @$_tok . q{ times)},
3434              
3435             Parse::RecDescent::_tracefirst($text),
3436             q{basicfields},
3437             $tracelevel)
3438             if defined $::RD_TRACE;
3439 53         115 $item{q{bodyparms(?)}} = $_tok;
3440 53         105 push @item, $_tok;
3441            
3442              
3443              
3444 53 50       118 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyid]},
3445             Parse::RecDescent::_tracefirst($text),
3446             q{basicfields},
3447             $tracelevel)
3448             if defined $::RD_TRACE;
3449 53         150 $expectation->is(q{bodyid})->at($text);
3450            
3451 53 50   53   581 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyid, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  53         120  
3452             {
3453 0 0       0 Parse::RecDescent::_trace(q{<>},
3454             Parse::RecDescent::_tracefirst($text),
3455             q{basicfields},
3456             $tracelevel)
3457             if defined $::RD_TRACE;
3458 0         0 last;
3459             }
3460 53 50       1002 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyid]<< (}
3461             . @$_tok . q{ times)},
3462              
3463             Parse::RecDescent::_tracefirst($text),
3464             q{basicfields},
3465             $tracelevel)
3466             if defined $::RD_TRACE;
3467 53         117 $item{q{bodyid(?)}} = $_tok;
3468 53         99 push @item, $_tok;
3469            
3470              
3471              
3472 53 50       103 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodydesc]},
3473             Parse::RecDescent::_tracefirst($text),
3474             q{basicfields},
3475             $tracelevel)
3476             if defined $::RD_TRACE;
3477 53         155 $expectation->is(q{bodydesc})->at($text);
3478            
3479 53 50   53   581 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydesc, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  53         106  
3480             {
3481 0 0       0 Parse::RecDescent::_trace(q{<>},
3482             Parse::RecDescent::_tracefirst($text),
3483             q{basicfields},
3484             $tracelevel)
3485             if defined $::RD_TRACE;
3486 0         0 last;
3487             }
3488 53 50       876 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodydesc]<< (}
3489             . @$_tok . q{ times)},
3490              
3491             Parse::RecDescent::_tracefirst($text),
3492             q{basicfields},
3493             $tracelevel)
3494             if defined $::RD_TRACE;
3495 53         117 $item{q{bodydesc(?)}} = $_tok;
3496 53         96 push @item, $_tok;
3497            
3498              
3499              
3500 53 50       107 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyenc]},
3501             Parse::RecDescent::_tracefirst($text),
3502             q{basicfields},
3503             $tracelevel)
3504             if defined $::RD_TRACE;
3505 53         151 $expectation->is(q{bodyenc})->at($text);
3506            
3507 53 50   53   558 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyenc, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  53         115  
3508             {
3509 0 0       0 Parse::RecDescent::_trace(q{<>},
3510             Parse::RecDescent::_tracefirst($text),
3511             q{basicfields},
3512             $tracelevel)
3513             if defined $::RD_TRACE;
3514 0         0 last;
3515             }
3516 53 50       898 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyenc]<< (}
3517             . @$_tok . q{ times)},
3518              
3519             Parse::RecDescent::_tracefirst($text),
3520             q{basicfields},
3521             $tracelevel)
3522             if defined $::RD_TRACE;
3523 53         136 $item{q{bodyenc(?)}} = $_tok;
3524 53         111 push @item, $_tok;
3525            
3526              
3527              
3528 53 50       108 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodysize]},
3529             Parse::RecDescent::_tracefirst($text),
3530             q{basicfields},
3531             $tracelevel)
3532             if defined $::RD_TRACE;
3533 53         156 $expectation->is(q{bodysize})->at($text);
3534            
3535 53 50   53   578 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodysize, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  53         107  
3536             {
3537 0 0       0 Parse::RecDescent::_trace(q{<>},
3538             Parse::RecDescent::_tracefirst($text),
3539             q{basicfields},
3540             $tracelevel)
3541             if defined $::RD_TRACE;
3542 0         0 last;
3543             }
3544 53 50       885 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodysize]<< (}
3545             . @$_tok . q{ times)},
3546              
3547             Parse::RecDescent::_tracefirst($text),
3548             q{basicfields},
3549             $tracelevel)
3550             if defined $::RD_TRACE;
3551 53         151 $item{q{bodysize(?)}} = $_tok;
3552 53         98 push @item, $_tok;
3553            
3554              
3555              
3556 53 50       117 Parse::RecDescent::_trace(q{Trying action},
3557             Parse::RecDescent::_tracefirst($text),
3558             q{basicfields},
3559             $tracelevel)
3560             if defined $::RD_TRACE;
3561            
3562              
3563 53 50       149 $_tok = ($_noactions) ? 0 : do { $return = { bodysubtype => $item{bodysubtype} };
  53         142  
3564 53         191 take_optional_items($return, \%item,
3565             qw/bodyparms bodyid bodydesc bodyenc bodysize/);
3566 53         124 1;
3567             };
3568 53 50       148 unless (defined $_tok)
3569             {
3570 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
3571             if defined $::RD_TRACE;
3572 0         0 last;
3573             }
3574 53 50       146 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3575             . $_tok . q{])},
3576             Parse::RecDescent::_tracefirst($text))
3577             if defined $::RD_TRACE;
3578 53         99 push @item, $_tok;
3579 53         109 $item{__ACTION1__}=$_tok;
3580            
3581              
3582 53 50       116 Parse::RecDescent::_trace(q{>>Matched production: [bodysubtype bodyparms bodyid bodydesc bodyenc bodysize]<<},
3583             Parse::RecDescent::_tracefirst($text),
3584             q{basicfields},
3585             $tracelevel)
3586             if defined $::RD_TRACE;
3587              
3588              
3589              
3590 53         78 $_matched = 1;
3591 53         101 last;
3592             }
3593              
3594             splice
3595 53 50       127 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
3596            
3597 53 50 33     125 unless ( $_matched || defined($score) )
3598             {
3599 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
3600            
3601              
3602 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
3603 0 0       0 Parse::RecDescent::_trace(q{<>},
3604             Parse::RecDescent::_tracefirst($_[1]),
3605             q{basicfields},
3606             $tracelevel)
3607             if defined $::RD_TRACE;
3608 0         0 return undef;
3609             }
3610 53 50 33     158 if (!defined($return) && defined($score))
3611             {
3612 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3613             q{basicfields},
3614             $tracelevel)
3615             if defined $::RD_TRACE;
3616 0         0 $return = $score_return;
3617             }
3618 53         80 splice @{$thisparser->{errors}}, $err_at;
  53         144  
3619 53 50       136 $return = $item[$#item] unless defined $return;
3620 53 50       133 if (defined $::RD_TRACE)
3621             {
3622 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3623             $return . q{])}, "",
3624             q{basicfields},
3625             $tracelevel);
3626 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3627             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3628             Parse::RecDescent::_tracefirst($text),
3629             , q{basicfields},
3630             $tracelevel)
3631             }
3632 53         100 $_[1] = $text;
3633 53         399 return $return;
3634             }
3635              
3636             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
3637             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bcc
3638             {
3639 24     24   64 my $thisparser = $_[0];
3640 1     1   8 use vars q{$tracelevel};
  1         3  
  1         367  
3641 24   50     70 local $tracelevel = ($tracelevel||0)+1;
3642 24         55 $ERRORS = 0;
3643 24         62 my $thisrule = $thisparser->{"rules"}{"bcc"};
3644              
3645 24 50       64 Parse::RecDescent::_trace(q{Trying rule: [bcc]},
3646             Parse::RecDescent::_tracefirst($_[1]),
3647             q{bcc},
3648             $tracelevel)
3649             if defined $::RD_TRACE;
3650              
3651 24         46 my $def_at = @{$thisparser->{deferred}};
  24         58  
3652 24         41 my $err_at = @{$thisparser->{errors}};
  24         57  
3653              
3654 24         83 my $score;
3655             my $score_return;
3656 24         0 my $_tok;
3657 24         42 my $return = undef;
3658 24         43 my $_matched=0;
3659 24         42 my $commit=0;
3660 24         59 my @item = ();
3661 24         45 my %item = ();
3662 24         78 my $repeating = $_[2];
3663 24         79 my $_noactions = $_[3];
3664 24 50       73 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  24         31  
  24         47  
3665 24         43 my $_itempos = $_[5];
3666 24 50       82 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3667 24         72 my $text;
3668             my $lastsep;
3669 24         0 my $current_match;
3670 24         72 my $expectation = new Parse::RecDescent::Expectation(q{ADDRESSES});
3671 24         174 $expectation->at($_[1]);
3672            
3673 24         101 my $thisline;
3674 24         101 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3675              
3676            
3677              
3678 24   33     234 while (!$_matched && !$commit)
3679             {
3680            
3681 24 50       65 Parse::RecDescent::_trace(q{Trying production: [ADDRESSES]},
3682             Parse::RecDescent::_tracefirst($_[1]),
3683             q{bcc},
3684             $tracelevel)
3685             if defined $::RD_TRACE;
3686 24         66 my $thisprod = $thisrule->{"prods"}[0];
3687 24         46 $text = $_[1];
3688 24         47 my $_savetext;
3689 24         52 @item = (q{bcc});
3690 24         59 %item = (__RULE__ => q{bcc});
3691 24         36 my $repcount = 0;
3692              
3693              
3694 24 50       55 Parse::RecDescent::_trace(q{Trying subrule: [ADDRESSES]},
3695             Parse::RecDescent::_tracefirst($text),
3696             q{bcc},
3697             $tracelevel)
3698             if defined $::RD_TRACE;
3699 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         453  
  24         36  
3700 24         58 $expectation->is(q{})->at($text);
3701 24 50   24   260 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         52  
3702             {
3703            
3704 0 0       0 Parse::RecDescent::_trace(q{<>},
3705             Parse::RecDescent::_tracefirst($text),
3706             q{bcc},
3707             $tracelevel)
3708             if defined $::RD_TRACE;
3709 0         0 $expectation->failed();
3710 0         0 last;
3711             }
3712 24 50       95 Parse::RecDescent::_trace(q{>>Matched subrule: [ADDRESSES]<< (return value: [}
3713             . $_tok . q{]},
3714              
3715             Parse::RecDescent::_tracefirst($text),
3716             q{bcc},
3717             $tracelevel)
3718             if defined $::RD_TRACE;
3719 24         59 $item{q{ADDRESSES}} = $_tok;
3720 24         45 push @item, $_tok;
3721            
3722             }
3723              
3724 24 50       51 Parse::RecDescent::_trace(q{>>Matched production: [ADDRESSES]<<},
3725             Parse::RecDescent::_tracefirst($text),
3726             q{bcc},
3727             $tracelevel)
3728             if defined $::RD_TRACE;
3729              
3730              
3731              
3732 24         54 $_matched = 1;
3733 24         53 last;
3734             }
3735              
3736             splice
3737 24 50       65 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
3738            
3739 24 50 33     68 unless ( $_matched || defined($score) )
3740             {
3741 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
3742            
3743              
3744 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
3745 0 0       0 Parse::RecDescent::_trace(q{<>},
3746             Parse::RecDescent::_tracefirst($_[1]),
3747             q{bcc},
3748             $tracelevel)
3749             if defined $::RD_TRACE;
3750 0         0 return undef;
3751             }
3752 24 50 33     107 if (!defined($return) && defined($score))
3753             {
3754 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3755             q{bcc},
3756             $tracelevel)
3757             if defined $::RD_TRACE;
3758 0         0 $return = $score_return;
3759             }
3760 24         39 splice @{$thisparser->{errors}}, $err_at;
  24         48  
3761 24 50       80 $return = $item[$#item] unless defined $return;
3762 24 50       72 if (defined $::RD_TRACE)
3763             {
3764 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3765             $return . q{])}, "",
3766             q{bcc},
3767             $tracelevel);
3768 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3769             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3770             Parse::RecDescent::_tracefirst($text),
3771             , q{bcc},
3772             $tracelevel)
3773             }
3774 24         69 $_[1] = $text;
3775 24         141 return $return;
3776             }
3777              
3778             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
3779             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyMD5
3780             {
3781 74     74   1206 my $thisparser = $_[0];
3782 1     1   8 use vars q{$tracelevel};
  1         2  
  1         360  
3783 74   50     202 local $tracelevel = ($tracelevel||0)+1;
3784 74         120 $ERRORS = 0;
3785 74         183 my $thisrule = $thisparser->{"rules"}{"bodyMD5"};
3786              
3787 74 50       151 Parse::RecDescent::_trace(q{Trying rule: [bodyMD5]},
3788             Parse::RecDescent::_tracefirst($_[1]),
3789             q{bodyMD5},
3790             $tracelevel)
3791             if defined $::RD_TRACE;
3792              
3793 74         115 my $def_at = @{$thisparser->{deferred}};
  74         144  
3794 74         122 my $err_at = @{$thisparser->{errors}};
  74         128  
3795              
3796 74         187 my $score;
3797             my $score_return;
3798 74         0 my $_tok;
3799 74         135 my $return = undef;
3800 74         133 my $_matched=0;
3801 74         109 my $commit=0;
3802 74         112 my @item = ();
3803 74         116 my %item = ();
3804 74         114 my $repeating = $_[2];
3805 74         109 my $_noactions = $_[3];
3806 74 50       171 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  74         114  
  74         139  
3807 74         115 my $_itempos = $_[5];
3808 74 50       176 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3809 74         171 my $text;
3810             my $lastsep;
3811 74         0 my $current_match;
3812 74         190 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING});
3813 74         533 $expectation->at($_[1]);
3814            
3815 74         321 my $thisline;
3816 74         275 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3817              
3818            
3819              
3820 74   33     687 while (!$_matched && !$commit)
3821             {
3822            
3823 74 50       180 Parse::RecDescent::_trace(q{Trying production: [NIL]},
3824             Parse::RecDescent::_tracefirst($_[1]),
3825             q{bodyMD5},
3826             $tracelevel)
3827             if defined $::RD_TRACE;
3828 74         175 my $thisprod = $thisrule->{"prods"}[0];
3829 74         131 $text = $_[1];
3830 74         117 my $_savetext;
3831 74         153 @item = (q{bodyMD5});
3832 74         160 %item = (__RULE__ => q{bodyMD5});
3833 74         117 my $repcount = 0;
3834              
3835              
3836 74 50       147 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
3837             Parse::RecDescent::_tracefirst($text),
3838             q{bodyMD5},
3839             $tracelevel)
3840             if defined $::RD_TRACE;
3841 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         274  
  74         109  
3842 74         157 $expectation->is(q{})->at($text);
3843 74 100   74   709 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  74         146  
3844             {
3845            
3846 8 50       26 Parse::RecDescent::_trace(q{<>},
3847             Parse::RecDescent::_tracefirst($text),
3848             q{bodyMD5},
3849             $tracelevel)
3850             if defined $::RD_TRACE;
3851 8         22 $expectation->failed();
3852 8         28 last;
3853             }
3854 66 50       284 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
3855             . $_tok . q{]},
3856              
3857             Parse::RecDescent::_tracefirst($text),
3858             q{bodyMD5},
3859             $tracelevel)
3860             if defined $::RD_TRACE;
3861 66         184 $item{q{NIL}} = $_tok;
3862 66         115 push @item, $_tok;
3863            
3864             }
3865              
3866 66 50       124 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
3867             Parse::RecDescent::_tracefirst($text),
3868             q{bodyMD5},
3869             $tracelevel)
3870             if defined $::RD_TRACE;
3871              
3872              
3873              
3874 66         104 $_matched = 1;
3875 66         131 last;
3876             }
3877              
3878             splice
3879 74 100       159 @{$thisparser->{deferred}}, $def_at unless $_matched;
  8         17  
3880            
3881 74   66     193 while (!$_matched && !$commit)
3882             {
3883            
3884 8 50       18 Parse::RecDescent::_trace(q{Trying production: [STRING]},
3885             Parse::RecDescent::_tracefirst($_[1]),
3886             q{bodyMD5},
3887             $tracelevel)
3888             if defined $::RD_TRACE;
3889 8         17 my $thisprod = $thisrule->{"prods"}[1];
3890 8         17 $text = $_[1];
3891 8         12 my $_savetext;
3892 8         22 @item = (q{bodyMD5});
3893 8         20 %item = (__RULE__ => q{bodyMD5});
3894 8         12 my $repcount = 0;
3895              
3896              
3897 8 50       18 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
3898             Parse::RecDescent::_tracefirst($text),
3899             q{bodyMD5},
3900             $tracelevel)
3901             if defined $::RD_TRACE;
3902 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         522  
  8         15  
3903 8         19 $expectation->is(q{})->at($text);
3904 8 100   8   80 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  8         16  
3905             {
3906            
3907 7 50       16 Parse::RecDescent::_trace(q{<>},
3908             Parse::RecDescent::_tracefirst($text),
3909             q{bodyMD5},
3910             $tracelevel)
3911             if defined $::RD_TRACE;
3912 7         22 $expectation->failed();
3913 7         39 last;
3914             }
3915 1 50       6 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
3916             . $_tok . q{]},
3917              
3918             Parse::RecDescent::_tracefirst($text),
3919             q{bodyMD5},
3920             $tracelevel)
3921             if defined $::RD_TRACE;
3922 1         3 $item{q{STRING}} = $_tok;
3923 1         3 push @item, $_tok;
3924            
3925             }
3926              
3927 1 50       4 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
3928             Parse::RecDescent::_tracefirst($text),
3929             q{bodyMD5},
3930             $tracelevel)
3931             if defined $::RD_TRACE;
3932              
3933              
3934              
3935 1         3 $_matched = 1;
3936 1         2 last;
3937             }
3938              
3939             splice
3940 74 100       148 @{$thisparser->{deferred}}, $def_at unless $_matched;
  7         13  
3941            
3942 74 100 66     178 unless ( $_matched || defined($score) )
3943             {
3944 7         11 splice @{$thisparser->{deferred}}, $def_at;
  7         15  
3945            
3946              
3947 7         14 $_[1] = $text; # NOT SURE THIS IS NEEDED
3948 7 50       15 Parse::RecDescent::_trace(q{<>},
3949             Parse::RecDescent::_tracefirst($_[1]),
3950             q{bodyMD5},
3951             $tracelevel)
3952             if defined $::RD_TRACE;
3953 7         33 return undef;
3954             }
3955 67 50 33     293 if (!defined($return) && defined($score))
3956             {
3957 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3958             q{bodyMD5},
3959             $tracelevel)
3960             if defined $::RD_TRACE;
3961 0         0 $return = $score_return;
3962             }
3963 67         101 splice @{$thisparser->{errors}}, $err_at;
  67         129  
3964 67 50       179 $return = $item[$#item] unless defined $return;
3965 67 50       218 if (defined $::RD_TRACE)
3966             {
3967 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3968             $return . q{])}, "",
3969             q{bodyMD5},
3970             $tracelevel);
3971 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3972             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3973             Parse::RecDescent::_tracefirst($text),
3974             , q{bodyMD5},
3975             $tracelevel)
3976             }
3977 67         141 $_[1] = $text;
3978 67         361 return $return;
3979             }
3980              
3981             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
3982             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydesc
3983             {
3984 74     74   907 my $thisparser = $_[0];
3985 1     1   9 use vars q{$tracelevel};
  1         2  
  1         538  
3986 74   50     174 local $tracelevel = ($tracelevel||0)+1;
3987 74         124 $ERRORS = 0;
3988 74         144 my $thisrule = $thisparser->{"rules"}{"bodydesc"};
3989              
3990 74 50       153 Parse::RecDescent::_trace(q{Trying rule: [bodydesc]},
3991             Parse::RecDescent::_tracefirst($_[1]),
3992             q{bodydesc},
3993             $tracelevel)
3994             if defined $::RD_TRACE;
3995              
3996 74         109 my $def_at = @{$thisparser->{deferred}};
  74         158  
3997 74         131 my $err_at = @{$thisparser->{errors}};
  74         139  
3998              
3999 74         188 my $score;
4000             my $score_return;
4001 74         0 my $_tok;
4002 74         126 my $return = undef;
4003 74         101 my $_matched=0;
4004 74         114 my $commit=0;
4005 74         120 my @item = ();
4006 74         124 my %item = ();
4007 74         106 my $repeating = $_[2];
4008 74         128 my $_noactions = $_[3];
4009 74 50       155 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  74         113  
  74         265  
4010 74         125 my $_itempos = $_[5];
4011 74 50       163 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4012 74         209 my $text;
4013             my $lastsep;
4014 74         0 my $current_match;
4015 74         199 my $expectation = new Parse::RecDescent::Expectation(q{/[()]/, or STRING});
4016 74         524 $expectation->at($_[1]);
4017            
4018 74         318 my $thisline;
4019 74         261 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4020              
4021            
4022              
4023 74   33     629 while (!$_matched && !$commit)
4024             {
4025            
4026 74 50       150 Parse::RecDescent::_trace(q{Trying production: [/[()]/ NIL]},
4027             Parse::RecDescent::_tracefirst($_[1]),
4028             q{bodydesc},
4029             $tracelevel)
4030             if defined $::RD_TRACE;
4031 74         165 my $thisprod = $thisrule->{"prods"}[0];
4032 74         152 $text = $_[1];
4033 74         108 my $_savetext;
4034 74         144 @item = (q{bodydesc});
4035 74         139 %item = (__RULE__ => q{bodydesc});
4036 74         118 my $repcount = 0;
4037              
4038              
4039 74 50       144 Parse::RecDescent::_trace(q{Trying terminal: [/[()]/]}, Parse::RecDescent::_tracefirst($text),
4040             q{bodydesc},
4041             $tracelevel)
4042             if defined $::RD_TRACE;
4043 74         149 undef $lastsep;
4044 74         192 $expectation->is(q{})->at($text);
4045 74         497 $_savetext = $text;
4046              
4047 74 50 33     490 if ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[()])/)
  74 50       759  
4048             {
4049 0         0 $text = $_savetext;
4050 0         0 $expectation->failed();
4051 0 0       0 Parse::RecDescent::_trace(q{<>},
4052             Parse::RecDescent::_tracefirst($text))
4053             if defined $::RD_TRACE;
4054              
4055 0         0 last;
4056             }
4057 74         339 $current_match = substr($text, $-[0], $+[0] - $-[0]);
4058 74         188 substr($text,0,length($current_match),q{});
4059 74 50       156 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4060             . $current_match . q{])},
4061             Parse::RecDescent::_tracefirst($text))
4062             if defined $::RD_TRACE;
4063 74         210 push @item, $item{__PATTERN1__}=$current_match;
4064 74         163 $text = $_savetext;
4065              
4066 74 50       154 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
4067             Parse::RecDescent::_tracefirst($text),
4068             q{bodydesc},
4069             $tracelevel)
4070             if defined $::RD_TRACE;
4071 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         305  
  74         116  
4072 74         219 $expectation->is(q{NIL})->at($text);
4073 74 100   74   709 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  74         172  
4074             {
4075            
4076 21 50       71 Parse::RecDescent::_trace(q{<>},
4077             Parse::RecDescent::_tracefirst($text),
4078             q{bodydesc},
4079             $tracelevel)
4080             if defined $::RD_TRACE;
4081 21         76 $expectation->failed();
4082 21         187 last;
4083             }
4084 53 50       195 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
4085             . $_tok . q{]},
4086              
4087             Parse::RecDescent::_tracefirst($text),
4088             q{bodydesc},
4089             $tracelevel)
4090             if defined $::RD_TRACE;
4091 53         122 $item{q{NIL}} = $_tok;
4092 53         98 push @item, $_tok;
4093            
4094             }
4095              
4096 53 50       112 Parse::RecDescent::_trace(q{>>Matched production: [/[()]/ NIL]<<},
4097             Parse::RecDescent::_tracefirst($text),
4098             q{bodydesc},
4099             $tracelevel)
4100             if defined $::RD_TRACE;
4101              
4102              
4103              
4104 53         79 $_matched = 1;
4105 53         102 last;
4106             }
4107              
4108             splice
4109 74 100       177 @{$thisparser->{deferred}}, $def_at unless $_matched;
  21         48  
4110            
4111 74   66     210 while (!$_matched && !$commit)
4112             {
4113            
4114 21 50       66 Parse::RecDescent::_trace(q{Trying production: [STRING]},
4115             Parse::RecDescent::_tracefirst($_[1]),
4116             q{bodydesc},
4117             $tracelevel)
4118             if defined $::RD_TRACE;
4119 21         54 my $thisprod = $thisrule->{"prods"}[1];
4120 21         53 $text = $_[1];
4121 21         37 my $_savetext;
4122 21         58 @item = (q{bodydesc});
4123 21         70 %item = (__RULE__ => q{bodydesc});
4124 21         39 my $repcount = 0;
4125              
4126              
4127 21 50       65 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
4128             Parse::RecDescent::_tracefirst($text),
4129             q{bodydesc},
4130             $tracelevel)
4131             if defined $::RD_TRACE;
4132 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         487  
  21         44  
4133 21         71 $expectation->is(q{})->at($text);
4134 21 50   21   233 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  21         44  
4135             {
4136            
4137 0 0       0 Parse::RecDescent::_trace(q{<>},
4138             Parse::RecDescent::_tracefirst($text),
4139             q{bodydesc},
4140             $tracelevel)
4141             if defined $::RD_TRACE;
4142 0         0 $expectation->failed();
4143 0         0 last;
4144             }
4145 21 50       97 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
4146             . $_tok . q{]},
4147              
4148             Parse::RecDescent::_tracefirst($text),
4149             q{bodydesc},
4150             $tracelevel)
4151             if defined $::RD_TRACE;
4152 21         53 $item{q{STRING}} = $_tok;
4153 21         52 push @item, $_tok;
4154            
4155             }
4156              
4157 21 50       59 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
4158             Parse::RecDescent::_tracefirst($text),
4159             q{bodydesc},
4160             $tracelevel)
4161             if defined $::RD_TRACE;
4162              
4163              
4164              
4165 21         45 $_matched = 1;
4166 21         42 last;
4167             }
4168              
4169             splice
4170 74 50       153 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
4171            
4172 74 50 33     203 unless ( $_matched || defined($score) )
4173             {
4174 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
4175            
4176              
4177 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
4178 0 0       0 Parse::RecDescent::_trace(q{<>},
4179             Parse::RecDescent::_tracefirst($_[1]),
4180             q{bodydesc},
4181             $tracelevel)
4182             if defined $::RD_TRACE;
4183 0         0 return undef;
4184             }
4185 74 50 33     279 if (!defined($return) && defined($score))
4186             {
4187 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4188             q{bodydesc},
4189             $tracelevel)
4190             if defined $::RD_TRACE;
4191 0         0 $return = $score_return;
4192             }
4193 74         121 splice @{$thisparser->{errors}}, $err_at;
  74         131  
4194 74 50       177 $return = $item[$#item] unless defined $return;
4195 74 50       166 if (defined $::RD_TRACE)
4196             {
4197 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4198             $return . q{])}, "",
4199             q{bodydesc},
4200             $tracelevel);
4201 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4202             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4203             Parse::RecDescent::_tracefirst($text),
4204             , q{bodydesc},
4205             $tracelevel)
4206             }
4207 74         194 $_[1] = $text;
4208 74         398 return $return;
4209             }
4210              
4211             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
4212             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydisp
4213             {
4214 105     105   1721 my $thisparser = $_[0];
4215 1     1   8 use vars q{$tracelevel};
  1         2  
  1         354  
4216 105   50     306 local $tracelevel = ($tracelevel||0)+1;
4217 105         180 $ERRORS = 0;
4218 105         206 my $thisrule = $thisparser->{"rules"}{"bodydisp"};
4219              
4220 105 50       211 Parse::RecDescent::_trace(q{Trying rule: [bodydisp]},
4221             Parse::RecDescent::_tracefirst($_[1]),
4222             q{bodydisp},
4223             $tracelevel)
4224             if defined $::RD_TRACE;
4225              
4226 105         152 my $def_at = @{$thisparser->{deferred}};
  105         195  
4227 105         160 my $err_at = @{$thisparser->{errors}};
  105         217  
4228              
4229 105         252 my $score;
4230             my $score_return;
4231 105         0 my $_tok;
4232 105         154 my $return = undef;
4233 105         146 my $_matched=0;
4234 105         163 my $commit=0;
4235 105         175 my @item = ();
4236 105         162 my %item = ();
4237 105         165 my $repeating = $_[2];
4238 105         176 my $_noactions = $_[3];
4239 105 50       232 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  105         151  
  105         218  
4240 105         175 my $_itempos = $_[5];
4241 105 50       258 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4242 105         251 my $text;
4243             my $lastsep;
4244 105         0 my $current_match;
4245 105         286 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or KVPAIRS});
4246 105         705 $expectation->at($_[1]);
4247            
4248 105         415 my $thisline;
4249 105         403 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4250              
4251            
4252              
4253 105   33     819 while (!$_matched && !$commit)
4254             {
4255            
4256 105 50       217 Parse::RecDescent::_trace(q{Trying production: [NIL]},
4257             Parse::RecDescent::_tracefirst($_[1]),
4258             q{bodydisp},
4259             $tracelevel)
4260             if defined $::RD_TRACE;
4261 105         228 my $thisprod = $thisrule->{"prods"}[0];
4262 105         177 $text = $_[1];
4263 105         156 my $_savetext;
4264 105         215 @item = (q{bodydisp});
4265 105         207 %item = (__RULE__ => q{bodydisp});
4266 105         154 my $repcount = 0;
4267              
4268              
4269 105 50       215 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
4270             Parse::RecDescent::_tracefirst($text),
4271             q{bodydisp},
4272             $tracelevel)
4273             if defined $::RD_TRACE;
4274 1     1   16 if (1) { no strict qw{refs};
  1         4  
  1         297  
  105         155  
4275 105         238 $expectation->is(q{})->at($text);
4276 105 100   105   1015 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  105         194  
4277             {
4278            
4279 38 50       101 Parse::RecDescent::_trace(q{<>},
4280             Parse::RecDescent::_tracefirst($text),
4281             q{bodydisp},
4282             $tracelevel)
4283             if defined $::RD_TRACE;
4284 38         109 $expectation->failed();
4285 38         138 last;
4286             }
4287 67 50       234 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
4288             . $_tok . q{]},
4289              
4290             Parse::RecDescent::_tracefirst($text),
4291             q{bodydisp},
4292             $tracelevel)
4293             if defined $::RD_TRACE;
4294 67         144 $item{q{NIL}} = $_tok;
4295 67         116 push @item, $_tok;
4296            
4297             }
4298              
4299 67 50       152 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
4300             Parse::RecDescent::_tracefirst($text),
4301             q{bodydisp},
4302             $tracelevel)
4303             if defined $::RD_TRACE;
4304              
4305              
4306              
4307 67         113 $_matched = 1;
4308 67         111 last;
4309             }
4310              
4311             splice
4312 105 100       270 @{$thisparser->{deferred}}, $def_at unless $_matched;
  38         81  
4313            
4314 105   66     311 while (!$_matched && !$commit)
4315             {
4316            
4317 38 50       88 Parse::RecDescent::_trace(q{Trying production: [KVPAIRS]},
4318             Parse::RecDescent::_tracefirst($_[1]),
4319             q{bodydisp},
4320             $tracelevel)
4321             if defined $::RD_TRACE;
4322 38         81 my $thisprod = $thisrule->{"prods"}[1];
4323 38         65 $text = $_[1];
4324 38         60 my $_savetext;
4325 38         92 @item = (q{bodydisp});
4326 38         88 %item = (__RULE__ => q{bodydisp});
4327 38         75 my $repcount = 0;
4328              
4329              
4330 38 50       92 Parse::RecDescent::_trace(q{Trying subrule: [KVPAIRS]},
4331             Parse::RecDescent::_tracefirst($text),
4332             q{bodydisp},
4333             $tracelevel)
4334             if defined $::RD_TRACE;
4335 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         472  
  38         69  
4336 38         103 $expectation->is(q{})->at($text);
4337 38 100   38   387 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::KVPAIRS($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  38         97  
4338             {
4339            
4340 10 50       21 Parse::RecDescent::_trace(q{<>},
4341             Parse::RecDescent::_tracefirst($text),
4342             q{bodydisp},
4343             $tracelevel)
4344             if defined $::RD_TRACE;
4345 10         27 $expectation->failed();
4346 10         33 last;
4347             }
4348 28 50       133 Parse::RecDescent::_trace(q{>>Matched subrule: [KVPAIRS]<< (return value: [}
4349             . $_tok . q{]},
4350              
4351             Parse::RecDescent::_tracefirst($text),
4352             q{bodydisp},
4353             $tracelevel)
4354             if defined $::RD_TRACE;
4355 28         73 $item{q{KVPAIRS}} = $_tok;
4356 28         64 push @item, $_tok;
4357            
4358             }
4359              
4360 28 50       69 Parse::RecDescent::_trace(q{>>Matched production: [KVPAIRS]<<},
4361             Parse::RecDescent::_tracefirst($text),
4362             q{bodydisp},
4363             $tracelevel)
4364             if defined $::RD_TRACE;
4365              
4366              
4367              
4368 28         50 $_matched = 1;
4369 28         49 last;
4370             }
4371              
4372             splice
4373 105 100       234 @{$thisparser->{deferred}}, $def_at unless $_matched;
  10         22  
4374            
4375 105 100 66     242 unless ( $_matched || defined($score) )
4376             {
4377 10         15 splice @{$thisparser->{deferred}}, $def_at;
  10         19  
4378            
4379              
4380 10         18 $_[1] = $text; # NOT SURE THIS IS NEEDED
4381 10 50       24 Parse::RecDescent::_trace(q{<>},
4382             Parse::RecDescent::_tracefirst($_[1]),
4383             q{bodydisp},
4384             $tracelevel)
4385             if defined $::RD_TRACE;
4386 10         43 return undef;
4387             }
4388 95 50 33     367 if (!defined($return) && defined($score))
4389             {
4390 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4391             q{bodydisp},
4392             $tracelevel)
4393             if defined $::RD_TRACE;
4394 0         0 $return = $score_return;
4395             }
4396 95         147 splice @{$thisparser->{errors}}, $err_at;
  95         184  
4397 95 50       260 $return = $item[$#item] unless defined $return;
4398 95 50       185 if (defined $::RD_TRACE)
4399             {
4400 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4401             $return . q{])}, "",
4402             q{bodydisp},
4403             $tracelevel);
4404 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4405             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4406             Parse::RecDescent::_tracefirst($text),
4407             , q{bodydisp},
4408             $tracelevel)
4409             }
4410 95         156 $_[1] = $text;
4411 95         518 return $return;
4412             }
4413              
4414             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
4415             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyenc
4416             {
4417 74     74   996 my $thisparser = $_[0];
4418 1     1   8 use vars q{$tracelevel};
  1         2  
  1         342  
4419 74   50     189 local $tracelevel = ($tracelevel||0)+1;
4420 74         113 $ERRORS = 0;
4421 74         164 my $thisrule = $thisparser->{"rules"}{"bodyenc"};
4422              
4423 74 50       157 Parse::RecDescent::_trace(q{Trying rule: [bodyenc]},
4424             Parse::RecDescent::_tracefirst($_[1]),
4425             q{bodyenc},
4426             $tracelevel)
4427             if defined $::RD_TRACE;
4428              
4429 74         203 my $def_at = @{$thisparser->{deferred}};
  74         147  
4430 74         105 my $err_at = @{$thisparser->{errors}};
  74         145  
4431              
4432 74         185 my $score;
4433             my $score_return;
4434 74         0 my $_tok;
4435 74         103 my $return = undef;
4436 74         127 my $_matched=0;
4437 74         111 my $commit=0;
4438 74         122 my @item = ();
4439 74         135 my %item = ();
4440 74         134 my $repeating = $_[2];
4441 74         132 my $_noactions = $_[3];
4442 74 50       178 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  74         115  
  74         155  
4443 74         115 my $_itempos = $_[5];
4444 74 50       172 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4445 74         182 my $text;
4446             my $lastsep;
4447 74         0 my $current_match;
4448 74         192 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING, or KVPAIRS});
4449 74         542 $expectation->at($_[1]);
4450            
4451 74         294 my $thisline;
4452 74         259 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4453              
4454            
4455              
4456 74   33     623 while (!$_matched && !$commit)
4457             {
4458            
4459 74 50       168 Parse::RecDescent::_trace(q{Trying production: [NIL]},
4460             Parse::RecDescent::_tracefirst($_[1]),
4461             q{bodyenc},
4462             $tracelevel)
4463             if defined $::RD_TRACE;
4464 74         163 my $thisprod = $thisrule->{"prods"}[0];
4465 74         130 $text = $_[1];
4466 74         103 my $_savetext;
4467 74         145 @item = (q{bodyenc});
4468 74         145 %item = (__RULE__ => q{bodyenc});
4469 74         112 my $repcount = 0;
4470              
4471              
4472 74 50       149 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
4473             Parse::RecDescent::_tracefirst($text),
4474             q{bodyenc},
4475             $tracelevel)
4476             if defined $::RD_TRACE;
4477 1     1   7 if (1) { no strict qw{refs};
  1         3  
  1         304  
  74         105  
4478 74         191 $expectation->is(q{})->at($text);
4479 74 50   74   663 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  74         176  
4480             {
4481            
4482 74 50       166 Parse::RecDescent::_trace(q{<>},
4483             Parse::RecDescent::_tracefirst($text),
4484             q{bodyenc},
4485             $tracelevel)
4486             if defined $::RD_TRACE;
4487 74         213 $expectation->failed();
4488 74         265 last;
4489             }
4490 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
4491             . $_tok . q{]},
4492              
4493             Parse::RecDescent::_tracefirst($text),
4494             q{bodyenc},
4495             $tracelevel)
4496             if defined $::RD_TRACE;
4497 0         0 $item{q{NIL}} = $_tok;
4498 0         0 push @item, $_tok;
4499            
4500             }
4501              
4502 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
4503             Parse::RecDescent::_tracefirst($text),
4504             q{bodyenc},
4505             $tracelevel)
4506             if defined $::RD_TRACE;
4507              
4508              
4509              
4510 0         0 $_matched = 1;
4511 0         0 last;
4512             }
4513              
4514             splice
4515 74 50       263 @{$thisparser->{deferred}}, $def_at unless $_matched;
  74         160  
4516            
4517 74   33     291 while (!$_matched && !$commit)
4518             {
4519            
4520 74 50       162 Parse::RecDescent::_trace(q{Trying production: [STRING]},
4521             Parse::RecDescent::_tracefirst($_[1]),
4522             q{bodyenc},
4523             $tracelevel)
4524             if defined $::RD_TRACE;
4525 74         145 my $thisprod = $thisrule->{"prods"}[1];
4526 74         137 $text = $_[1];
4527 74         108 my $_savetext;
4528 74         166 @item = (q{bodyenc});
4529 74         173 %item = (__RULE__ => q{bodyenc});
4530 74         123 my $repcount = 0;
4531              
4532              
4533 74 50       164 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
4534             Parse::RecDescent::_tracefirst($text),
4535             q{bodyenc},
4536             $tracelevel)
4537             if defined $::RD_TRACE;
4538 1     1   8 if (1) { no strict qw{refs};
  1         3  
  1         293  
  74         108  
4539 74         177 $expectation->is(q{})->at($text);
4540 74 50   74   1052 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  74         159  
4541             {
4542            
4543 0 0       0 Parse::RecDescent::_trace(q{<>},
4544             Parse::RecDescent::_tracefirst($text),
4545             q{bodyenc},
4546             $tracelevel)
4547             if defined $::RD_TRACE;
4548 0         0 $expectation->failed();
4549 0         0 last;
4550             }
4551 74 50       285 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
4552             . $_tok . q{]},
4553              
4554             Parse::RecDescent::_tracefirst($text),
4555             q{bodyenc},
4556             $tracelevel)
4557             if defined $::RD_TRACE;
4558 74         185 $item{q{STRING}} = $_tok;
4559 74         141 push @item, $_tok;
4560            
4561             }
4562              
4563 74 50       162 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
4564             Parse::RecDescent::_tracefirst($text),
4565             q{bodyenc},
4566             $tracelevel)
4567             if defined $::RD_TRACE;
4568              
4569              
4570              
4571 74         272 $_matched = 1;
4572 74         133 last;
4573             }
4574              
4575             splice
4576 74 50       193 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
4577            
4578 74   33     169 while (!$_matched && !$commit)
4579             {
4580            
4581 0 0       0 Parse::RecDescent::_trace(q{Trying production: [KVPAIRS]},
4582             Parse::RecDescent::_tracefirst($_[1]),
4583             q{bodyenc},
4584             $tracelevel)
4585             if defined $::RD_TRACE;
4586 0         0 my $thisprod = $thisrule->{"prods"}[2];
4587 0         0 $text = $_[1];
4588 0         0 my $_savetext;
4589 0         0 @item = (q{bodyenc});
4590 0         0 %item = (__RULE__ => q{bodyenc});
4591 0         0 my $repcount = 0;
4592              
4593              
4594 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [KVPAIRS]},
4595             Parse::RecDescent::_tracefirst($text),
4596             q{bodyenc},
4597             $tracelevel)
4598             if defined $::RD_TRACE;
4599 1     1   8 if (1) { no strict qw{refs};
  1         1  
  1         521  
  0         0  
4600 0         0 $expectation->is(q{})->at($text);
4601 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::KVPAIRS($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  0         0  
4602             {
4603            
4604 0 0       0 Parse::RecDescent::_trace(q{<>},
4605             Parse::RecDescent::_tracefirst($text),
4606             q{bodyenc},
4607             $tracelevel)
4608             if defined $::RD_TRACE;
4609 0         0 $expectation->failed();
4610 0         0 last;
4611             }
4612 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [KVPAIRS]<< (return value: [}
4613             . $_tok . q{]},
4614              
4615             Parse::RecDescent::_tracefirst($text),
4616             q{bodyenc},
4617             $tracelevel)
4618             if defined $::RD_TRACE;
4619 0         0 $item{q{KVPAIRS}} = $_tok;
4620 0         0 push @item, $_tok;
4621            
4622             }
4623              
4624 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [KVPAIRS]<<},
4625             Parse::RecDescent::_tracefirst($text),
4626             q{bodyenc},
4627             $tracelevel)
4628             if defined $::RD_TRACE;
4629              
4630              
4631              
4632 0         0 $_matched = 1;
4633 0         0 last;
4634             }
4635              
4636             splice
4637 74 50       164 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
4638            
4639 74 50 33     192 unless ( $_matched || defined($score) )
4640             {
4641 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
4642            
4643              
4644 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
4645 0 0       0 Parse::RecDescent::_trace(q{<>},
4646             Parse::RecDescent::_tracefirst($_[1]),
4647             q{bodyenc},
4648             $tracelevel)
4649             if defined $::RD_TRACE;
4650 0         0 return undef;
4651             }
4652 74 50 33     282 if (!defined($return) && defined($score))
4653             {
4654 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4655             q{bodyenc},
4656             $tracelevel)
4657             if defined $::RD_TRACE;
4658 0         0 $return = $score_return;
4659             }
4660 74         118 splice @{$thisparser->{errors}}, $err_at;
  74         163  
4661 74 50       182 $return = $item[$#item] unless defined $return;
4662 74 50       148 if (defined $::RD_TRACE)
4663             {
4664 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4665             $return . q{])}, "",
4666             q{bodyenc},
4667             $tracelevel);
4668 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4669             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4670             Parse::RecDescent::_tracefirst($text),
4671             , q{bodyenc},
4672             $tracelevel)
4673             }
4674 74         127 $_[1] = $text;
4675 74         405 return $return;
4676             }
4677              
4678             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
4679             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextensions
4680             {
4681 77     77   1242 my $thisparser = $_[0];
4682 1     1   9 use vars q{$tracelevel};
  1         1  
  1         367  
4683 77   50     201 local $tracelevel = ($tracelevel||0)+1;
4684 77         140 $ERRORS = 0;
4685 77         170 my $thisrule = $thisparser->{"rules"}{"bodyextensions"};
4686              
4687 77 50       157 Parse::RecDescent::_trace(q{Trying rule: [bodyextensions]},
4688             Parse::RecDescent::_tracefirst($_[1]),
4689             q{bodyextensions},
4690             $tracelevel)
4691             if defined $::RD_TRACE;
4692              
4693 77         120 my $def_at = @{$thisparser->{deferred}};
  77         189  
4694 77         132 my $err_at = @{$thisparser->{errors}};
  77         149  
4695              
4696 77         188 my $score;
4697             my $score_return;
4698 77         0 my $_tok;
4699 77         119 my $return = undef;
4700 77         117 my $_matched=0;
4701 77         113 my $commit=0;
4702 77         124 my @item = ();
4703 77         155 my %item = ();
4704 77         111 my $repeating = $_[2];
4705 77         112 my $_noactions = $_[3];
4706 77 50       211 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  77         113  
  77         147  
4707 77         130 my $_itempos = $_[5];
4708 77 50       229 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4709 77         184 my $text;
4710             my $lastsep;
4711 77         0 my $current_match;
4712 77         197 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING});
4713 77         546 $expectation->at($_[1]);
4714            
4715 77         330 my $thisline;
4716 77         274 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4717              
4718            
4719              
4720 77   33     623 while (!$_matched && !$commit)
4721             {
4722            
4723 77 50       169 Parse::RecDescent::_trace(q{Trying production: [NIL]},
4724             Parse::RecDescent::_tracefirst($_[1]),
4725             q{bodyextensions},
4726             $tracelevel)
4727             if defined $::RD_TRACE;
4728 77         174 my $thisprod = $thisrule->{"prods"}[0];
4729 77         134 $text = $_[1];
4730 77         118 my $_savetext;
4731 77         173 @item = (q{bodyextensions});
4732 77         148 %item = (__RULE__ => q{bodyextensions});
4733 77         125 my $repcount = 0;
4734              
4735              
4736 77 50       171 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
4737             Parse::RecDescent::_tracefirst($text),
4738             q{bodyextensions},
4739             $tracelevel)
4740             if defined $::RD_TRACE;
4741 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         275  
  77         141  
4742 77         181 $expectation->is(q{})->at($text);
4743 77 100   77   705 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  77         168  
4744             {
4745            
4746 72 50       174 Parse::RecDescent::_trace(q{<>},
4747             Parse::RecDescent::_tracefirst($text),
4748             q{bodyextensions},
4749             $tracelevel)
4750             if defined $::RD_TRACE;
4751 72         231 $expectation->failed();
4752 72         262 last;
4753             }
4754 5 50       20 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
4755             . $_tok . q{]},
4756              
4757             Parse::RecDescent::_tracefirst($text),
4758             q{bodyextensions},
4759             $tracelevel)
4760             if defined $::RD_TRACE;
4761 5         11 $item{q{NIL}} = $_tok;
4762 5         13 push @item, $_tok;
4763            
4764             }
4765              
4766 5 50       14 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
4767             Parse::RecDescent::_tracefirst($text),
4768             q{bodyextensions},
4769             $tracelevel)
4770             if defined $::RD_TRACE;
4771              
4772              
4773              
4774 5         9 $_matched = 1;
4775 5         9 last;
4776             }
4777              
4778             splice
4779 77 100       267 @{$thisparser->{deferred}}, $def_at unless $_matched;
  72         152  
4780            
4781 77   66     284 while (!$_matched && !$commit)
4782             {
4783            
4784 72 50       150 Parse::RecDescent::_trace(q{Trying production: [STRING]},
4785             Parse::RecDescent::_tracefirst($_[1]),
4786             q{bodyextensions},
4787             $tracelevel)
4788             if defined $::RD_TRACE;
4789 72         130 my $thisprod = $thisrule->{"prods"}[1];
4790 72         127 $text = $_[1];
4791 72         99 my $_savetext;
4792 72         156 @item = (q{bodyextensions});
4793 72         513 %item = (__RULE__ => q{bodyextensions});
4794 72         126 my $repcount = 0;
4795              
4796              
4797 72 50       179 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
4798             Parse::RecDescent::_tracefirst($text),
4799             q{bodyextensions},
4800             $tracelevel)
4801             if defined $::RD_TRACE;
4802 1     1   7 if (1) { no strict qw{refs};
  1         13  
  1         494  
  72         107  
4803 72         185 $expectation->is(q{})->at($text);
4804 72 50   72   681 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  72         134  
4805             {
4806            
4807 72 50       160 Parse::RecDescent::_trace(q{<>},
4808             Parse::RecDescent::_tracefirst($text),
4809             q{bodyextensions},
4810             $tracelevel)
4811             if defined $::RD_TRACE;
4812 72         210 $expectation->failed();
4813 72         281 last;
4814             }
4815 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
4816             . $_tok . q{]},
4817              
4818             Parse::RecDescent::_tracefirst($text),
4819             q{bodyextensions},
4820             $tracelevel)
4821             if defined $::RD_TRACE;
4822 0         0 $item{q{STRING}} = $_tok;
4823 0         0 push @item, $_tok;
4824            
4825             }
4826              
4827 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
4828             Parse::RecDescent::_tracefirst($text),
4829             q{bodyextensions},
4830             $tracelevel)
4831             if defined $::RD_TRACE;
4832              
4833              
4834              
4835 0         0 $_matched = 1;
4836 0         0 last;
4837             }
4838              
4839             splice
4840 77 100       242 @{$thisparser->{deferred}}, $def_at unless $_matched;
  72         155  
4841            
4842 77 100 66     251 unless ( $_matched || defined($score) )
4843             {
4844 72         120 splice @{$thisparser->{deferred}}, $def_at;
  72         139  
4845            
4846              
4847 72         139 $_[1] = $text; # NOT SURE THIS IS NEEDED
4848 72 50       159 Parse::RecDescent::_trace(q{<>},
4849             Parse::RecDescent::_tracefirst($_[1]),
4850             q{bodyextensions},
4851             $tracelevel)
4852             if defined $::RD_TRACE;
4853 72         337 return undef;
4854             }
4855 5 50 33     78 if (!defined($return) && defined($score))
4856             {
4857 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4858             q{bodyextensions},
4859             $tracelevel)
4860             if defined $::RD_TRACE;
4861 0         0 $return = $score_return;
4862             }
4863 5         10 splice @{$thisparser->{errors}}, $err_at;
  5         11  
4864 5 50       17 $return = $item[$#item] unless defined $return;
4865 5 50       13 if (defined $::RD_TRACE)
4866             {
4867 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4868             $return . q{])}, "",
4869             q{bodyextensions},
4870             $tracelevel);
4871 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4872             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4873             Parse::RecDescent::_tracefirst($text),
4874             , q{bodyextensions},
4875             $tracelevel)
4876             }
4877 5         10 $_[1] = $text;
4878 5         28 return $return;
4879             }
4880              
4881             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
4882             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextra
4883             {
4884 105     105   1774 my $thisparser = $_[0];
4885 1     1   8 use vars q{$tracelevel};
  1         2  
  1         352  
4886 105   50     263 local $tracelevel = ($tracelevel||0)+1;
4887 105         167 $ERRORS = 0;
4888 105         258 my $thisrule = $thisparser->{"rules"}{"bodyextra"};
4889              
4890 105 50       249 Parse::RecDescent::_trace(q{Trying rule: [bodyextra]},
4891             Parse::RecDescent::_tracefirst($_[1]),
4892             q{bodyextra},
4893             $tracelevel)
4894             if defined $::RD_TRACE;
4895              
4896 105         155 my $def_at = @{$thisparser->{deferred}};
  105         202  
4897 105         160 my $err_at = @{$thisparser->{errors}};
  105         199  
4898              
4899 105         259 my $score;
4900             my $score_return;
4901 105         0 my $_tok;
4902 105         177 my $return = undef;
4903 105         157 my $_matched=0;
4904 105         157 my $commit=0;
4905 105         160 my @item = ();
4906 105         185 my %item = ();
4907 105         165 my $repeating = $_[2];
4908 105         164 my $_noactions = $_[3];
4909 105 50       215 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  105         148  
  105         200  
4910 105         171 my $_itempos = $_[5];
4911 105 50       242 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4912 105         275 my $text;
4913             my $lastsep;
4914 105         0 my $current_match;
4915 105         274 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING, or STRINGS});
4916 105         742 $expectation->at($_[1]);
4917            
4918 105         479 my $thisline;
4919 105         379 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4920              
4921            
4922              
4923 105   33     851 while (!$_matched && !$commit)
4924             {
4925            
4926 105 50       224 Parse::RecDescent::_trace(q{Trying production: [NIL]},
4927             Parse::RecDescent::_tracefirst($_[1]),
4928             q{bodyextra},
4929             $tracelevel)
4930             if defined $::RD_TRACE;
4931 105         263 my $thisprod = $thisrule->{"prods"}[0];
4932 105         189 $text = $_[1];
4933 105         147 my $_savetext;
4934 105         204 @item = (q{bodyextra});
4935 105         203 %item = (__RULE__ => q{bodyextra});
4936 105         150 my $repcount = 0;
4937              
4938              
4939 105 50       218 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
4940             Parse::RecDescent::_tracefirst($text),
4941             q{bodyextra},
4942             $tracelevel)
4943             if defined $::RD_TRACE;
4944 1     1   8 if (1) { no strict qw{refs};
  1         3  
  1         314  
  105         148  
4945 105         247 $expectation->is(q{})->at($text);
4946 105 100   105   1046 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  105         206  
4947             {
4948            
4949 47 50       117 Parse::RecDescent::_trace(q{<>},
4950             Parse::RecDescent::_tracefirst($text),
4951             q{bodyextra},
4952             $tracelevel)
4953             if defined $::RD_TRACE;
4954 47         131 $expectation->failed();
4955 47         156 last;
4956             }
4957 58 50       238 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
4958             . $_tok . q{]},
4959              
4960             Parse::RecDescent::_tracefirst($text),
4961             q{bodyextra},
4962             $tracelevel)
4963             if defined $::RD_TRACE;
4964 58         155 $item{q{NIL}} = $_tok;
4965 58         122 push @item, $_tok;
4966            
4967             }
4968              
4969 58 50       132 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
4970             Parse::RecDescent::_tracefirst($text),
4971             q{bodyextra},
4972             $tracelevel)
4973             if defined $::RD_TRACE;
4974              
4975              
4976              
4977 58         92 $_matched = 1;
4978 58         102 last;
4979             }
4980              
4981             splice
4982 105 100       297 @{$thisparser->{deferred}}, $def_at unless $_matched;
  47         174  
4983            
4984 105   66     328 while (!$_matched && !$commit)
4985             {
4986            
4987 47 50       103 Parse::RecDescent::_trace(q{Trying production: [STRING]},
4988             Parse::RecDescent::_tracefirst($_[1]),
4989             q{bodyextra},
4990             $tracelevel)
4991             if defined $::RD_TRACE;
4992 47         97 my $thisprod = $thisrule->{"prods"}[1];
4993 47         87 $text = $_[1];
4994 47         101 my $_savetext;
4995 47         118 @item = (q{bodyextra});
4996 47         112 %item = (__RULE__ => q{bodyextra});
4997 47         73 my $repcount = 0;
4998              
4999              
5000 47 50       87 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
5001             Parse::RecDescent::_tracefirst($text),
5002             q{bodyextra},
5003             $tracelevel)
5004             if defined $::RD_TRACE;
5005 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         295  
  47         77  
5006 47         104 $expectation->is(q{})->at($text);
5007 47 50   47   508 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  47         91  
5008             {
5009            
5010 47 50       97 Parse::RecDescent::_trace(q{<>},
5011             Parse::RecDescent::_tracefirst($text),
5012             q{bodyextra},
5013             $tracelevel)
5014             if defined $::RD_TRACE;
5015 47         134 $expectation->failed();
5016 47         162 last;
5017             }
5018 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
5019             . $_tok . q{]},
5020              
5021             Parse::RecDescent::_tracefirst($text),
5022             q{bodyextra},
5023             $tracelevel)
5024             if defined $::RD_TRACE;
5025 0         0 $item{q{STRING}} = $_tok;
5026 0         0 push @item, $_tok;
5027            
5028             }
5029              
5030 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
5031             Parse::RecDescent::_tracefirst($text),
5032             q{bodyextra},
5033             $tracelevel)
5034             if defined $::RD_TRACE;
5035              
5036              
5037              
5038 0         0 $_matched = 1;
5039 0         0 last;
5040             }
5041              
5042             splice
5043 105 100       297 @{$thisparser->{deferred}}, $def_at unless $_matched;
  47         106  
5044            
5045 105   66     342 while (!$_matched && !$commit)
5046             {
5047            
5048 47 50       97 Parse::RecDescent::_trace(q{Trying production: [STRINGS]},
5049             Parse::RecDescent::_tracefirst($_[1]),
5050             q{bodyextra},
5051             $tracelevel)
5052             if defined $::RD_TRACE;
5053 47         126 my $thisprod = $thisrule->{"prods"}[2];
5054 47         91 $text = $_[1];
5055 47         68 my $_savetext;
5056 47         127 @item = (q{bodyextra});
5057 47         113 %item = (__RULE__ => q{bodyextra});
5058 47         78 my $repcount = 0;
5059              
5060              
5061 47 50       110 Parse::RecDescent::_trace(q{Trying subrule: [STRINGS]},
5062             Parse::RecDescent::_tracefirst($text),
5063             q{bodyextra},
5064             $tracelevel)
5065             if defined $::RD_TRACE;
5066 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         480  
  47         72  
5067 47         113 $expectation->is(q{})->at($text);
5068 47 50   47   479 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRINGS($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  47         114  
5069             {
5070            
5071 47 50       99 Parse::RecDescent::_trace(q{<>},
5072             Parse::RecDescent::_tracefirst($text),
5073             q{bodyextra},
5074             $tracelevel)
5075             if defined $::RD_TRACE;
5076 47         132 $expectation->failed();
5077 47         193 last;
5078             }
5079 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [STRINGS]<< (return value: [}
5080             . $_tok . q{]},
5081              
5082             Parse::RecDescent::_tracefirst($text),
5083             q{bodyextra},
5084             $tracelevel)
5085             if defined $::RD_TRACE;
5086 0         0 $item{q{STRINGS}} = $_tok;
5087 0         0 push @item, $_tok;
5088            
5089             }
5090              
5091 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [STRINGS]<<},
5092             Parse::RecDescent::_tracefirst($text),
5093             q{bodyextra},
5094             $tracelevel)
5095             if defined $::RD_TRACE;
5096              
5097              
5098              
5099 0         0 $_matched = 1;
5100 0         0 last;
5101             }
5102              
5103             splice
5104 105 100       315 @{$thisparser->{deferred}}, $def_at unless $_matched;
  47         114  
5105            
5106 105 100 66     310 unless ( $_matched || defined($score) )
5107             {
5108 47         84 splice @{$thisparser->{deferred}}, $def_at;
  47         98  
5109            
5110              
5111 47         93 $_[1] = $text; # NOT SURE THIS IS NEEDED
5112 47 50       106 Parse::RecDescent::_trace(q{<>},
5113             Parse::RecDescent::_tracefirst($_[1]),
5114             q{bodyextra},
5115             $tracelevel)
5116             if defined $::RD_TRACE;
5117 47         215 return undef;
5118             }
5119 58 50 33     249 if (!defined($return) && defined($score))
5120             {
5121 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5122             q{bodyextra},
5123             $tracelevel)
5124             if defined $::RD_TRACE;
5125 0         0 $return = $score_return;
5126             }
5127 58         105 splice @{$thisparser->{errors}}, $err_at;
  58         131  
5128 58 50       171 $return = $item[$#item] unless defined $return;
5129 58 50       135 if (defined $::RD_TRACE)
5130             {
5131 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5132             $return . q{])}, "",
5133             q{bodyextra},
5134             $tracelevel);
5135 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5136             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5137             Parse::RecDescent::_tracefirst($text),
5138             , q{bodyextra},
5139             $tracelevel)
5140             }
5141 58         99 $_[1] = $text;
5142 58         282 return $return;
5143             }
5144              
5145             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
5146             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyid
5147             {
5148 74     74   938 my $thisparser = $_[0];
5149 1     1   8 use vars q{$tracelevel};
  1         3  
  1         539  
5150 74   50     212 local $tracelevel = ($tracelevel||0)+1;
5151 74         124 $ERRORS = 0;
5152 74         165 my $thisrule = $thisparser->{"rules"}{"bodyid"};
5153              
5154 74 50       174 Parse::RecDescent::_trace(q{Trying rule: [bodyid]},
5155             Parse::RecDescent::_tracefirst($_[1]),
5156             q{bodyid},
5157             $tracelevel)
5158             if defined $::RD_TRACE;
5159              
5160 74         108 my $def_at = @{$thisparser->{deferred}};
  74         152  
5161 74         113 my $err_at = @{$thisparser->{errors}};
  74         132  
5162              
5163 74         168 my $score;
5164             my $score_return;
5165 74         0 my $_tok;
5166 74         102 my $return = undef;
5167 74         137 my $_matched=0;
5168 74         141 my $commit=0;
5169 74         126 my @item = ();
5170 74         190 my %item = ();
5171 74         114 my $repeating = $_[2];
5172 74         114 my $_noactions = $_[3];
5173 74 50       147 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  74         109  
  74         176  
5174 74         119 my $_itempos = $_[5];
5175 74 50       177 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5176 74         177 my $text;
5177             my $lastsep;
5178 74         0 my $current_match;
5179 74         200 my $expectation = new Parse::RecDescent::Expectation(q{/[()]/, or STRING});
5180 74         522 $expectation->at($_[1]);
5181            
5182 74         298 my $thisline;
5183 74         289 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5184              
5185            
5186              
5187 74   33     623 while (!$_matched && !$commit)
5188             {
5189            
5190 74 50       211 Parse::RecDescent::_trace(q{Trying production: [/[()]/ NIL]},
5191             Parse::RecDescent::_tracefirst($_[1]),
5192             q{bodyid},
5193             $tracelevel)
5194             if defined $::RD_TRACE;
5195 74         208 my $thisprod = $thisrule->{"prods"}[0];
5196 74         140 $text = $_[1];
5197 74         147 my $_savetext;
5198 74         196 @item = (q{bodyid});
5199 74         159 %item = (__RULE__ => q{bodyid});
5200 74         112 my $repcount = 0;
5201              
5202              
5203 74 50       155 Parse::RecDescent::_trace(q{Trying terminal: [/[()]/]}, Parse::RecDescent::_tracefirst($text),
5204             q{bodyid},
5205             $tracelevel)
5206             if defined $::RD_TRACE;
5207 74         161 undef $lastsep;
5208 74         175 $expectation->is(q{})->at($text);
5209 74         501 $_savetext = $text;
5210              
5211 74 50 33     491 if ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[()])/)
  74 50       755  
5212             {
5213 0         0 $text = $_savetext;
5214 0         0 $expectation->failed();
5215 0 0       0 Parse::RecDescent::_trace(q{<>},
5216             Parse::RecDescent::_tracefirst($text))
5217             if defined $::RD_TRACE;
5218              
5219 0         0 last;
5220             }
5221 74         378 $current_match = substr($text, $-[0], $+[0] - $-[0]);
5222 74         195 substr($text,0,length($current_match),q{});
5223 74 50       193 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5224             . $current_match . q{])},
5225             Parse::RecDescent::_tracefirst($text))
5226             if defined $::RD_TRACE;
5227 74         213 push @item, $item{__PATTERN1__}=$current_match;
5228 74         178 $text = $_savetext;
5229              
5230 74 50       199 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
5231             Parse::RecDescent::_tracefirst($text),
5232             q{bodyid},
5233             $tracelevel)
5234             if defined $::RD_TRACE;
5235 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         305  
  74         120  
5236 74         198 $expectation->is(q{NIL})->at($text);
5237 74 100   74   766 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  74         132  
5238             {
5239            
5240 2 50       7 Parse::RecDescent::_trace(q{<>},
5241             Parse::RecDescent::_tracefirst($text),
5242             q{bodyid},
5243             $tracelevel)
5244             if defined $::RD_TRACE;
5245 2         7 $expectation->failed();
5246 2         18 last;
5247             }
5248 72 50       266 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
5249             . $_tok . q{]},
5250              
5251             Parse::RecDescent::_tracefirst($text),
5252             q{bodyid},
5253             $tracelevel)
5254             if defined $::RD_TRACE;
5255 72         154 $item{q{NIL}} = $_tok;
5256 72         120 push @item, $_tok;
5257            
5258             }
5259              
5260 72 50       155 Parse::RecDescent::_trace(q{>>Matched production: [/[()]/ NIL]<<},
5261             Parse::RecDescent::_tracefirst($text),
5262             q{bodyid},
5263             $tracelevel)
5264             if defined $::RD_TRACE;
5265              
5266              
5267              
5268 72         135 $_matched = 1;
5269 72         140 last;
5270             }
5271              
5272             splice
5273 74 100       159 @{$thisparser->{deferred}}, $def_at unless $_matched;
  2         7  
5274            
5275 74   66     190 while (!$_matched && !$commit)
5276             {
5277            
5278 2 50       8 Parse::RecDescent::_trace(q{Trying production: [STRING]},
5279             Parse::RecDescent::_tracefirst($_[1]),
5280             q{bodyid},
5281             $tracelevel)
5282             if defined $::RD_TRACE;
5283 2         5 my $thisprod = $thisrule->{"prods"}[1];
5284 2         8 $text = $_[1];
5285 2         5 my $_savetext;
5286 2         8 @item = (q{bodyid});
5287 2         7 %item = (__RULE__ => q{bodyid});
5288 2         6 my $repcount = 0;
5289              
5290              
5291 2 50       7 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
5292             Parse::RecDescent::_tracefirst($text),
5293             q{bodyid},
5294             $tracelevel)
5295             if defined $::RD_TRACE;
5296 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         524  
  2         4  
5297 2         8 $expectation->is(q{})->at($text);
5298 2 50   2   25 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  2         6  
5299             {
5300            
5301 0 0       0 Parse::RecDescent::_trace(q{<>},
5302             Parse::RecDescent::_tracefirst($text),
5303             q{bodyid},
5304             $tracelevel)
5305             if defined $::RD_TRACE;
5306 0         0 $expectation->failed();
5307 0         0 last;
5308             }
5309 2 50       9 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
5310             . $_tok . q{]},
5311              
5312             Parse::RecDescent::_tracefirst($text),
5313             q{bodyid},
5314             $tracelevel)
5315             if defined $::RD_TRACE;
5316 2         5 $item{q{STRING}} = $_tok;
5317 2         6 push @item, $_tok;
5318            
5319             }
5320              
5321 2 50       6 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
5322             Parse::RecDescent::_tracefirst($text),
5323             q{bodyid},
5324             $tracelevel)
5325             if defined $::RD_TRACE;
5326              
5327              
5328              
5329 2         5 $_matched = 1;
5330 2         4 last;
5331             }
5332              
5333             splice
5334 74 50       142 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
5335            
5336 74 50 33     206 unless ( $_matched || defined($score) )
5337             {
5338 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
5339            
5340              
5341 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
5342 0 0       0 Parse::RecDescent::_trace(q{<>},
5343             Parse::RecDescent::_tracefirst($_[1]),
5344             q{bodyid},
5345             $tracelevel)
5346             if defined $::RD_TRACE;
5347 0         0 return undef;
5348             }
5349 74 50 33     262 if (!defined($return) && defined($score))
5350             {
5351 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5352             q{bodyid},
5353             $tracelevel)
5354             if defined $::RD_TRACE;
5355 0         0 $return = $score_return;
5356             }
5357 74         109 splice @{$thisparser->{errors}}, $err_at;
  74         142  
5358 74 50       183 $return = $item[$#item] unless defined $return;
5359 74 50       158 if (defined $::RD_TRACE)
5360             {
5361 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5362             $return . q{])}, "",
5363             q{bodyid},
5364             $tracelevel);
5365 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5366             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5367             Parse::RecDescent::_tracefirst($text),
5368             , q{bodyid},
5369             $tracelevel)
5370             }
5371 74         143 $_[1] = $text;
5372 74         418 return $return;
5373             }
5374              
5375             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
5376             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodylang
5377             {
5378 105     105   1789 my $thisparser = $_[0];
5379 1     1   8 use vars q{$tracelevel};
  1         3  
  1         355  
5380 105   50     266 local $tracelevel = ($tracelevel||0)+1;
5381 105         163 $ERRORS = 0;
5382 105         205 my $thisrule = $thisparser->{"rules"}{"bodylang"};
5383              
5384 105 50       243 Parse::RecDescent::_trace(q{Trying rule: [bodylang]},
5385             Parse::RecDescent::_tracefirst($_[1]),
5386             q{bodylang},
5387             $tracelevel)
5388             if defined $::RD_TRACE;
5389              
5390 105         175 my $def_at = @{$thisparser->{deferred}};
  105         217  
5391 105         175 my $err_at = @{$thisparser->{errors}};
  105         179  
5392              
5393 105         247 my $score;
5394             my $score_return;
5395 105         0 my $_tok;
5396 105         141 my $return = undef;
5397 105         154 my $_matched=0;
5398 105         167 my $commit=0;
5399 105         223 my @item = ();
5400 105         168 my %item = ();
5401 105         154 my $repeating = $_[2];
5402 105         175 my $_noactions = $_[3];
5403 105 50       223 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  105         136  
  105         190  
5404 105         180 my $_itempos = $_[5];
5405 105 50       246 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5406 105         252 my $text;
5407             my $lastsep;
5408 105         0 my $current_match;
5409 105         284 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING, or STRINGS});
5410 105         736 $expectation->at($_[1]);
5411            
5412 105         419 my $thisline;
5413 105         361 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5414              
5415            
5416              
5417 105   33     838 while (!$_matched && !$commit)
5418             {
5419            
5420 105 50       255 Parse::RecDescent::_trace(q{Trying production: [NIL]},
5421             Parse::RecDescent::_tracefirst($_[1]),
5422             q{bodylang},
5423             $tracelevel)
5424             if defined $::RD_TRACE;
5425 105         263 my $thisprod = $thisrule->{"prods"}[0];
5426 105         169 $text = $_[1];
5427 105         142 my $_savetext;
5428 105         199 @item = (q{bodylang});
5429 105         197 %item = (__RULE__ => q{bodylang});
5430 105         193 my $repcount = 0;
5431              
5432              
5433 105 50       209 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
5434             Parse::RecDescent::_tracefirst($text),
5435             q{bodylang},
5436             $tracelevel)
5437             if defined $::RD_TRACE;
5438 1     1   8 if (1) { no strict qw{refs};
  1         10  
  1         293  
  105         150  
5439 105         311 $expectation->is(q{})->at($text);
5440 105 100   105   956 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  105         197  
5441             {
5442            
5443 11 50       28 Parse::RecDescent::_trace(q{<>},
5444             Parse::RecDescent::_tracefirst($text),
5445             q{bodylang},
5446             $tracelevel)
5447             if defined $::RD_TRACE;
5448 11         36 $expectation->failed();
5449 11         37 last;
5450             }
5451 94 50       381 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
5452             . $_tok . q{]},
5453              
5454             Parse::RecDescent::_tracefirst($text),
5455             q{bodylang},
5456             $tracelevel)
5457             if defined $::RD_TRACE;
5458 94         198 $item{q{NIL}} = $_tok;
5459 94         187 push @item, $_tok;
5460            
5461             }
5462              
5463 94 50       403 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
5464             Parse::RecDescent::_tracefirst($text),
5465             q{bodylang},
5466             $tracelevel)
5467             if defined $::RD_TRACE;
5468              
5469              
5470              
5471 94         138 $_matched = 1;
5472 94         156 last;
5473             }
5474              
5475             splice
5476 105 100       264 @{$thisparser->{deferred}}, $def_at unless $_matched;
  11         24  
5477            
5478 105   66     273 while (!$_matched && !$commit)
5479             {
5480            
5481 11 50       27 Parse::RecDescent::_trace(q{Trying production: [STRING]},
5482             Parse::RecDescent::_tracefirst($_[1]),
5483             q{bodylang},
5484             $tracelevel)
5485             if defined $::RD_TRACE;
5486 11         22 my $thisprod = $thisrule->{"prods"}[1];
5487 11         20 $text = $_[1];
5488 11         14 my $_savetext;
5489 11         26 @item = (q{bodylang});
5490 11         27 %item = (__RULE__ => q{bodylang});
5491 11         19 my $repcount = 0;
5492              
5493              
5494 11 50       24 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
5495             Parse::RecDescent::_tracefirst($text),
5496             q{bodylang},
5497             $tracelevel)
5498             if defined $::RD_TRACE;
5499 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         324  
  11         13  
5500 11         28 $expectation->is(q{})->at($text);
5501 11 50   11   108 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  11         23  
5502             {
5503            
5504 11 50       27 Parse::RecDescent::_trace(q{<>},
5505             Parse::RecDescent::_tracefirst($text),
5506             q{bodylang},
5507             $tracelevel)
5508             if defined $::RD_TRACE;
5509 11         30 $expectation->failed();
5510 11         41 last;
5511             }
5512 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
5513             . $_tok . q{]},
5514              
5515             Parse::RecDescent::_tracefirst($text),
5516             q{bodylang},
5517             $tracelevel)
5518             if defined $::RD_TRACE;
5519 0         0 $item{q{STRING}} = $_tok;
5520 0         0 push @item, $_tok;
5521            
5522             }
5523              
5524 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
5525             Parse::RecDescent::_tracefirst($text),
5526             q{bodylang},
5527             $tracelevel)
5528             if defined $::RD_TRACE;
5529              
5530              
5531              
5532 0         0 $_matched = 1;
5533 0         0 last;
5534             }
5535              
5536             splice
5537 105 100       231 @{$thisparser->{deferred}}, $def_at unless $_matched;
  11         23  
5538            
5539 105   66     249 while (!$_matched && !$commit)
5540             {
5541            
5542 11 50       25 Parse::RecDescent::_trace(q{Trying production: [STRINGS]},
5543             Parse::RecDescent::_tracefirst($_[1]),
5544             q{bodylang},
5545             $tracelevel)
5546             if defined $::RD_TRACE;
5547 11         25 my $thisprod = $thisrule->{"prods"}[2];
5548 11         21 $text = $_[1];
5549 11         16 my $_savetext;
5550 11         25 @item = (q{bodylang});
5551 11         28 %item = (__RULE__ => q{bodylang});
5552 11         14 my $repcount = 0;
5553              
5554              
5555 11 50       24 Parse::RecDescent::_trace(q{Trying subrule: [STRINGS]},
5556             Parse::RecDescent::_tracefirst($text),
5557             q{bodylang},
5558             $tracelevel)
5559             if defined $::RD_TRACE;
5560 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         486  
  11         15  
5561 11         26 $expectation->is(q{})->at($text);
5562 11 100   11   108 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRINGS($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  11         20  
5563             {
5564            
5565 10 50       22 Parse::RecDescent::_trace(q{<>},
5566             Parse::RecDescent::_tracefirst($text),
5567             q{bodylang},
5568             $tracelevel)
5569             if defined $::RD_TRACE;
5570 10         26 $expectation->failed();
5571 10         34 last;
5572             }
5573 1 50       6 Parse::RecDescent::_trace(q{>>Matched subrule: [STRINGS]<< (return value: [}
5574             . $_tok . q{]},
5575              
5576             Parse::RecDescent::_tracefirst($text),
5577             q{bodylang},
5578             $tracelevel)
5579             if defined $::RD_TRACE;
5580 1         3 $item{q{STRINGS}} = $_tok;
5581 1         3 push @item, $_tok;
5582            
5583             }
5584              
5585 1 50       3 Parse::RecDescent::_trace(q{>>Matched production: [STRINGS]<<},
5586             Parse::RecDescent::_tracefirst($text),
5587             q{bodylang},
5588             $tracelevel)
5589             if defined $::RD_TRACE;
5590              
5591              
5592              
5593 1         3 $_matched = 1;
5594 1         12 last;
5595             }
5596              
5597             splice
5598 105 100       249 @{$thisparser->{deferred}}, $def_at unless $_matched;
  10         18  
5599            
5600 105 100 66     248 unless ( $_matched || defined($score) )
5601             {
5602 10         13 splice @{$thisparser->{deferred}}, $def_at;
  10         20  
5603            
5604              
5605 10         16 $_[1] = $text; # NOT SURE THIS IS NEEDED
5606 10 50       31 Parse::RecDescent::_trace(q{<>},
5607             Parse::RecDescent::_tracefirst($_[1]),
5608             q{bodylang},
5609             $tracelevel)
5610             if defined $::RD_TRACE;
5611 10         59 return undef;
5612             }
5613 95 50 33     324 if (!defined($return) && defined($score))
5614             {
5615 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5616             q{bodylang},
5617             $tracelevel)
5618             if defined $::RD_TRACE;
5619 0         0 $return = $score_return;
5620             }
5621 95         145 splice @{$thisparser->{errors}}, $err_at;
  95         183  
5622 95 50       237 $return = $item[$#item] unless defined $return;
5623 95 50       195 if (defined $::RD_TRACE)
5624             {
5625 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5626             $return . q{])}, "",
5627             q{bodylang},
5628             $tracelevel);
5629 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5630             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5631             Parse::RecDescent::_tracefirst($text),
5632             , q{bodylang},
5633             $tracelevel)
5634             }
5635 95         143 $_[1] = $text;
5636 95         457 return $return;
5637             }
5638              
5639             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
5640             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyloc
5641             {
5642 31     31   511 my $thisparser = $_[0];
5643 1     1   8 use vars q{$tracelevel};
  1         2  
  1         364  
5644 31   50     94 local $tracelevel = ($tracelevel||0)+1;
5645 31         53 $ERRORS = 0;
5646 31         71 my $thisrule = $thisparser->{"rules"}{"bodyloc"};
5647              
5648 31 50       80 Parse::RecDescent::_trace(q{Trying rule: [bodyloc]},
5649             Parse::RecDescent::_tracefirst($_[1]),
5650             q{bodyloc},
5651             $tracelevel)
5652             if defined $::RD_TRACE;
5653              
5654 31         59 my $def_at = @{$thisparser->{deferred}};
  31         79  
5655 31         61 my $err_at = @{$thisparser->{errors}};
  31         65  
5656              
5657 31         76 my $score;
5658             my $score_return;
5659 31         0 my $_tok;
5660 31         43 my $return = undef;
5661 31         51 my $_matched=0;
5662 31         55 my $commit=0;
5663 31         49 my @item = ();
5664 31         63 my %item = ();
5665 31         55 my $repeating = $_[2];
5666 31         50 my $_noactions = $_[3];
5667 31 50       65 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  31         49  
  31         53  
5668 31         51 my $_itempos = $_[5];
5669 31 50       87 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5670 31         97 my $text;
5671             my $lastsep;
5672 31         0 my $current_match;
5673 31         98 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING});
5674 31         231 $expectation->at($_[1]);
5675            
5676 31         122 my $thisline;
5677 31         119 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5678              
5679            
5680              
5681 31   33     276 while (!$_matched && !$commit)
5682             {
5683            
5684 31 50       80 Parse::RecDescent::_trace(q{Trying production: [NIL]},
5685             Parse::RecDescent::_tracefirst($_[1]),
5686             q{bodyloc},
5687             $tracelevel)
5688             if defined $::RD_TRACE;
5689 31         80 my $thisprod = $thisrule->{"prods"}[0];
5690 31         62 $text = $_[1];
5691 31         77 my $_savetext;
5692 31         66 @item = (q{bodyloc});
5693 31         74 %item = (__RULE__ => q{bodyloc});
5694 31         49 my $repcount = 0;
5695              
5696              
5697 31 50       77 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
5698             Parse::RecDescent::_tracefirst($text),
5699             q{bodyloc},
5700             $tracelevel)
5701             if defined $::RD_TRACE;
5702 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         278  
  31         43  
5703 31         82 $expectation->is(q{})->at($text);
5704 31 100   31   333 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  31         62  
5705             {
5706            
5707 9 50       24 Parse::RecDescent::_trace(q{<>},
5708             Parse::RecDescent::_tracefirst($text),
5709             q{bodyloc},
5710             $tracelevel)
5711             if defined $::RD_TRACE;
5712 9         22 $expectation->failed();
5713 9         33 last;
5714             }
5715 22 50       109 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
5716             . $_tok . q{]},
5717              
5718             Parse::RecDescent::_tracefirst($text),
5719             q{bodyloc},
5720             $tracelevel)
5721             if defined $::RD_TRACE;
5722 22         59 $item{q{NIL}} = $_tok;
5723 22         100 push @item, $_tok;
5724            
5725             }
5726              
5727 22 50       106 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
5728             Parse::RecDescent::_tracefirst($text),
5729             q{bodyloc},
5730             $tracelevel)
5731             if defined $::RD_TRACE;
5732              
5733              
5734              
5735 22         54 $_matched = 1;
5736 22         52 last;
5737             }
5738              
5739             splice
5740 31 100       92 @{$thisparser->{deferred}}, $def_at unless $_matched;
  9         28  
5741            
5742 31   66     117 while (!$_matched && !$commit)
5743             {
5744            
5745 9 50       22 Parse::RecDescent::_trace(q{Trying production: [STRING]},
5746             Parse::RecDescent::_tracefirst($_[1]),
5747             q{bodyloc},
5748             $tracelevel)
5749             if defined $::RD_TRACE;
5750 9         20 my $thisprod = $thisrule->{"prods"}[1];
5751 9         15 $text = $_[1];
5752 9         13 my $_savetext;
5753 9         21 @item = (q{bodyloc});
5754 9         20 %item = (__RULE__ => q{bodyloc});
5755 9         15 my $repcount = 0;
5756              
5757              
5758 9 50       20 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
5759             Parse::RecDescent::_tracefirst($text),
5760             q{bodyloc},
5761             $tracelevel)
5762             if defined $::RD_TRACE;
5763 1     1   45 if (1) { no strict qw{refs};
  1         4  
  1         433  
  9         20  
5764 9         23 $expectation->is(q{})->at($text);
5765 9 50   9   105 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  9         18  
5766             {
5767            
5768 9 50       27 Parse::RecDescent::_trace(q{<>},
5769             Parse::RecDescent::_tracefirst($text),
5770             q{bodyloc},
5771             $tracelevel)
5772             if defined $::RD_TRACE;
5773 9         28 $expectation->failed();
5774 9         33 last;
5775             }
5776 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
5777             . $_tok . q{]},
5778              
5779             Parse::RecDescent::_tracefirst($text),
5780             q{bodyloc},
5781             $tracelevel)
5782             if defined $::RD_TRACE;
5783 0         0 $item{q{STRING}} = $_tok;
5784 0         0 push @item, $_tok;
5785            
5786             }
5787              
5788 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
5789             Parse::RecDescent::_tracefirst($text),
5790             q{bodyloc},
5791             $tracelevel)
5792             if defined $::RD_TRACE;
5793              
5794              
5795              
5796 0         0 $_matched = 1;
5797 0         0 last;
5798             }
5799              
5800             splice
5801 31 100       89 @{$thisparser->{deferred}}, $def_at unless $_matched;
  9         19  
5802            
5803 31 100 66     98 unless ( $_matched || defined($score) )
5804             {
5805 9         12 splice @{$thisparser->{deferred}}, $def_at;
  9         19  
5806            
5807              
5808 9         16 $_[1] = $text; # NOT SURE THIS IS NEEDED
5809 9 50       21 Parse::RecDescent::_trace(q{<>},
5810             Parse::RecDescent::_tracefirst($_[1]),
5811             q{bodyloc},
5812             $tracelevel)
5813             if defined $::RD_TRACE;
5814 9         40 return undef;
5815             }
5816 22 50 33     106 if (!defined($return) && defined($score))
5817             {
5818 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5819             q{bodyloc},
5820             $tracelevel)
5821             if defined $::RD_TRACE;
5822 0         0 $return = $score_return;
5823             }
5824 22         45 splice @{$thisparser->{errors}}, $err_at;
  22         52  
5825 22 50       74 $return = $item[$#item] unless defined $return;
5826 22 50       61 if (defined $::RD_TRACE)
5827             {
5828 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5829             $return . q{])}, "",
5830             q{bodyloc},
5831             $tracelevel);
5832 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5833             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5834             Parse::RecDescent::_tracefirst($text),
5835             , q{bodyloc},
5836             $tracelevel)
5837             }
5838 22         44 $_[1] = $text;
5839 22         115 return $return;
5840             }
5841              
5842             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
5843             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyparms
5844             {
5845 105     105   1456 my $thisparser = $_[0];
5846 1     1   8 use vars q{$tracelevel};
  1         2  
  1         379  
5847 105   50     280 local $tracelevel = ($tracelevel||0)+1;
5848 105         169 $ERRORS = 0;
5849 105         198 my $thisrule = $thisparser->{"rules"}{"bodyparms"};
5850              
5851 105 50       218 Parse::RecDescent::_trace(q{Trying rule: [bodyparms]},
5852             Parse::RecDescent::_tracefirst($_[1]),
5853             q{bodyparms},
5854             $tracelevel)
5855             if defined $::RD_TRACE;
5856              
5857 105         150 my $def_at = @{$thisparser->{deferred}};
  105         200  
5858 105         163 my $err_at = @{$thisparser->{errors}};
  105         178  
5859              
5860 105         264 my $score;
5861             my $score_return;
5862 105         0 my $_tok;
5863 105         153 my $return = undef;
5864 105         151 my $_matched=0;
5865 105         148 my $commit=0;
5866 105         193 my @item = ();
5867 105         174 my %item = ();
5868 105         161 my $repeating = $_[2];
5869 105         171 my $_noactions = $_[3];
5870 105 50       220 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  105         150  
  105         183  
5871 105         173 my $_itempos = $_[5];
5872 105 50       246 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5873 105         234 my $text;
5874             my $lastsep;
5875 105         0 my $current_match;
5876 105         290 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or KVPAIRS});
5877 105         725 $expectation->at($_[1]);
5878            
5879 105         427 my $thisline;
5880 105         388 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5881              
5882            
5883              
5884 105   33     890 while (!$_matched && !$commit)
5885             {
5886            
5887 105 50       232 Parse::RecDescent::_trace(q{Trying production: [NIL]},
5888             Parse::RecDescent::_tracefirst($_[1]),
5889             q{bodyparms},
5890             $tracelevel)
5891             if defined $::RD_TRACE;
5892 105         233 my $thisprod = $thisrule->{"prods"}[0];
5893 105         181 $text = $_[1];
5894 105         150 my $_savetext;
5895 105         201 @item = (q{bodyparms});
5896 105         207 %item = (__RULE__ => q{bodyparms});
5897 105         166 my $repcount = 0;
5898              
5899              
5900 105 50       198 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
5901             Parse::RecDescent::_tracefirst($text),
5902             q{bodyparms},
5903             $tracelevel)
5904             if defined $::RD_TRACE;
5905 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         281  
  105         162  
5906 105         235 $expectation->is(q{})->at($text);
5907 105 100   105   951 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  105         199  
5908             {
5909            
5910 82 50       183 Parse::RecDescent::_trace(q{<>},
5911             Parse::RecDescent::_tracefirst($text),
5912             q{bodyparms},
5913             $tracelevel)
5914             if defined $::RD_TRACE;
5915 82         236 $expectation->failed();
5916 82         300 last;
5917             }
5918 23 50       111 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
5919             . $_tok . q{]},
5920              
5921             Parse::RecDescent::_tracefirst($text),
5922             q{bodyparms},
5923             $tracelevel)
5924             if defined $::RD_TRACE;
5925 23         63 $item{q{NIL}} = $_tok;
5926 23         56 push @item, $_tok;
5927            
5928             }
5929              
5930 23 50       60 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
5931             Parse::RecDescent::_tracefirst($text),
5932             q{bodyparms},
5933             $tracelevel)
5934             if defined $::RD_TRACE;
5935              
5936              
5937              
5938 23         39 $_matched = 1;
5939 23         58 last;
5940             }
5941              
5942             splice
5943 105 100       403 @{$thisparser->{deferred}}, $def_at unless $_matched;
  82         190  
5944            
5945 105   66     344 while (!$_matched && !$commit)
5946             {
5947            
5948 82 50       187 Parse::RecDescent::_trace(q{Trying production: [KVPAIRS]},
5949             Parse::RecDescent::_tracefirst($_[1]),
5950             q{bodyparms},
5951             $tracelevel)
5952             if defined $::RD_TRACE;
5953 82         156 my $thisprod = $thisrule->{"prods"}[1];
5954 82         170 $text = $_[1];
5955 82         133 my $_savetext;
5956 82         186 @item = (q{bodyparms});
5957 82         212 %item = (__RULE__ => q{bodyparms});
5958 82         135 my $repcount = 0;
5959              
5960              
5961 82 50       241 Parse::RecDescent::_trace(q{Trying subrule: [KVPAIRS]},
5962             Parse::RecDescent::_tracefirst($text),
5963             q{bodyparms},
5964             $tracelevel)
5965             if defined $::RD_TRACE;
5966 1     1   7 if (1) { no strict qw{refs};
  1         16  
  1         503  
  82         126  
5967 82         200 $expectation->is(q{})->at($text);
5968 82 100   82   782 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::KVPAIRS($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  82         166  
5969             {
5970            
5971 3 50       11 Parse::RecDescent::_trace(q{<>},
5972             Parse::RecDescent::_tracefirst($text),
5973             q{bodyparms},
5974             $tracelevel)
5975             if defined $::RD_TRACE;
5976 3         11 $expectation->failed();
5977 3         10 last;
5978             }
5979 79 50       293 Parse::RecDescent::_trace(q{>>Matched subrule: [KVPAIRS]<< (return value: [}
5980             . $_tok . q{]},
5981              
5982             Parse::RecDescent::_tracefirst($text),
5983             q{bodyparms},
5984             $tracelevel)
5985             if defined $::RD_TRACE;
5986 79         171 $item{q{KVPAIRS}} = $_tok;
5987 79         155 push @item, $_tok;
5988            
5989             }
5990              
5991 79 50       159 Parse::RecDescent::_trace(q{>>Matched production: [KVPAIRS]<<},
5992             Parse::RecDescent::_tracefirst($text),
5993             q{bodyparms},
5994             $tracelevel)
5995             if defined $::RD_TRACE;
5996              
5997              
5998              
5999 79         139 $_matched = 1;
6000 79         151 last;
6001             }
6002              
6003             splice
6004 105 100       215 @{$thisparser->{deferred}}, $def_at unless $_matched;
  3         7  
6005            
6006 105 100 66     282 unless ( $_matched || defined($score) )
6007             {
6008 3         6 splice @{$thisparser->{deferred}}, $def_at;
  3         5  
6009            
6010              
6011 3         6 $_[1] = $text; # NOT SURE THIS IS NEEDED
6012 3 50       8 Parse::RecDescent::_trace(q{<>},
6013             Parse::RecDescent::_tracefirst($_[1]),
6014             q{bodyparms},
6015             $tracelevel)
6016             if defined $::RD_TRACE;
6017 3         13 return undef;
6018             }
6019 102 50 33     393 if (!defined($return) && defined($score))
6020             {
6021 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6022             q{bodyparms},
6023             $tracelevel)
6024             if defined $::RD_TRACE;
6025 0         0 $return = $score_return;
6026             }
6027 102         149 splice @{$thisparser->{errors}}, $err_at;
  102         222  
6028 102 50       271 $return = $item[$#item] unless defined $return;
6029 102 50       221 if (defined $::RD_TRACE)
6030             {
6031 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6032             $return . q{])}, "",
6033             q{bodyparms},
6034             $tracelevel);
6035 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6036             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6037             Parse::RecDescent::_tracefirst($text),
6038             , q{bodyparms},
6039             $tracelevel)
6040             }
6041 102         168 $_[1] = $text;
6042 102         564 return $return;
6043             }
6044              
6045             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
6046             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodysize
6047             {
6048 74     74   913 my $thisparser = $_[0];
6049 1     1   8 use vars q{$tracelevel};
  1         2  
  1         521  
6050 74   50     180 local $tracelevel = ($tracelevel||0)+1;
6051 74         109 $ERRORS = 0;
6052 74         164 my $thisrule = $thisparser->{"rules"}{"bodysize"};
6053              
6054 74 50       178 Parse::RecDescent::_trace(q{Trying rule: [bodysize]},
6055             Parse::RecDescent::_tracefirst($_[1]),
6056             q{bodysize},
6057             $tracelevel)
6058             if defined $::RD_TRACE;
6059              
6060 74         104 my $def_at = @{$thisparser->{deferred}};
  74         147  
6061 74         116 my $err_at = @{$thisparser->{errors}};
  74         121  
6062              
6063 74         179 my $score;
6064             my $score_return;
6065 74         0 my $_tok;
6066 74         114 my $return = undef;
6067 74         109 my $_matched=0;
6068 74         122 my $commit=0;
6069 74         147 my @item = ();
6070 74         145 my %item = ();
6071 74         124 my $repeating = $_[2];
6072 74         99 my $_noactions = $_[3];
6073 74 50       165 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  74         114  
  74         197  
6074 74         115 my $_itempos = $_[5];
6075 74 50       190 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6076 74         356 my $text;
6077             my $lastsep;
6078 74         0 my $current_match;
6079 74         203 my $expectation = new Parse::RecDescent::Expectation(q{/[()]/, or NUMBER});
6080 74         505 $expectation->at($_[1]);
6081            
6082 74         290 my $thisline;
6083 74         284 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6084              
6085            
6086              
6087 74   33     655 while (!$_matched && !$commit)
6088             {
6089            
6090 74 50       175 Parse::RecDescent::_trace(q{Trying production: [/[()]/ NIL]},
6091             Parse::RecDescent::_tracefirst($_[1]),
6092             q{bodysize},
6093             $tracelevel)
6094             if defined $::RD_TRACE;
6095 74         162 my $thisprod = $thisrule->{"prods"}[0];
6096 74         148 $text = $_[1];
6097 74         110 my $_savetext;
6098 74         154 @item = (q{bodysize});
6099 74         143 %item = (__RULE__ => q{bodysize});
6100 74         124 my $repcount = 0;
6101              
6102              
6103 74 50       176 Parse::RecDescent::_trace(q{Trying terminal: [/[()]/]}, Parse::RecDescent::_tracefirst($text),
6104             q{bodysize},
6105             $tracelevel)
6106             if defined $::RD_TRACE;
6107 74         129 undef $lastsep;
6108 74         173 $expectation->is(q{})->at($text);
6109 74         556 $_savetext = $text;
6110              
6111 74 50 33     490 if ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[()])/)
  74 50       754  
6112             {
6113 0         0 $text = $_savetext;
6114 0         0 $expectation->failed();
6115 0 0       0 Parse::RecDescent::_trace(q{<>},
6116             Parse::RecDescent::_tracefirst($text))
6117             if defined $::RD_TRACE;
6118              
6119 0         0 last;
6120             }
6121 74         345 $current_match = substr($text, $-[0], $+[0] - $-[0]);
6122 74         199 substr($text,0,length($current_match),q{});
6123 74 50       156 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6124             . $current_match . q{])},
6125             Parse::RecDescent::_tracefirst($text))
6126             if defined $::RD_TRACE;
6127 74         191 push @item, $item{__PATTERN1__}=$current_match;
6128 74         157 $text = $_savetext;
6129              
6130 74 50       167 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
6131             Parse::RecDescent::_tracefirst($text),
6132             q{bodysize},
6133             $tracelevel)
6134             if defined $::RD_TRACE;
6135 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         320  
  74         105  
6136 74         202 $expectation->is(q{NIL})->at($text);
6137 74 50   74   756 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  74         151  
6138             {
6139            
6140 74 50       149 Parse::RecDescent::_trace(q{<>},
6141             Parse::RecDescent::_tracefirst($text),
6142             q{bodysize},
6143             $tracelevel)
6144             if defined $::RD_TRACE;
6145 74         230 $expectation->failed();
6146 74         650 last;
6147             }
6148 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
6149             . $_tok . q{]},
6150              
6151             Parse::RecDescent::_tracefirst($text),
6152             q{bodysize},
6153             $tracelevel)
6154             if defined $::RD_TRACE;
6155 0         0 $item{q{NIL}} = $_tok;
6156 0         0 push @item, $_tok;
6157            
6158             }
6159              
6160 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/[()]/ NIL]<<},
6161             Parse::RecDescent::_tracefirst($text),
6162             q{bodysize},
6163             $tracelevel)
6164             if defined $::RD_TRACE;
6165              
6166              
6167              
6168 0         0 $_matched = 1;
6169 0         0 last;
6170             }
6171              
6172             splice
6173 74 50       265 @{$thisparser->{deferred}}, $def_at unless $_matched;
  74         156  
6174            
6175 74   33     280 while (!$_matched && !$commit)
6176             {
6177            
6178 74 50       160 Parse::RecDescent::_trace(q{Trying production: [NUMBER]},
6179             Parse::RecDescent::_tracefirst($_[1]),
6180             q{bodysize},
6181             $tracelevel)
6182             if defined $::RD_TRACE;
6183 74         137 my $thisprod = $thisrule->{"prods"}[1];
6184 74         160 $text = $_[1];
6185 74         129 my $_savetext;
6186 74         177 @item = (q{bodysize});
6187 74         190 %item = (__RULE__ => q{bodysize});
6188 74         123 my $repcount = 0;
6189              
6190              
6191 74 50       156 Parse::RecDescent::_trace(q{Trying subrule: [NUMBER]},
6192             Parse::RecDescent::_tracefirst($text),
6193             q{bodysize},
6194             $tracelevel)
6195             if defined $::RD_TRACE;
6196 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         508  
  74         126  
6197 74         200 $expectation->is(q{})->at($text);
6198 74 50   74   722 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NUMBER($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  74         155  
6199             {
6200            
6201 0 0       0 Parse::RecDescent::_trace(q{<>},
6202             Parse::RecDescent::_tracefirst($text),
6203             q{bodysize},
6204             $tracelevel)
6205             if defined $::RD_TRACE;
6206 0         0 $expectation->failed();
6207 0         0 last;
6208             }
6209 74 50       275 Parse::RecDescent::_trace(q{>>Matched subrule: [NUMBER]<< (return value: [}
6210             . $_tok . q{]},
6211              
6212             Parse::RecDescent::_tracefirst($text),
6213             q{bodysize},
6214             $tracelevel)
6215             if defined $::RD_TRACE;
6216 74         201 $item{q{NUMBER}} = $_tok;
6217 74         126 push @item, $_tok;
6218            
6219             }
6220              
6221 74 50       151 Parse::RecDescent::_trace(q{>>Matched production: [NUMBER]<<},
6222             Parse::RecDescent::_tracefirst($text),
6223             q{bodysize},
6224             $tracelevel)
6225             if defined $::RD_TRACE;
6226              
6227              
6228              
6229 74         115 $_matched = 1;
6230 74         122 last;
6231             }
6232              
6233             splice
6234 74 50       155 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
6235            
6236 74 50 33     178 unless ( $_matched || defined($score) )
6237             {
6238 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
6239            
6240              
6241 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
6242 0 0       0 Parse::RecDescent::_trace(q{<>},
6243             Parse::RecDescent::_tracefirst($_[1]),
6244             q{bodysize},
6245             $tracelevel)
6246             if defined $::RD_TRACE;
6247 0         0 return undef;
6248             }
6249 74 50 33     256 if (!defined($return) && defined($score))
6250             {
6251 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6252             q{bodysize},
6253             $tracelevel)
6254             if defined $::RD_TRACE;
6255 0         0 $return = $score_return;
6256             }
6257 74         111 splice @{$thisparser->{errors}}, $err_at;
  74         178  
6258 74 50       196 $return = $item[$#item] unless defined $return;
6259 74 50       178 if (defined $::RD_TRACE)
6260             {
6261 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6262             $return . q{])}, "",
6263             q{bodysize},
6264             $tracelevel);
6265 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6266             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6267             Parse::RecDescent::_tracefirst($text),
6268             , q{bodysize},
6269             $tracelevel)
6270             }
6271 74         135 $_[1] = $text;
6272 74         418 return $return;
6273             }
6274              
6275             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
6276             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodystructure
6277             {
6278 21     21   443 my $thisparser = $_[0];
6279 1     1   9 use vars q{$tracelevel};
  1         2  
  1         1208  
6280 21   50     65 local $tracelevel = ($tracelevel||0)+1;
6281 21         42 $ERRORS = 0;
6282 21         81 my $thisrule = $thisparser->{"rules"}{"bodystructure"};
6283              
6284 21 50       52 Parse::RecDescent::_trace(q{Trying rule: [bodystructure]},
6285             Parse::RecDescent::_tracefirst($_[1]),
6286             q{bodystructure},
6287             $tracelevel)
6288             if defined $::RD_TRACE;
6289              
6290 21         39 my $def_at = @{$thisparser->{deferred}};
  21         47  
6291 21         38 my $err_at = @{$thisparser->{errors}};
  21         45  
6292              
6293 21         62 my $score;
6294             my $score_return;
6295 21         0 my $_tok;
6296 21         38 my $return = undef;
6297 21         38 my $_matched=0;
6298 21         35 my $commit=0;
6299 21         45 my @item = ();
6300 21         47 my %item = ();
6301 21         40 my $repeating = $_[2];
6302 21         34 my $_noactions = $_[3];
6303 21 50       64 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  21         34  
  21         38  
6304 21         40 my $_itempos = $_[5];
6305 21 50       66 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6306 21         60 my $text;
6307             my $lastsep;
6308 21         0 my $current_match;
6309 21         54 my $expectation = new Parse::RecDescent::Expectation(q{'('});
6310 21         159 $expectation->at($_[1]);
6311            
6312 21         97 my $thisline;
6313 21         92 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6314              
6315            
6316              
6317 21   33     217 while (!$_matched && !$commit)
6318             {
6319            
6320 21 50       53 Parse::RecDescent::_trace(q{Trying production: ['(' part ')']},
6321             Parse::RecDescent::_tracefirst($_[1]),
6322             q{bodystructure},
6323             $tracelevel)
6324             if defined $::RD_TRACE;
6325 21         60 my $thisprod = $thisrule->{"prods"}[0];
6326 21         51 $text = $_[1];
6327 21         38 my $_savetext;
6328 21         64 @item = (q{bodystructure});
6329 21         47 %item = (__RULE__ => q{bodystructure});
6330 21         40 my $repcount = 0;
6331              
6332              
6333 21 50       49 Parse::RecDescent::_trace(q{Trying terminal: ['(']},
6334             Parse::RecDescent::_tracefirst($text),
6335             q{bodystructure},
6336             $tracelevel)
6337             if defined $::RD_TRACE;
6338 21         45 undef $lastsep;
6339 21         51 $expectation->is(q{})->at($text);
6340            
6341              
6342 21 100 33     333 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and
  21 100 66     181  
  21   66     45  
  21         134  
6343             substr($text,0,length($_tok)) eq $_tok and
6344 20         49 do { substr($text,0,length($_tok)) = ""; 1; }
  20         66  
6345             )
6346             {
6347 1 50       10 $text = $lastsep . $text if defined $lastsep;
6348            
6349 1         4 $expectation->failed();
6350 1 50       6 Parse::RecDescent::_trace(q{<>},
6351             Parse::RecDescent::_tracefirst($text))
6352             if defined $::RD_TRACE;
6353 1         3 last;
6354             }
6355 20 50       65 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6356             . $_tok . q{])},
6357             Parse::RecDescent::_tracefirst($text))
6358             if defined $::RD_TRACE;
6359 20         61 push @item, $item{__STRING1__}=$_tok;
6360            
6361              
6362 20 50       51 Parse::RecDescent::_trace(q{Trying repeated subrule: [part]},
6363             Parse::RecDescent::_tracefirst($text),
6364             q{bodystructure},
6365             $tracelevel)
6366             if defined $::RD_TRACE;
6367 20         69 $expectation->is(q{part})->at($text);
6368            
6369 20 50   40   324 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::part, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
  40         83  
6370             {
6371 0 0       0 Parse::RecDescent::_trace(q{<>},
6372             Parse::RecDescent::_tracefirst($text),
6373             q{bodystructure},
6374             $tracelevel)
6375             if defined $::RD_TRACE;
6376 0         0 last;
6377             }
6378 20 50       336 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [part]<< (}
6379             . @$_tok . q{ times)},
6380              
6381             Parse::RecDescent::_tracefirst($text),
6382             q{bodystructure},
6383             $tracelevel)
6384             if defined $::RD_TRACE;
6385 20         66 $item{q{part(s)}} = $_tok;
6386 20         51 push @item, $_tok;
6387            
6388              
6389              
6390 20 50       47 Parse::RecDescent::_trace(q{Trying terminal: [')']},
6391             Parse::RecDescent::_tracefirst($text),
6392             q{bodystructure},
6393             $tracelevel)
6394             if defined $::RD_TRACE;
6395 20         38 undef $lastsep;
6396 20         48 $expectation->is(q{')'})->at($text);
6397            
6398              
6399 20 50 33     288 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and
  20 50 33     156  
  20   33     52  
  20         141  
6400             substr($text,0,length($_tok)) eq $_tok and
6401 20         53 do { substr($text,0,length($_tok)) = ""; 1; }
  20         74  
6402             )
6403             {
6404 0 0       0 $text = $lastsep . $text if defined $lastsep;
6405            
6406 0         0 $expectation->failed();
6407 0 0       0 Parse::RecDescent::_trace(q{<>},
6408             Parse::RecDescent::_tracefirst($text))
6409             if defined $::RD_TRACE;
6410 0         0 last;
6411             }
6412 20 50       63 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6413             . $_tok . q{])},
6414             Parse::RecDescent::_tracefirst($text))
6415             if defined $::RD_TRACE;
6416 20         64 push @item, $item{__STRING2__}=$_tok;
6417            
6418              
6419 20 50       46 Parse::RecDescent::_trace(q{Trying action},
6420             Parse::RecDescent::_tracefirst($text),
6421             q{bodystructure},
6422             $tracelevel)
6423             if defined $::RD_TRACE;
6424            
6425              
6426 20 50       55 $_tok = ($_noactions) ? 0 : do { $return = $item{'part(s)'} };
  20         41  
6427 20 50       55 unless (defined $_tok)
6428             {
6429 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
6430             if defined $::RD_TRACE;
6431 0         0 last;
6432             }
6433 20 50       62 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6434             . $_tok . q{])},
6435             Parse::RecDescent::_tracefirst($text))
6436             if defined $::RD_TRACE;
6437 20         42 push @item, $_tok;
6438 20         46 $item{__ACTION1__}=$_tok;
6439            
6440              
6441 20 50       41 Parse::RecDescent::_trace(q{>>Matched production: ['(' part ')']<<},
6442             Parse::RecDescent::_tracefirst($text),
6443             q{bodystructure},
6444             $tracelevel)
6445             if defined $::RD_TRACE;
6446              
6447              
6448              
6449 20         43 $_matched = 1;
6450 20         48 last;
6451             }
6452              
6453             splice
6454 21 100       51 @{$thisparser->{deferred}}, $def_at unless $_matched;
  1         4  
6455            
6456 21 100 66     66 unless ( $_matched || defined($score) )
6457             {
6458 1         2 splice @{$thisparser->{deferred}}, $def_at;
  1         3  
6459            
6460              
6461 1         3 $_[1] = $text; # NOT SURE THIS IS NEEDED
6462 1 50       4 Parse::RecDescent::_trace(q{<>},
6463             Parse::RecDescent::_tracefirst($_[1]),
6464             q{bodystructure},
6465             $tracelevel)
6466             if defined $::RD_TRACE;
6467 1         6 return undef;
6468             }
6469 20 50 33     78 if (!defined($return) && defined($score))
6470             {
6471 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6472             q{bodystructure},
6473             $tracelevel)
6474             if defined $::RD_TRACE;
6475 0         0 $return = $score_return;
6476             }
6477 20         50 splice @{$thisparser->{errors}}, $err_at;
  20         58  
6478 20 50       53 $return = $item[$#item] unless defined $return;
6479 20 50       62 if (defined $::RD_TRACE)
6480             {
6481 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6482             $return . q{])}, "",
6483             q{bodystructure},
6484             $tracelevel);
6485 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6486             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6487             Parse::RecDescent::_tracefirst($text),
6488             , q{bodystructure},
6489             $tracelevel)
6490             }
6491 20         71 $_[1] = $text;
6492 20         146 return $return;
6493             }
6494              
6495             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
6496             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodysubtype
6497             {
6498 84     84   151 my $thisparser = $_[0];
6499 1     1   9 use vars q{$tracelevel};
  1         3  
  1         352  
6500 84   50     216 local $tracelevel = ($tracelevel||0)+1;
6501 84         149 $ERRORS = 0;
6502 84         190 my $thisrule = $thisparser->{"rules"}{"bodysubtype"};
6503              
6504 84 50       167 Parse::RecDescent::_trace(q{Trying rule: [bodysubtype]},
6505             Parse::RecDescent::_tracefirst($_[1]),
6506             q{bodysubtype},
6507             $tracelevel)
6508             if defined $::RD_TRACE;
6509              
6510 84         131 my $def_at = @{$thisparser->{deferred}};
  84         168  
6511 84         139 my $err_at = @{$thisparser->{errors}};
  84         156  
6512              
6513 84         216 my $score;
6514             my $score_return;
6515 84         0 my $_tok;
6516 84         183 my $return = undef;
6517 84         121 my $_matched=0;
6518 84         118 my $commit=0;
6519 84         143 my @item = ();
6520 84         145 my %item = ();
6521 84         128 my $repeating = $_[2];
6522 84         147 my $_noactions = $_[3];
6523 84 50       188 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  84         301  
  84         185  
6524 84         145 my $_itempos = $_[5];
6525 84 50       198 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6526 84         205 my $text;
6527             my $lastsep;
6528 84         0 my $current_match;
6529 84         204 my $expectation = new Parse::RecDescent::Expectation(q{PLAIN, or HTML, or NIL, or STRING});
6530 84         566 $expectation->at($_[1]);
6531            
6532 84         347 my $thisline;
6533 84         276 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6534              
6535            
6536              
6537 84   33     655 while (!$_matched && !$commit)
6538             {
6539            
6540 84 50       223 Parse::RecDescent::_trace(q{Trying production: [PLAIN]},
6541             Parse::RecDescent::_tracefirst($_[1]),
6542             q{bodysubtype},
6543             $tracelevel)
6544             if defined $::RD_TRACE;
6545 84         194 my $thisprod = $thisrule->{"prods"}[0];
6546 84         149 $text = $_[1];
6547 84         142 my $_savetext;
6548 84         243 @item = (q{bodysubtype});
6549 84         160 %item = (__RULE__ => q{bodysubtype});
6550 84         138 my $repcount = 0;
6551              
6552              
6553 84 50       166 Parse::RecDescent::_trace(q{Trying subrule: [PLAIN]},
6554             Parse::RecDescent::_tracefirst($text),
6555             q{bodysubtype},
6556             $tracelevel)
6557             if defined $::RD_TRACE;
6558 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         296  
  84         155  
6559 84         189 $expectation->is(q{})->at($text);
6560 84 100   84   781 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::PLAIN($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  84         168  
6561             {
6562            
6563 53 50       123 Parse::RecDescent::_trace(q{<>},
6564             Parse::RecDescent::_tracefirst($text),
6565             q{bodysubtype},
6566             $tracelevel)
6567             if defined $::RD_TRACE;
6568 53         153 $expectation->failed();
6569 53         191 last;
6570             }
6571 31 50       120 Parse::RecDescent::_trace(q{>>Matched subrule: [PLAIN]<< (return value: [}
6572             . $_tok . q{]},
6573              
6574             Parse::RecDescent::_tracefirst($text),
6575             q{bodysubtype},
6576             $tracelevel)
6577             if defined $::RD_TRACE;
6578 31         81 $item{q{PLAIN}} = $_tok;
6579 31         72 push @item, $_tok;
6580            
6581             }
6582              
6583 31 50       63 Parse::RecDescent::_trace(q{>>Matched production: [PLAIN]<<},
6584             Parse::RecDescent::_tracefirst($text),
6585             q{bodysubtype},
6586             $tracelevel)
6587             if defined $::RD_TRACE;
6588              
6589              
6590              
6591 31         60 $_matched = 1;
6592 31         52 last;
6593             }
6594              
6595             splice
6596 84 100       270 @{$thisparser->{deferred}}, $def_at unless $_matched;
  53         119  
6597            
6598 84   66     295 while (!$_matched && !$commit)
6599             {
6600            
6601 53 50       118 Parse::RecDescent::_trace(q{Trying production: [HTML]},
6602             Parse::RecDescent::_tracefirst($_[1]),
6603             q{bodysubtype},
6604             $tracelevel)
6605             if defined $::RD_TRACE;
6606 53         103 my $thisprod = $thisrule->{"prods"}[1];
6607 53         99 $text = $_[1];
6608 53         81 my $_savetext;
6609 53         147 @item = (q{bodysubtype});
6610 53         138 %item = (__RULE__ => q{bodysubtype});
6611 53         86 my $repcount = 0;
6612              
6613              
6614 53 50       109 Parse::RecDescent::_trace(q{Trying subrule: [HTML]},
6615             Parse::RecDescent::_tracefirst($text),
6616             q{bodysubtype},
6617             $tracelevel)
6618             if defined $::RD_TRACE;
6619 1     1   7 if (1) { no strict qw{refs};
  1         3  
  1         292  
  53         104  
6620 53         130 $expectation->is(q{})->at($text);
6621 53 100   53   580 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::HTML($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  53         108  
6622             {
6623            
6624 44 50       106 Parse::RecDescent::_trace(q{<>},
6625             Parse::RecDescent::_tracefirst($text),
6626             q{bodysubtype},
6627             $tracelevel)
6628             if defined $::RD_TRACE;
6629 44         144 $expectation->failed();
6630 44         186 last;
6631             }
6632 9 50       39 Parse::RecDescent::_trace(q{>>Matched subrule: [HTML]<< (return value: [}
6633             . $_tok . q{]},
6634              
6635             Parse::RecDescent::_tracefirst($text),
6636             q{bodysubtype},
6637             $tracelevel)
6638             if defined $::RD_TRACE;
6639 9         24 $item{q{HTML}} = $_tok;
6640 9         24 push @item, $_tok;
6641            
6642             }
6643              
6644 9 50       21 Parse::RecDescent::_trace(q{>>Matched production: [HTML]<<},
6645             Parse::RecDescent::_tracefirst($text),
6646             q{bodysubtype},
6647             $tracelevel)
6648             if defined $::RD_TRACE;
6649              
6650              
6651              
6652 9         15 $_matched = 1;
6653 9         20 last;
6654             }
6655              
6656             splice
6657 84 100       265 @{$thisparser->{deferred}}, $def_at unless $_matched;
  44         101  
6658            
6659 84   66     275 while (!$_matched && !$commit)
6660             {
6661            
6662 44 50       111 Parse::RecDescent::_trace(q{Trying production: [NIL]},
6663             Parse::RecDescent::_tracefirst($_[1]),
6664             q{bodysubtype},
6665             $tracelevel)
6666             if defined $::RD_TRACE;
6667 44         159 my $thisprod = $thisrule->{"prods"}[2];
6668 44         84 $text = $_[1];
6669 44         72 my $_savetext;
6670 44         112 @item = (q{bodysubtype});
6671 44         146 %item = (__RULE__ => q{bodysubtype});
6672 44         79 my $repcount = 0;
6673              
6674              
6675 44 50       91 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
6676             Parse::RecDescent::_tracefirst($text),
6677             q{bodysubtype},
6678             $tracelevel)
6679             if defined $::RD_TRACE;
6680 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         350  
  44         66  
6681 44         117 $expectation->is(q{})->at($text);
6682 44 50   44   448 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  44         91  
6683             {
6684            
6685 44 50       106 Parse::RecDescent::_trace(q{<>},
6686             Parse::RecDescent::_tracefirst($text),
6687             q{bodysubtype},
6688             $tracelevel)
6689             if defined $::RD_TRACE;
6690 44         135 $expectation->failed();
6691 44         162 last;
6692             }
6693 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
6694             . $_tok . q{]},
6695              
6696             Parse::RecDescent::_tracefirst($text),
6697             q{bodysubtype},
6698             $tracelevel)
6699             if defined $::RD_TRACE;
6700 0         0 $item{q{NIL}} = $_tok;
6701 0         0 push @item, $_tok;
6702            
6703             }
6704              
6705 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
6706             Parse::RecDescent::_tracefirst($text),
6707             q{bodysubtype},
6708             $tracelevel)
6709             if defined $::RD_TRACE;
6710              
6711              
6712              
6713 0         0 $_matched = 1;
6714 0         0 last;
6715             }
6716              
6717             splice
6718 84 100       256 @{$thisparser->{deferred}}, $def_at unless $_matched;
  44         94  
6719            
6720 84   66     261 while (!$_matched && !$commit)
6721             {
6722            
6723 44 50       106 Parse::RecDescent::_trace(q{Trying production: [STRING]},
6724             Parse::RecDescent::_tracefirst($_[1]),
6725             q{bodysubtype},
6726             $tracelevel)
6727             if defined $::RD_TRACE;
6728 44         97 my $thisprod = $thisrule->{"prods"}[3];
6729 44         83 $text = $_[1];
6730 44         74 my $_savetext;
6731 44         103 @item = (q{bodysubtype});
6732 44         101 %item = (__RULE__ => q{bodysubtype});
6733 44         72 my $repcount = 0;
6734              
6735              
6736 44 50       114 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
6737             Parse::RecDescent::_tracefirst($text),
6738             q{bodysubtype},
6739             $tracelevel)
6740             if defined $::RD_TRACE;
6741 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         538  
  44         72  
6742 44         114 $expectation->is(q{})->at($text);
6743 44 50   44   773 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  44         91  
6744             {
6745            
6746 0 0       0 Parse::RecDescent::_trace(q{<>},
6747             Parse::RecDescent::_tracefirst($text),
6748             q{bodysubtype},
6749             $tracelevel)
6750             if defined $::RD_TRACE;
6751 0         0 $expectation->failed();
6752 0         0 last;
6753             }
6754 44 50       170 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
6755             . $_tok . q{]},
6756              
6757             Parse::RecDescent::_tracefirst($text),
6758             q{bodysubtype},
6759             $tracelevel)
6760             if defined $::RD_TRACE;
6761 44         108 $item{q{STRING}} = $_tok;
6762 44         90 push @item, $_tok;
6763            
6764             }
6765              
6766 44 50       95 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
6767             Parse::RecDescent::_tracefirst($text),
6768             q{bodysubtype},
6769             $tracelevel)
6770             if defined $::RD_TRACE;
6771              
6772              
6773              
6774 44         83 $_matched = 1;
6775 44         83 last;
6776             }
6777              
6778             splice
6779 84 50       199 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
6780            
6781 84 50 33     188 unless ( $_matched || defined($score) )
6782             {
6783 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
6784            
6785              
6786 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
6787 0 0       0 Parse::RecDescent::_trace(q{<>},
6788             Parse::RecDescent::_tracefirst($_[1]),
6789             q{bodysubtype},
6790             $tracelevel)
6791             if defined $::RD_TRACE;
6792 0         0 return undef;
6793             }
6794 84 50 33     307 if (!defined($return) && defined($score))
6795             {
6796 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6797             q{bodysubtype},
6798             $tracelevel)
6799             if defined $::RD_TRACE;
6800 0         0 $return = $score_return;
6801             }
6802 84         150 splice @{$thisparser->{errors}}, $err_at;
  84         162  
6803 84 50       234 $return = $item[$#item] unless defined $return;
6804 84 50       212 if (defined $::RD_TRACE)
6805             {
6806 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6807             $return . q{])}, "",
6808             q{bodysubtype},
6809             $tracelevel);
6810 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6811             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6812             Parse::RecDescent::_tracefirst($text),
6813             , q{bodysubtype},
6814             $tracelevel)
6815             }
6816 84         156 $_[1] = $text;
6817 84         495 return $return;
6818             }
6819              
6820             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
6821             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodytype
6822             {
6823 32     32   69 my $thisparser = $_[0];
6824 1     1   8 use vars q{$tracelevel};
  1         2  
  1         356  
6825 32   50     101 local $tracelevel = ($tracelevel||0)+1;
6826 32         59 $ERRORS = 0;
6827 32         71 my $thisrule = $thisparser->{"rules"}{"bodytype"};
6828              
6829 32 50       77 Parse::RecDescent::_trace(q{Trying rule: [bodytype]},
6830             Parse::RecDescent::_tracefirst($_[1]),
6831             q{bodytype},
6832             $tracelevel)
6833             if defined $::RD_TRACE;
6834              
6835 32         50 my $def_at = @{$thisparser->{deferred}};
  32         66  
6836 32         56 my $err_at = @{$thisparser->{errors}};
  32         63  
6837              
6838 32         85 my $score;
6839             my $score_return;
6840 32         0 my $_tok;
6841 32         46 my $return = undef;
6842 32         51 my $_matched=0;
6843 32         51 my $commit=0;
6844 32         61 my @item = ();
6845 32         54 my %item = ();
6846 32         66 my $repeating = $_[2];
6847 32         52 my $_noactions = $_[3];
6848 32 50       77 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  32         49  
  32         59  
6849 32         59 my $_itempos = $_[5];
6850 32 50       118 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6851 32         82 my $text;
6852             my $lastsep;
6853 32         0 my $current_match;
6854 32         79 my $expectation = new Parse::RecDescent::Expectation(q{STRING});
6855 32         221 $expectation->at($_[1]);
6856            
6857 32         130 my $thisline;
6858 32         131 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6859              
6860            
6861              
6862 32   33     256 while (!$_matched && !$commit)
6863             {
6864            
6865 32 50       74 Parse::RecDescent::_trace(q{Trying production: [STRING]},
6866             Parse::RecDescent::_tracefirst($_[1]),
6867             q{bodytype},
6868             $tracelevel)
6869             if defined $::RD_TRACE;
6870 32         83 my $thisprod = $thisrule->{"prods"}[0];
6871 32         63 $text = $_[1];
6872 32         45 my $_savetext;
6873 32         70 @item = (q{bodytype});
6874 32         72 %item = (__RULE__ => q{bodytype});
6875 32         55 my $repcount = 0;
6876              
6877              
6878 32 50       68 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
6879             Parse::RecDescent::_tracefirst($text),
6880             q{bodytype},
6881             $tracelevel)
6882             if defined $::RD_TRACE;
6883 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         499  
  32         54  
6884 32         99 $expectation->is(q{})->at($text);
6885 32 100   32   339 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  32         62  
6886             {
6887            
6888 20 50       72 Parse::RecDescent::_trace(q{<>},
6889             Parse::RecDescent::_tracefirst($text),
6890             q{bodytype},
6891             $tracelevel)
6892             if defined $::RD_TRACE;
6893 20         62 $expectation->failed();
6894 20         78 last;
6895             }
6896 12 50       58 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
6897             . $_tok . q{]},
6898              
6899             Parse::RecDescent::_tracefirst($text),
6900             q{bodytype},
6901             $tracelevel)
6902             if defined $::RD_TRACE;
6903 12         36 $item{q{STRING}} = $_tok;
6904 12         26 push @item, $_tok;
6905            
6906             }
6907              
6908 12 50       34 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
6909             Parse::RecDescent::_tracefirst($text),
6910             q{bodytype},
6911             $tracelevel)
6912             if defined $::RD_TRACE;
6913              
6914              
6915              
6916 12         22 $_matched = 1;
6917 12         23 last;
6918             }
6919              
6920             splice
6921 32 100       99 @{$thisparser->{deferred}}, $def_at unless $_matched;
  20         57  
6922            
6923 32 100 66     131 unless ( $_matched || defined($score) )
6924             {
6925 20         35 splice @{$thisparser->{deferred}}, $def_at;
  20         52  
6926            
6927              
6928 20         46 $_[1] = $text; # NOT SURE THIS IS NEEDED
6929 20 50       48 Parse::RecDescent::_trace(q{<>},
6930             Parse::RecDescent::_tracefirst($_[1]),
6931             q{bodytype},
6932             $tracelevel)
6933             if defined $::RD_TRACE;
6934 20         111 return undef;
6935             }
6936 12 50 33     68 if (!defined($return) && defined($score))
6937             {
6938 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6939             q{bodytype},
6940             $tracelevel)
6941             if defined $::RD_TRACE;
6942 0         0 $return = $score_return;
6943             }
6944 12         25 splice @{$thisparser->{errors}}, $err_at;
  12         30  
6945 12 50       46 $return = $item[$#item] unless defined $return;
6946 12 50       40 if (defined $::RD_TRACE)
6947             {
6948 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6949             $return . q{])}, "",
6950             q{bodytype},
6951             $tracelevel);
6952 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6953             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6954             Parse::RecDescent::_tracefirst($text),
6955             , q{bodytype},
6956             $tracelevel)
6957             }
6958 12         28 $_[1] = $text;
6959 12         72 return $return;
6960             }
6961              
6962             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
6963             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::cc
6964             {
6965 24     24   58 my $thisparser = $_[0];
6966 1     1   10 use vars q{$tracelevel};
  1         2  
  1         557  
6967 24   50     76 local $tracelevel = ($tracelevel||0)+1;
6968 24         51 $ERRORS = 0;
6969 24         100 my $thisrule = $thisparser->{"rules"}{"cc"};
6970              
6971 24 50       61 Parse::RecDescent::_trace(q{Trying rule: [cc]},
6972             Parse::RecDescent::_tracefirst($_[1]),
6973             q{cc},
6974             $tracelevel)
6975             if defined $::RD_TRACE;
6976              
6977 24         41 my $def_at = @{$thisparser->{deferred}};
  24         79  
6978 24         48 my $err_at = @{$thisparser->{errors}};
  24         62  
6979              
6980 24         78 my $score;
6981             my $score_return;
6982 24         0 my $_tok;
6983 24         44 my $return = undef;
6984 24         37 my $_matched=0;
6985 24         40 my $commit=0;
6986 24         52 my @item = ();
6987 24         45 my %item = ();
6988 24         37 my $repeating = $_[2];
6989 24         52 my $_noactions = $_[3];
6990 24 50       76 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  24         40  
  24         47  
6991 24         56 my $_itempos = $_[5];
6992 24 50       72 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6993 24         100 my $text;
6994             my $lastsep;
6995 24         0 my $current_match;
6996 24         73 my $expectation = new Parse::RecDescent::Expectation(q{ADDRESSES});
6997 24         189 $expectation->at($_[1]);
6998            
6999 24         106 my $thisline;
7000 24         103 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7001              
7002            
7003              
7004 24   33     218 while (!$_matched && !$commit)
7005             {
7006            
7007 24 50       72 Parse::RecDescent::_trace(q{Trying production: [ADDRESSES]},
7008             Parse::RecDescent::_tracefirst($_[1]),
7009             q{cc},
7010             $tracelevel)
7011             if defined $::RD_TRACE;
7012 24         73 my $thisprod = $thisrule->{"prods"}[0];
7013 24         49 $text = $_[1];
7014 24         38 my $_savetext;
7015 24         53 @item = (q{cc});
7016 24         65 %item = (__RULE__ => q{cc});
7017 24         37 my $repcount = 0;
7018              
7019              
7020 24 50       56 Parse::RecDescent::_trace(q{Trying subrule: [ADDRESSES]},
7021             Parse::RecDescent::_tracefirst($text),
7022             q{cc},
7023             $tracelevel)
7024             if defined $::RD_TRACE;
7025 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         460  
  24         39  
7026 24         61 $expectation->is(q{})->at($text);
7027 24 50   24   270 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         48  
7028             {
7029            
7030 0 0       0 Parse::RecDescent::_trace(q{<>},
7031             Parse::RecDescent::_tracefirst($text),
7032             q{cc},
7033             $tracelevel)
7034             if defined $::RD_TRACE;
7035 0         0 $expectation->failed();
7036 0         0 last;
7037             }
7038 24 50       100 Parse::RecDescent::_trace(q{>>Matched subrule: [ADDRESSES]<< (return value: [}
7039             . $_tok . q{]},
7040              
7041             Parse::RecDescent::_tracefirst($text),
7042             q{cc},
7043             $tracelevel)
7044             if defined $::RD_TRACE;
7045 24         58 $item{q{ADDRESSES}} = $_tok;
7046 24         52 push @item, $_tok;
7047            
7048             }
7049              
7050 24 50       52 Parse::RecDescent::_trace(q{>>Matched production: [ADDRESSES]<<},
7051             Parse::RecDescent::_tracefirst($text),
7052             q{cc},
7053             $tracelevel)
7054             if defined $::RD_TRACE;
7055              
7056              
7057              
7058 24         36 $_matched = 1;
7059 24         54 last;
7060             }
7061              
7062             splice
7063 24 50       62 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
7064            
7065 24 50 33     69 unless ( $_matched || defined($score) )
7066             {
7067 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
7068            
7069              
7070 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
7071 0 0       0 Parse::RecDescent::_trace(q{<>},
7072             Parse::RecDescent::_tracefirst($_[1]),
7073             q{cc},
7074             $tracelevel)
7075             if defined $::RD_TRACE;
7076 0         0 return undef;
7077             }
7078 24 50 33     117 if (!defined($return) && defined($score))
7079             {
7080 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7081             q{cc},
7082             $tracelevel)
7083             if defined $::RD_TRACE;
7084 0         0 $return = $score_return;
7085             }
7086 24         40 splice @{$thisparser->{errors}}, $err_at;
  24         48  
7087 24 50       77 $return = $item[$#item] unless defined $return;
7088 24 50       67 if (defined $::RD_TRACE)
7089             {
7090 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7091             $return . q{])}, "",
7092             q{cc},
7093             $tracelevel);
7094 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7095             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7096             Parse::RecDescent::_tracefirst($text),
7097             , q{cc},
7098             $tracelevel)
7099             }
7100 24         58 $_[1] = $text;
7101 24         151 return $return;
7102             }
7103              
7104             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
7105             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::date
7106             {
7107 24     24   52 my $thisparser = $_[0];
7108 1     1   8 use vars q{$tracelevel};
  1         3  
  1         401  
7109 24   50     69 local $tracelevel = ($tracelevel||0)+1;
7110 24         48 $ERRORS = 0;
7111 24         217 my $thisrule = $thisparser->{"rules"}{"date"};
7112              
7113 24 50       81 Parse::RecDescent::_trace(q{Trying rule: [date]},
7114             Parse::RecDescent::_tracefirst($_[1]),
7115             q{date},
7116             $tracelevel)
7117             if defined $::RD_TRACE;
7118              
7119 24         38 my $def_at = @{$thisparser->{deferred}};
  24         59  
7120 24         43 my $err_at = @{$thisparser->{errors}};
  24         54  
7121              
7122 24         68 my $score;
7123             my $score_return;
7124 24         0 my $_tok;
7125 24         44 my $return = undef;
7126 24         36 my $_matched=0;
7127 24         42 my $commit=0;
7128 24         46 my @item = ();
7129 24         44 my %item = ();
7130 24         44 my $repeating = $_[2];
7131 24         38 my $_noactions = $_[3];
7132 24 50       57 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  24         34  
  24         47  
7133 24         51 my $_itempos = $_[5];
7134 24 50       78 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7135 24         71 my $text;
7136             my $lastsep;
7137 24         0 my $current_match;
7138 24         68 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING});
7139 24         173 $expectation->at($_[1]);
7140            
7141 24         179 my $thisline;
7142 24         94 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7143              
7144            
7145              
7146 24   33     226 while (!$_matched && !$commit)
7147             {
7148            
7149 24 50       61 Parse::RecDescent::_trace(q{Trying production: [NIL]},
7150             Parse::RecDescent::_tracefirst($_[1]),
7151             q{date},
7152             $tracelevel)
7153             if defined $::RD_TRACE;
7154 24         82 my $thisprod = $thisrule->{"prods"}[0];
7155 24         93 $text = $_[1];
7156 24         65 my $_savetext;
7157 24         67 @item = (q{date});
7158 24         62 %item = (__RULE__ => q{date});
7159 24         45 my $repcount = 0;
7160              
7161              
7162 24 50       67 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
7163             Parse::RecDescent::_tracefirst($text),
7164             q{date},
7165             $tracelevel)
7166             if defined $::RD_TRACE;
7167 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         291  
  24         44  
7168 24         64 $expectation->is(q{})->at($text);
7169 24 50   24   255 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         86  
7170             {
7171            
7172 24 50       85 Parse::RecDescent::_trace(q{<>},
7173             Parse::RecDescent::_tracefirst($text),
7174             q{date},
7175             $tracelevel)
7176             if defined $::RD_TRACE;
7177 24         83 $expectation->failed();
7178 24         92 last;
7179             }
7180 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
7181             . $_tok . q{]},
7182              
7183             Parse::RecDescent::_tracefirst($text),
7184             q{date},
7185             $tracelevel)
7186             if defined $::RD_TRACE;
7187 0         0 $item{q{NIL}} = $_tok;
7188 0         0 push @item, $_tok;
7189            
7190             }
7191              
7192 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
7193             Parse::RecDescent::_tracefirst($text),
7194             q{date},
7195             $tracelevel)
7196             if defined $::RD_TRACE;
7197              
7198              
7199              
7200 0         0 $_matched = 1;
7201 0         0 last;
7202             }
7203              
7204             splice
7205 24 50       103 @{$thisparser->{deferred}}, $def_at unless $_matched;
  24         76  
7206            
7207 24   33     132 while (!$_matched && !$commit)
7208             {
7209            
7210 24 50       63 Parse::RecDescent::_trace(q{Trying production: [STRING]},
7211             Parse::RecDescent::_tracefirst($_[1]),
7212             q{date},
7213             $tracelevel)
7214             if defined $::RD_TRACE;
7215 24         56 my $thisprod = $thisrule->{"prods"}[1];
7216 24         59 $text = $_[1];
7217 24         39 my $_savetext;
7218 24         65 @item = (q{date});
7219 24         61 %item = (__RULE__ => q{date});
7220 24         50 my $repcount = 0;
7221              
7222              
7223 24 50       59 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
7224             Parse::RecDescent::_tracefirst($text),
7225             q{date},
7226             $tracelevel)
7227             if defined $::RD_TRACE;
7228 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         445  
  24         35  
7229 24         67 $expectation->is(q{})->at($text);
7230 24 50   24   293 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         70  
7231             {
7232            
7233 0 0       0 Parse::RecDescent::_trace(q{<>},
7234             Parse::RecDescent::_tracefirst($text),
7235             q{date},
7236             $tracelevel)
7237             if defined $::RD_TRACE;
7238 0         0 $expectation->failed();
7239 0         0 last;
7240             }
7241 24 50       135 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
7242             . $_tok . q{]},
7243              
7244             Parse::RecDescent::_tracefirst($text),
7245             q{date},
7246             $tracelevel)
7247             if defined $::RD_TRACE;
7248 24         61 $item{q{STRING}} = $_tok;
7249 24         48 push @item, $_tok;
7250            
7251             }
7252              
7253 24 50       70 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
7254             Parse::RecDescent::_tracefirst($text),
7255             q{date},
7256             $tracelevel)
7257             if defined $::RD_TRACE;
7258              
7259              
7260              
7261 24         46 $_matched = 1;
7262 24         53 last;
7263             }
7264              
7265             splice
7266 24 50       63 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
7267            
7268 24 50 33     64 unless ( $_matched || defined($score) )
7269             {
7270 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
7271            
7272              
7273 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
7274 0 0       0 Parse::RecDescent::_trace(q{<>},
7275             Parse::RecDescent::_tracefirst($_[1]),
7276             q{date},
7277             $tracelevel)
7278             if defined $::RD_TRACE;
7279 0         0 return undef;
7280             }
7281 24 50 33     108 if (!defined($return) && defined($score))
7282             {
7283 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7284             q{date},
7285             $tracelevel)
7286             if defined $::RD_TRACE;
7287 0         0 $return = $score_return;
7288             }
7289 24         42 splice @{$thisparser->{errors}}, $err_at;
  24         82  
7290 24 50       84 $return = $item[$#item] unless defined $return;
7291 24 50       73 if (defined $::RD_TRACE)
7292             {
7293 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7294             $return . q{])}, "",
7295             q{date},
7296             $tracelevel);
7297 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7298             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7299             Parse::RecDescent::_tracefirst($text),
7300             , q{date},
7301             $tracelevel)
7302             }
7303 24         64 $_[1] = $text;
7304 24         138 return $return;
7305             }
7306              
7307             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
7308             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::envelope
7309             {
7310 1     1   93 my $thisparser = $_[0];
7311 1     1   8 use vars q{$tracelevel};
  1         11  
  1         590  
7312 1   50     7 local $tracelevel = ($tracelevel||0)+1;
7313 1         2 $ERRORS = 0;
7314 1         4 my $thisrule = $thisparser->{"rules"}{"envelope"};
7315              
7316 1 50       5 Parse::RecDescent::_trace(q{Trying rule: [envelope]},
7317             Parse::RecDescent::_tracefirst($_[1]),
7318             q{envelope},
7319             $tracelevel)
7320             if defined $::RD_TRACE;
7321              
7322 1         2 my $def_at = @{$thisparser->{deferred}};
  1         4  
7323 1         2 my $err_at = @{$thisparser->{errors}};
  1         3  
7324              
7325 1         4 my $score;
7326             my $score_return;
7327 1         0 my $_tok;
7328 1         3 my $return = undef;
7329 1         2 my $_matched=0;
7330 1         2 my $commit=0;
7331 1         3 my @item = ();
7332 1         3 my %item = ();
7333 1         2 my $repeating = $_[2];
7334 1         2 my $_noactions = $_[3];
7335 1 50       4 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  1         2  
  1         3  
7336 1         5 my $_itempos = $_[5];
7337 1 50       4 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7338 1         4 my $text;
7339             my $lastsep;
7340 1         0 my $current_match;
7341 1         4 my $expectation = new Parse::RecDescent::Expectation(q{/.*?\\(.*?ENVELOPE/});
7342 1         11 $expectation->at($_[1]);
7343            
7344 1         4 my $thisline;
7345 1         5 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7346              
7347            
7348              
7349 1   33     13 while (!$_matched && !$commit)
7350             {
7351            
7352 1 50       4 Parse::RecDescent::_trace(q{Trying production: [/.*?\\(.*?ENVELOPE/ envelopestruct /.*\\)/]},
7353             Parse::RecDescent::_tracefirst($_[1]),
7354             q{envelope},
7355             $tracelevel)
7356             if defined $::RD_TRACE;
7357 1         3 my $thisprod = $thisrule->{"prods"}[0];
7358 1         2 $text = $_[1];
7359 1         3 my $_savetext;
7360 1         3 @item = (q{envelope});
7361 1         4 %item = (__RULE__ => q{envelope});
7362 1         2 my $repcount = 0;
7363              
7364              
7365 1 50       3 Parse::RecDescent::_trace(q{Trying terminal: [/.*?\\(.*?ENVELOPE/]}, Parse::RecDescent::_tracefirst($text),
7366             q{envelope},
7367             $tracelevel)
7368             if defined $::RD_TRACE;
7369 1         3 undef $lastsep;
7370 1         4 $expectation->is(q{})->at($text);
7371            
7372              
7373 1 50 33     44 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:.*?\(.*?ENVELOPE)/)
  1 50       16  
7374             {
7375 0 0       0 $text = $lastsep . $text if defined $lastsep;
7376 0         0 $expectation->failed();
7377 0 0       0 Parse::RecDescent::_trace(q{<>},
7378             Parse::RecDescent::_tracefirst($text))
7379             if defined $::RD_TRACE;
7380              
7381 0         0 last;
7382             }
7383 1         7 $current_match = substr($text, $-[0], $+[0] - $-[0]);
7384 1         5 substr($text,0,length($current_match),q{});
7385 1 50       3 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7386             . $current_match . q{])},
7387             Parse::RecDescent::_tracefirst($text))
7388             if defined $::RD_TRACE;
7389 1         5 push @item, $item{__PATTERN1__}=$current_match;
7390            
7391              
7392 1 50       3 Parse::RecDescent::_trace(q{Trying subrule: [envelopestruct]},
7393             Parse::RecDescent::_tracefirst($text),
7394             q{envelope},
7395             $tracelevel)
7396             if defined $::RD_TRACE;
7397 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         744  
  1         2  
7398 1         5 $expectation->is(q{envelopestruct})->at($text);
7399 1 50   1   14 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::envelopestruct($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  1         3  
7400             {
7401            
7402 0 0       0 Parse::RecDescent::_trace(q{<>},
7403             Parse::RecDescent::_tracefirst($text),
7404             q{envelope},
7405             $tracelevel)
7406             if defined $::RD_TRACE;
7407 0         0 $expectation->failed();
7408 0         0 last;
7409             }
7410 1 50       6 Parse::RecDescent::_trace(q{>>Matched subrule: [envelopestruct]<< (return value: [}
7411             . $_tok . q{]},
7412              
7413             Parse::RecDescent::_tracefirst($text),
7414             q{envelope},
7415             $tracelevel)
7416             if defined $::RD_TRACE;
7417 1         3 $item{q{envelopestruct}} = $_tok;
7418 1         3 push @item, $_tok;
7419            
7420             }
7421              
7422 1 50       4 Parse::RecDescent::_trace(q{Trying terminal: [/.*\\)/]}, Parse::RecDescent::_tracefirst($text),
7423             q{envelope},
7424             $tracelevel)
7425             if defined $::RD_TRACE;
7426 1         2 undef $lastsep;
7427 1         5 $expectation->is(q{/.*\\)/})->at($text);
7428            
7429              
7430 1 50 33     27 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:.*\))/)
  1 50       15  
7431             {
7432 0 0       0 $text = $lastsep . $text if defined $lastsep;
7433 0         0 $expectation->failed();
7434 0 0       0 Parse::RecDescent::_trace(q{<>},
7435             Parse::RecDescent::_tracefirst($text))
7436             if defined $::RD_TRACE;
7437              
7438 0         0 last;
7439             }
7440 1         6 $current_match = substr($text, $-[0], $+[0] - $-[0]);
7441 1         5 substr($text,0,length($current_match),q{});
7442 1 50       4 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7443             . $current_match . q{])},
7444             Parse::RecDescent::_tracefirst($text))
7445             if defined $::RD_TRACE;
7446 1         4 push @item, $item{__PATTERN2__}=$current_match;
7447            
7448              
7449 1 50       5 Parse::RecDescent::_trace(q{Trying action},
7450             Parse::RecDescent::_tracefirst($text),
7451             q{envelope},
7452             $tracelevel)
7453             if defined $::RD_TRACE;
7454            
7455              
7456 1 50       5 $_tok = ($_noactions) ? 0 : do { $return = $item{envelopestruct} };
  1         3  
7457 1 50       5 unless (defined $_tok)
7458             {
7459 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
7460             if defined $::RD_TRACE;
7461 0         0 last;
7462             }
7463 1 50       4 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7464             . $_tok . q{])},
7465             Parse::RecDescent::_tracefirst($text))
7466             if defined $::RD_TRACE;
7467 1         3 push @item, $_tok;
7468 1         3 $item{__ACTION1__}=$_tok;
7469            
7470              
7471 1 50       5 Parse::RecDescent::_trace(q{>>Matched production: [/.*?\\(.*?ENVELOPE/ envelopestruct /.*\\)/]<<},
7472             Parse::RecDescent::_tracefirst($text),
7473             q{envelope},
7474             $tracelevel)
7475             if defined $::RD_TRACE;
7476              
7477              
7478              
7479 1         2 $_matched = 1;
7480 1         3 last;
7481             }
7482              
7483             splice
7484 1 50       4 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
7485            
7486 1 50 33     6 unless ( $_matched || defined($score) )
7487             {
7488 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
7489            
7490              
7491 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
7492 0 0       0 Parse::RecDescent::_trace(q{<>},
7493             Parse::RecDescent::_tracefirst($_[1]),
7494             q{envelope},
7495             $tracelevel)
7496             if defined $::RD_TRACE;
7497 0         0 return undef;
7498             }
7499 1 50 33     104 if (!defined($return) && defined($score))
7500             {
7501 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7502             q{envelope},
7503             $tracelevel)
7504             if defined $::RD_TRACE;
7505 0         0 $return = $score_return;
7506             }
7507 1         3 splice @{$thisparser->{errors}}, $err_at;
  1         4  
7508 1 50       5 $return = $item[$#item] unless defined $return;
7509 1 50       4 if (defined $::RD_TRACE)
7510             {
7511 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7512             $return . q{])}, "",
7513             q{envelope},
7514             $tracelevel);
7515 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7516             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7517             Parse::RecDescent::_tracefirst($text),
7518             , q{envelope},
7519             $tracelevel)
7520             }
7521 1         3 $_[1] = $text;
7522 1         11 return $return;
7523             }
7524              
7525             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
7526             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::envelopestruct
7527             {
7528 25     25   600 my $thisparser = $_[0];
7529 1     1   9 use vars q{$tracelevel};
  1         2  
  1         581  
7530 25   100     93 local $tracelevel = ($tracelevel||0)+1;
7531 25         54 $ERRORS = 0;
7532 25         78 my $thisrule = $thisparser->{"rules"}{"envelopestruct"};
7533              
7534 25 50       82 Parse::RecDescent::_trace(q{Trying rule: [envelopestruct]},
7535             Parse::RecDescent::_tracefirst($_[1]),
7536             q{envelopestruct},
7537             $tracelevel)
7538             if defined $::RD_TRACE;
7539              
7540 25         48 my $def_at = @{$thisparser->{deferred}};
  25         59  
7541 25         47 my $err_at = @{$thisparser->{errors}};
  25         60  
7542              
7543 25         70 my $score;
7544             my $score_return;
7545 25         0 my $_tok;
7546 25         31 my $return = undef;
7547 25         44 my $_matched=0;
7548 25         62 my $commit=0;
7549 25         47 my @item = ();
7550 25         47 my %item = ();
7551 25         46 my $repeating = $_[2];
7552 25         52 my $_noactions = $_[3];
7553 25 50       64 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  25         39  
  25         50  
7554 25         59 my $_itempos = $_[5];
7555 25 50       83 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7556 25         65 my $text;
7557             my $lastsep;
7558 25         0 my $current_match;
7559 25         81 my $expectation = new Parse::RecDescent::Expectation(q{'('});
7560 25         189 $expectation->at($_[1]);
7561            
7562 25         105 my $thisline;
7563 25         95 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7564              
7565            
7566              
7567 25   33     258 while (!$_matched && !$commit)
7568             {
7569            
7570 25 50       82 Parse::RecDescent::_trace(q{Trying production: ['(' date subject from sender replyto to cc bcc inreplyto messageid ')']},
7571             Parse::RecDescent::_tracefirst($_[1]),
7572             q{envelopestruct},
7573             $tracelevel)
7574             if defined $::RD_TRACE;
7575 25         75 my $thisprod = $thisrule->{"prods"}[0];
7576 25         57 $text = $_[1];
7577 25         42 my $_savetext;
7578 25         59 @item = (q{envelopestruct});
7579 25         56 %item = (__RULE__ => q{envelopestruct});
7580 25         55 my $repcount = 0;
7581              
7582              
7583 25 50       60 Parse::RecDescent::_trace(q{Trying terminal: ['(']},
7584             Parse::RecDescent::_tracefirst($text),
7585             q{envelopestruct},
7586             $tracelevel)
7587             if defined $::RD_TRACE;
7588 25         53 undef $lastsep;
7589 25         60 $expectation->is(q{})->at($text);
7590            
7591              
7592 25 100 33     331 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and
  25 100 66     232  
  25   66     48  
  25         191  
7593             substr($text,0,length($_tok)) eq $_tok and
7594 24         60 do { substr($text,0,length($_tok)) = ""; 1; }
  24         76  
7595             )
7596             {
7597 1 50       6 $text = $lastsep . $text if defined $lastsep;
7598            
7599 1         5 $expectation->failed();
7600 1 50       6 Parse::RecDescent::_trace(q{<>},
7601             Parse::RecDescent::_tracefirst($text))
7602             if defined $::RD_TRACE;
7603 1         3 last;
7604             }
7605 24 50       79 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7606             . $_tok . q{])},
7607             Parse::RecDescent::_tracefirst($text))
7608             if defined $::RD_TRACE;
7609 24         72 push @item, $item{__STRING1__}=$_tok;
7610            
7611              
7612 24 50       56 Parse::RecDescent::_trace(q{Trying subrule: [date]},
7613             Parse::RecDescent::_tracefirst($text),
7614             q{envelopestruct},
7615             $tracelevel)
7616             if defined $::RD_TRACE;
7617 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         161  
  24         46  
7618 24         79 $expectation->is(q{date})->at($text);
7619 24 50   24   303 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::date($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         54  
7620             {
7621            
7622 0 0       0 Parse::RecDescent::_trace(q{<>},
7623             Parse::RecDescent::_tracefirst($text),
7624             q{envelopestruct},
7625             $tracelevel)
7626             if defined $::RD_TRACE;
7627 0         0 $expectation->failed();
7628 0         0 last;
7629             }
7630 24 50       90 Parse::RecDescent::_trace(q{>>Matched subrule: [date]<< (return value: [}
7631             . $_tok . q{]},
7632              
7633             Parse::RecDescent::_tracefirst($text),
7634             q{envelopestruct},
7635             $tracelevel)
7636             if defined $::RD_TRACE;
7637 24         66 $item{q{date}} = $_tok;
7638 24         47 push @item, $_tok;
7639            
7640             }
7641              
7642 24 50       61 Parse::RecDescent::_trace(q{Trying subrule: [subject]},
7643             Parse::RecDescent::_tracefirst($text),
7644             q{envelopestruct},
7645             $tracelevel)
7646             if defined $::RD_TRACE;
7647 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         192  
  24         43  
7648 24         83 $expectation->is(q{subject})->at($text);
7649 24 50   24   335 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::subject($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         60  
7650             {
7651            
7652 0 0       0 Parse::RecDescent::_trace(q{<>},
7653             Parse::RecDescent::_tracefirst($text),
7654             q{envelopestruct},
7655             $tracelevel)
7656             if defined $::RD_TRACE;
7657 0         0 $expectation->failed();
7658 0         0 last;
7659             }
7660 24 50       93 Parse::RecDescent::_trace(q{>>Matched subrule: [subject]<< (return value: [}
7661             . $_tok . q{]},
7662              
7663             Parse::RecDescent::_tracefirst($text),
7664             q{envelopestruct},
7665             $tracelevel)
7666             if defined $::RD_TRACE;
7667 24         60 $item{q{subject}} = $_tok;
7668 24         62 push @item, $_tok;
7669            
7670             }
7671              
7672 24 50       66 Parse::RecDescent::_trace(q{Trying subrule: [from]},
7673             Parse::RecDescent::_tracefirst($text),
7674             q{envelopestruct},
7675             $tracelevel)
7676             if defined $::RD_TRACE;
7677 1     1   9 if (1) { no strict qw{refs};
  1         1  
  1         183  
  24         37  
7678 24         94 $expectation->is(q{from})->at($text);
7679 24 50   24   343 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::from($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         71  
7680             {
7681            
7682 0 0       0 Parse::RecDescent::_trace(q{<>},
7683             Parse::RecDescent::_tracefirst($text),
7684             q{envelopestruct},
7685             $tracelevel)
7686             if defined $::RD_TRACE;
7687 0         0 $expectation->failed();
7688 0         0 last;
7689             }
7690 24 50       93 Parse::RecDescent::_trace(q{>>Matched subrule: [from]<< (return value: [}
7691             . $_tok . q{]},
7692              
7693             Parse::RecDescent::_tracefirst($text),
7694             q{envelopestruct},
7695             $tracelevel)
7696             if defined $::RD_TRACE;
7697 24         60 $item{q{from}} = $_tok;
7698 24         52 push @item, $_tok;
7699            
7700             }
7701              
7702 24 50       63 Parse::RecDescent::_trace(q{Trying subrule: [sender]},
7703             Parse::RecDescent::_tracefirst($text),
7704             q{envelopestruct},
7705             $tracelevel)
7706             if defined $::RD_TRACE;
7707 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         191  
  24         42  
7708 24         71 $expectation->is(q{sender})->at($text);
7709 24 50   24   332 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::sender($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         54  
7710             {
7711            
7712 0 0       0 Parse::RecDescent::_trace(q{<>},
7713             Parse::RecDescent::_tracefirst($text),
7714             q{envelopestruct},
7715             $tracelevel)
7716             if defined $::RD_TRACE;
7717 0         0 $expectation->failed();
7718 0         0 last;
7719             }
7720 24 50       102 Parse::RecDescent::_trace(q{>>Matched subrule: [sender]<< (return value: [}
7721             . $_tok . q{]},
7722              
7723             Parse::RecDescent::_tracefirst($text),
7724             q{envelopestruct},
7725             $tracelevel)
7726             if defined $::RD_TRACE;
7727 24         63 $item{q{sender}} = $_tok;
7728 24         53 push @item, $_tok;
7729            
7730             }
7731              
7732 24 50       67 Parse::RecDescent::_trace(q{Trying subrule: [replyto]},
7733             Parse::RecDescent::_tracefirst($text),
7734             q{envelopestruct},
7735             $tracelevel)
7736             if defined $::RD_TRACE;
7737 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         149  
  24         39  
7738 24         74 $expectation->is(q{replyto})->at($text);
7739 24 50   24   287 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::replyto($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         55  
7740             {
7741            
7742 0 0       0 Parse::RecDescent::_trace(q{<>},
7743             Parse::RecDescent::_tracefirst($text),
7744             q{envelopestruct},
7745             $tracelevel)
7746             if defined $::RD_TRACE;
7747 0         0 $expectation->failed();
7748 0         0 last;
7749             }
7750 24 50       89 Parse::RecDescent::_trace(q{>>Matched subrule: [replyto]<< (return value: [}
7751             . $_tok . q{]},
7752              
7753             Parse::RecDescent::_tracefirst($text),
7754             q{envelopestruct},
7755             $tracelevel)
7756             if defined $::RD_TRACE;
7757 24         60 $item{q{replyto}} = $_tok;
7758 24         53 push @item, $_tok;
7759            
7760             }
7761              
7762 24 50       67 Parse::RecDescent::_trace(q{Trying subrule: [to]},
7763             Parse::RecDescent::_tracefirst($text),
7764             q{envelopestruct},
7765             $tracelevel)
7766             if defined $::RD_TRACE;
7767 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         177  
  24         36  
7768 24         80 $expectation->is(q{to})->at($text);
7769 24 50   24   291 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::to($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         50  
7770             {
7771            
7772 0 0       0 Parse::RecDescent::_trace(q{<>},
7773             Parse::RecDescent::_tracefirst($text),
7774             q{envelopestruct},
7775             $tracelevel)
7776             if defined $::RD_TRACE;
7777 0         0 $expectation->failed();
7778 0         0 last;
7779             }
7780 24 50       94 Parse::RecDescent::_trace(q{>>Matched subrule: [to]<< (return value: [}
7781             . $_tok . q{]},
7782              
7783             Parse::RecDescent::_tracefirst($text),
7784             q{envelopestruct},
7785             $tracelevel)
7786             if defined $::RD_TRACE;
7787 24         71 $item{q{to}} = $_tok;
7788 24         55 push @item, $_tok;
7789            
7790             }
7791              
7792 24 50       66 Parse::RecDescent::_trace(q{Trying subrule: [cc]},
7793             Parse::RecDescent::_tracefirst($text),
7794             q{envelopestruct},
7795             $tracelevel)
7796             if defined $::RD_TRACE;
7797 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         190  
  24         38  
7798 24         86 $expectation->is(q{cc})->at($text);
7799 24 50   24   304 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::cc($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         60  
7800             {
7801            
7802 0 0       0 Parse::RecDescent::_trace(q{<>},
7803             Parse::RecDescent::_tracefirst($text),
7804             q{envelopestruct},
7805             $tracelevel)
7806             if defined $::RD_TRACE;
7807 0         0 $expectation->failed();
7808 0         0 last;
7809             }
7810 24 50       89 Parse::RecDescent::_trace(q{>>Matched subrule: [cc]<< (return value: [}
7811             . $_tok . q{]},
7812              
7813             Parse::RecDescent::_tracefirst($text),
7814             q{envelopestruct},
7815             $tracelevel)
7816             if defined $::RD_TRACE;
7817 24         70 $item{q{cc}} = $_tok;
7818 24         88 push @item, $_tok;
7819            
7820             }
7821              
7822 24 50       64 Parse::RecDescent::_trace(q{Trying subrule: [bcc]},
7823             Parse::RecDescent::_tracefirst($text),
7824             q{envelopestruct},
7825             $tracelevel)
7826             if defined $::RD_TRACE;
7827 1     1   8 if (1) { no strict qw{refs};
  1         3  
  1         194  
  24         38  
7828 24         82 $expectation->is(q{bcc})->at($text);
7829 24 50   24   292 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bcc($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         55  
7830             {
7831            
7832 0 0       0 Parse::RecDescent::_trace(q{<>},
7833             Parse::RecDescent::_tracefirst($text),
7834             q{envelopestruct},
7835             $tracelevel)
7836             if defined $::RD_TRACE;
7837 0         0 $expectation->failed();
7838 0         0 last;
7839             }
7840 24 50       95 Parse::RecDescent::_trace(q{>>Matched subrule: [bcc]<< (return value: [}
7841             . $_tok . q{]},
7842              
7843             Parse::RecDescent::_tracefirst($text),
7844             q{envelopestruct},
7845             $tracelevel)
7846             if defined $::RD_TRACE;
7847 24         70 $item{q{bcc}} = $_tok;
7848 24         54 push @item, $_tok;
7849            
7850             }
7851              
7852 24 50       74 Parse::RecDescent::_trace(q{Trying subrule: [inreplyto]},
7853             Parse::RecDescent::_tracefirst($text),
7854             q{envelopestruct},
7855             $tracelevel)
7856             if defined $::RD_TRACE;
7857 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         176  
  24         37  
7858 24         114 $expectation->is(q{inreplyto})->at($text);
7859 24 50   24   289 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::inreplyto($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         58  
7860             {
7861            
7862 0 0       0 Parse::RecDescent::_trace(q{<>},
7863             Parse::RecDescent::_tracefirst($text),
7864             q{envelopestruct},
7865             $tracelevel)
7866             if defined $::RD_TRACE;
7867 0         0 $expectation->failed();
7868 0         0 last;
7869             }
7870 24 50       83 Parse::RecDescent::_trace(q{>>Matched subrule: [inreplyto]<< (return value: [}
7871             . $_tok . q{]},
7872              
7873             Parse::RecDescent::_tracefirst($text),
7874             q{envelopestruct},
7875             $tracelevel)
7876             if defined $::RD_TRACE;
7877 24         65 $item{q{inreplyto}} = $_tok;
7878 24         53 push @item, $_tok;
7879            
7880             }
7881              
7882 24 50       62 Parse::RecDescent::_trace(q{Trying subrule: [messageid]},
7883             Parse::RecDescent::_tracefirst($text),
7884             q{envelopestruct},
7885             $tracelevel)
7886             if defined $::RD_TRACE;
7887 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         831  
  24         41  
7888 24         93 $expectation->is(q{messageid})->at($text);
7889 24 50   24   298 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::messageid($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         55  
7890             {
7891            
7892 0 0       0 Parse::RecDescent::_trace(q{<>},
7893             Parse::RecDescent::_tracefirst($text),
7894             q{envelopestruct},
7895             $tracelevel)
7896             if defined $::RD_TRACE;
7897 0         0 $expectation->failed();
7898 0         0 last;
7899             }
7900 24 50       91 Parse::RecDescent::_trace(q{>>Matched subrule: [messageid]<< (return value: [}
7901             . $_tok . q{]},
7902              
7903             Parse::RecDescent::_tracefirst($text),
7904             q{envelopestruct},
7905             $tracelevel)
7906             if defined $::RD_TRACE;
7907 24         65 $item{q{messageid}} = $_tok;
7908 24         50 push @item, $_tok;
7909            
7910             }
7911              
7912 24 50       62 Parse::RecDescent::_trace(q{Trying terminal: [')']},
7913             Parse::RecDescent::_tracefirst($text),
7914             q{envelopestruct},
7915             $tracelevel)
7916             if defined $::RD_TRACE;
7917 24         44 undef $lastsep;
7918 24         87 $expectation->is(q{')'})->at($text);
7919            
7920              
7921 24 50 33     308 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and
  24 50 33     199  
  24   33     57  
  24         158  
7922             substr($text,0,length($_tok)) eq $_tok and
7923 24         53 do { substr($text,0,length($_tok)) = ""; 1; }
  24         78  
7924             )
7925             {
7926 0 0       0 $text = $lastsep . $text if defined $lastsep;
7927            
7928 0         0 $expectation->failed();
7929 0 0       0 Parse::RecDescent::_trace(q{<>},
7930             Parse::RecDescent::_tracefirst($text))
7931             if defined $::RD_TRACE;
7932 0         0 last;
7933             }
7934 24 50       73 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7935             . $_tok . q{])},
7936             Parse::RecDescent::_tracefirst($text))
7937             if defined $::RD_TRACE;
7938 24         71 push @item, $item{__STRING2__}=$_tok;
7939            
7940              
7941 24 50       73 Parse::RecDescent::_trace(q{Trying action},
7942             Parse::RecDescent::_tracefirst($text),
7943             q{envelopestruct},
7944             $tracelevel)
7945             if defined $::RD_TRACE;
7946            
7947              
7948 24 50       53 $_tok = ($_noactions) ? 0 : do { $return = bless {}, "Mail::IMAPClient::BodyStructure::Envelope";
  24         76  
7949             $return->{$_} = $item{$_}
7950 24         341 for qw/date subject from sender replyto to cc/
7951             , qw/bcc inreplyto messageid/;
7952 24         56 1;
7953             };
7954 24 50       100 unless (defined $_tok)
7955             {
7956 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
7957             if defined $::RD_TRACE;
7958 0         0 last;
7959             }
7960 24 50       70 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7961             . $_tok . q{])},
7962             Parse::RecDescent::_tracefirst($text))
7963             if defined $::RD_TRACE;
7964 24         49 push @item, $_tok;
7965 24         80 $item{__ACTION1__}=$_tok;
7966            
7967              
7968 24 50       60 Parse::RecDescent::_trace(q{>>Matched production: ['(' date subject from sender replyto to cc bcc inreplyto messageid ')']<<},
7969             Parse::RecDescent::_tracefirst($text),
7970             q{envelopestruct},
7971             $tracelevel)
7972             if defined $::RD_TRACE;
7973              
7974              
7975              
7976 24         46 $_matched = 1;
7977 24         55 last;
7978             }
7979              
7980             splice
7981 25 100       67 @{$thisparser->{deferred}}, $def_at unless $_matched;
  1         4  
7982            
7983 25 100 66     91 unless ( $_matched || defined($score) )
7984             {
7985 1         2 splice @{$thisparser->{deferred}}, $def_at;
  1         4  
7986            
7987              
7988 1         3 $_[1] = $text; # NOT SURE THIS IS NEEDED
7989 1 50       3 Parse::RecDescent::_trace(q{<>},
7990             Parse::RecDescent::_tracefirst($_[1]),
7991             q{envelopestruct},
7992             $tracelevel)
7993             if defined $::RD_TRACE;
7994 1         6 return undef;
7995             }
7996 24 50 33     81 if (!defined($return) && defined($score))
7997             {
7998 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7999             q{envelopestruct},
8000             $tracelevel)
8001             if defined $::RD_TRACE;
8002 0         0 $return = $score_return;
8003             }
8004 24         40 splice @{$thisparser->{errors}}, $err_at;
  24         65  
8005 24 50       55 $return = $item[$#item] unless defined $return;
8006 24 50       65 if (defined $::RD_TRACE)
8007             {
8008 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8009             $return . q{])}, "",
8010             q{envelopestruct},
8011             $tracelevel);
8012 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
8013             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8014             Parse::RecDescent::_tracefirst($text),
8015             , q{envelopestruct},
8016             $tracelevel)
8017             }
8018 24         76 $_[1] = $text;
8019 24         217 return $return;
8020             }
8021              
8022             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
8023             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::from
8024             {
8025 24     24   50 my $thisparser = $_[0];
8026 1     1   9 use vars q{$tracelevel};
  1         2  
  1         381  
8027 24   50     74 local $tracelevel = ($tracelevel||0)+1;
8028 24         46 $ERRORS = 0;
8029 24         77 my $thisrule = $thisparser->{"rules"}{"from"};
8030              
8031 24 50       63 Parse::RecDescent::_trace(q{Trying rule: [from]},
8032             Parse::RecDescent::_tracefirst($_[1]),
8033             q{from},
8034             $tracelevel)
8035             if defined $::RD_TRACE;
8036              
8037 24         44 my $def_at = @{$thisparser->{deferred}};
  24         94  
8038 24         44 my $err_at = @{$thisparser->{errors}};
  24         56  
8039              
8040 24         71 my $score;
8041             my $score_return;
8042 24         0 my $_tok;
8043 24         37 my $return = undef;
8044 24         43 my $_matched=0;
8045 24         36 my $commit=0;
8046 24         49 my @item = ();
8047 24         56 my %item = ();
8048 24         38 my $repeating = $_[2];
8049 24         53 my $_noactions = $_[3];
8050 24 50       67 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  24         40  
  24         48  
8051 24         44 my $_itempos = $_[5];
8052 24 50       83 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8053 24         68 my $text;
8054             my $lastsep;
8055 24         0 my $current_match;
8056 24         83 my $expectation = new Parse::RecDescent::Expectation(q{ADDRESSES});
8057 24         190 $expectation->at($_[1]);
8058            
8059 24         135 my $thisline;
8060 24         104 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8061              
8062            
8063              
8064 24   33     232 while (!$_matched && !$commit)
8065             {
8066            
8067 24 50       76 Parse::RecDescent::_trace(q{Trying production: [ADDRESSES]},
8068             Parse::RecDescent::_tracefirst($_[1]),
8069             q{from},
8070             $tracelevel)
8071             if defined $::RD_TRACE;
8072 24         73 my $thisprod = $thisrule->{"prods"}[0];
8073 24         62 $text = $_[1];
8074 24         38 my $_savetext;
8075 24         51 @item = (q{from});
8076 24         70 %item = (__RULE__ => q{from});
8077 24         49 my $repcount = 0;
8078              
8079              
8080 24 50       53 Parse::RecDescent::_trace(q{Trying subrule: [ADDRESSES]},
8081             Parse::RecDescent::_tracefirst($text),
8082             q{from},
8083             $tracelevel)
8084             if defined $::RD_TRACE;
8085 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         432  
  24         41  
8086 24         74 $expectation->is(q{})->at($text);
8087 24 50   24   307 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         63  
8088             {
8089            
8090 0 0       0 Parse::RecDescent::_trace(q{<>},
8091             Parse::RecDescent::_tracefirst($text),
8092             q{from},
8093             $tracelevel)
8094             if defined $::RD_TRACE;
8095 0         0 $expectation->failed();
8096 0         0 last;
8097             }
8098 24 50       104 Parse::RecDescent::_trace(q{>>Matched subrule: [ADDRESSES]<< (return value: [}
8099             . $_tok . q{]},
8100              
8101             Parse::RecDescent::_tracefirst($text),
8102             q{from},
8103             $tracelevel)
8104             if defined $::RD_TRACE;
8105 24         59 $item{q{ADDRESSES}} = $_tok;
8106 24         51 push @item, $_tok;
8107            
8108             }
8109              
8110 24 50       52 Parse::RecDescent::_trace(q{>>Matched production: [ADDRESSES]<<},
8111             Parse::RecDescent::_tracefirst($text),
8112             q{from},
8113             $tracelevel)
8114             if defined $::RD_TRACE;
8115              
8116              
8117              
8118 24         36 $_matched = 1;
8119 24         40 last;
8120             }
8121              
8122             splice
8123 24 50       74 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
8124            
8125 24 50 33     72 unless ( $_matched || defined($score) )
8126             {
8127 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
8128            
8129              
8130 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
8131 0 0       0 Parse::RecDescent::_trace(q{<>},
8132             Parse::RecDescent::_tracefirst($_[1]),
8133             q{from},
8134             $tracelevel)
8135             if defined $::RD_TRACE;
8136 0         0 return undef;
8137             }
8138 24 50 33     98 if (!defined($return) && defined($score))
8139             {
8140 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8141             q{from},
8142             $tracelevel)
8143             if defined $::RD_TRACE;
8144 0         0 $return = $score_return;
8145             }
8146 24         47 splice @{$thisparser->{errors}}, $err_at;
  24         62  
8147 24 50       71 $return = $item[$#item] unless defined $return;
8148 24 50       54 if (defined $::RD_TRACE)
8149             {
8150 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8151             $return . q{])}, "",
8152             q{from},
8153             $tracelevel);
8154 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
8155             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8156             Parse::RecDescent::_tracefirst($text),
8157             , q{from},
8158             $tracelevel)
8159             }
8160 24         57 $_[1] = $text;
8161 24         146 return $return;
8162             }
8163              
8164             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
8165             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::hostname
8166             {
8167 94     94   177 my $thisparser = $_[0];
8168 1     1   11 use vars q{$tracelevel};
  1         2  
  1         379  
8169 94   50     228 local $tracelevel = ($tracelevel||0)+1;
8170 94         156 $ERRORS = 0;
8171 94         200 my $thisrule = $thisparser->{"rules"}{"hostname"};
8172              
8173 94 50       195 Parse::RecDescent::_trace(q{Trying rule: [hostname]},
8174             Parse::RecDescent::_tracefirst($_[1]),
8175             q{hostname},
8176             $tracelevel)
8177             if defined $::RD_TRACE;
8178              
8179 94         136 my $def_at = @{$thisparser->{deferred}};
  94         169  
8180 94         170 my $err_at = @{$thisparser->{errors}};
  94         176  
8181              
8182 94         222 my $score;
8183             my $score_return;
8184 94         0 my $_tok;
8185 94         146 my $return = undef;
8186 94         264 my $_matched=0;
8187 94         141 my $commit=0;
8188 94         166 my @item = ();
8189 94         150 my %item = ();
8190 94         126 my $repeating = $_[2];
8191 94         142 my $_noactions = $_[3];
8192 94 50       221 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  94         166  
  94         178  
8193 94         154 my $_itempos = $_[5];
8194 94 50       206 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8195 94         224 my $text;
8196             my $lastsep;
8197 94         0 my $current_match;
8198 94         253 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING});
8199 94         648 $expectation->at($_[1]);
8200            
8201 94         401 my $thisline;
8202 94         352 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8203              
8204            
8205              
8206 94   33     788 while (!$_matched && !$commit)
8207             {
8208            
8209 94 50       215 Parse::RecDescent::_trace(q{Trying production: [NIL]},
8210             Parse::RecDescent::_tracefirst($_[1]),
8211             q{hostname},
8212             $tracelevel)
8213             if defined $::RD_TRACE;
8214 94         209 my $thisprod = $thisrule->{"prods"}[0];
8215 94         161 $text = $_[1];
8216 94         152 my $_savetext;
8217 94         194 @item = (q{hostname});
8218 94         186 %item = (__RULE__ => q{hostname});
8219 94         205 my $repcount = 0;
8220              
8221              
8222 94 50       185 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
8223             Parse::RecDescent::_tracefirst($text),
8224             q{hostname},
8225             $tracelevel)
8226             if defined $::RD_TRACE;
8227 1     1   9 if (1) { no strict qw{refs};
  1         3  
  1         296  
  94         138  
8228 94         220 $expectation->is(q{})->at($text);
8229 94 50   94   877 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  94         182  
8230             {
8231            
8232 94 50       234 Parse::RecDescent::_trace(q{<>},
8233             Parse::RecDescent::_tracefirst($text),
8234             q{hostname},
8235             $tracelevel)
8236             if defined $::RD_TRACE;
8237 94         264 $expectation->failed();
8238 94         334 last;
8239             }
8240 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
8241             . $_tok . q{]},
8242              
8243             Parse::RecDescent::_tracefirst($text),
8244             q{hostname},
8245             $tracelevel)
8246             if defined $::RD_TRACE;
8247 0         0 $item{q{NIL}} = $_tok;
8248 0         0 push @item, $_tok;
8249            
8250             }
8251              
8252 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
8253             Parse::RecDescent::_tracefirst($text),
8254             q{hostname},
8255             $tracelevel)
8256             if defined $::RD_TRACE;
8257              
8258              
8259              
8260 0         0 $_matched = 1;
8261 0         0 last;
8262             }
8263              
8264             splice
8265 94 50       363 @{$thisparser->{deferred}}, $def_at unless $_matched;
  94         191  
8266            
8267 94   33     371 while (!$_matched && !$commit)
8268             {
8269            
8270 94 50       204 Parse::RecDescent::_trace(q{Trying production: [STRING]},
8271             Parse::RecDescent::_tracefirst($_[1]),
8272             q{hostname},
8273             $tracelevel)
8274             if defined $::RD_TRACE;
8275 94         156 my $thisprod = $thisrule->{"prods"}[1];
8276 94         179 $text = $_[1];
8277 94         135 my $_savetext;
8278 94         215 @item = (q{hostname});
8279 94         207 %item = (__RULE__ => q{hostname});
8280 94         154 my $repcount = 0;
8281              
8282              
8283 94 50       196 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
8284             Parse::RecDescent::_tracefirst($text),
8285             q{hostname},
8286             $tracelevel)
8287             if defined $::RD_TRACE;
8288 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         452  
  94         138  
8289 94         207 $expectation->is(q{})->at($text);
8290 94 50   94   889 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  94         209  
8291             {
8292            
8293 0 0       0 Parse::RecDescent::_trace(q{<>},
8294             Parse::RecDescent::_tracefirst($text),
8295             q{hostname},
8296             $tracelevel)
8297             if defined $::RD_TRACE;
8298 0         0 $expectation->failed();
8299 0         0 last;
8300             }
8301 94 50       295 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
8302             . $_tok . q{]},
8303              
8304             Parse::RecDescent::_tracefirst($text),
8305             q{hostname},
8306             $tracelevel)
8307             if defined $::RD_TRACE;
8308 94         194 $item{q{STRING}} = $_tok;
8309 94         182 push @item, $_tok;
8310            
8311             }
8312              
8313 94 50       197 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
8314             Parse::RecDescent::_tracefirst($text),
8315             q{hostname},
8316             $tracelevel)
8317             if defined $::RD_TRACE;
8318              
8319              
8320              
8321 94         142 $_matched = 1;
8322 94         168 last;
8323             }
8324              
8325             splice
8326 94 50       193 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
8327            
8328 94 50 33     220 unless ( $_matched || defined($score) )
8329             {
8330 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
8331            
8332              
8333 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
8334 0 0       0 Parse::RecDescent::_trace(q{<>},
8335             Parse::RecDescent::_tracefirst($_[1]),
8336             q{hostname},
8337             $tracelevel)
8338             if defined $::RD_TRACE;
8339 0         0 return undef;
8340             }
8341 94 50 33     345 if (!defined($return) && defined($score))
8342             {
8343 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8344             q{hostname},
8345             $tracelevel)
8346             if defined $::RD_TRACE;
8347 0         0 $return = $score_return;
8348             }
8349 94         139 splice @{$thisparser->{errors}}, $err_at;
  94         200  
8350 94 50       293 $return = $item[$#item] unless defined $return;
8351 94 50       210 if (defined $::RD_TRACE)
8352             {
8353 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8354             $return . q{])}, "",
8355             q{hostname},
8356             $tracelevel);
8357 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
8358             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8359             Parse::RecDescent::_tracefirst($text),
8360             , q{hostname},
8361             $tracelevel)
8362             }
8363 94         210 $_[1] = $text;
8364 94         462 return $return;
8365             }
8366              
8367             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
8368             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::inreplyto
8369             {
8370 24     24   51 my $thisparser = $_[0];
8371 1     1   9 use vars q{$tracelevel};
  1         1  
  1         357  
8372 24   50     69 local $tracelevel = ($tracelevel||0)+1;
8373 24         45 $ERRORS = 0;
8374 24         63 my $thisrule = $thisparser->{"rules"}{"inreplyto"};
8375              
8376 24 50       62 Parse::RecDescent::_trace(q{Trying rule: [inreplyto]},
8377             Parse::RecDescent::_tracefirst($_[1]),
8378             q{inreplyto},
8379             $tracelevel)
8380             if defined $::RD_TRACE;
8381              
8382 24         43 my $def_at = @{$thisparser->{deferred}};
  24         57  
8383 24         35 my $err_at = @{$thisparser->{errors}};
  24         50  
8384              
8385 24         73 my $score;
8386             my $score_return;
8387 24         0 my $_tok;
8388 24         48 my $return = undef;
8389 24         36 my $_matched=0;
8390 24         51 my $commit=0;
8391 24         51 my @item = ();
8392 24         53 my %item = ();
8393 24         48 my $repeating = $_[2];
8394 24         38 my $_noactions = $_[3];
8395 24 50       69 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  24         42  
  24         51  
8396 24         42 my $_itempos = $_[5];
8397 24 50       84 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8398 24         84 my $text;
8399             my $lastsep;
8400 24         0 my $current_match;
8401 24         69 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING});
8402 24         213 $expectation->at($_[1]);
8403            
8404 24         148 my $thisline;
8405 24         93 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8406              
8407            
8408              
8409 24   33     235 while (!$_matched && !$commit)
8410             {
8411            
8412 24 50       79 Parse::RecDescent::_trace(q{Trying production: [NIL]},
8413             Parse::RecDescent::_tracefirst($_[1]),
8414             q{inreplyto},
8415             $tracelevel)
8416             if defined $::RD_TRACE;
8417 24         73 my $thisprod = $thisrule->{"prods"}[0];
8418 24         54 $text = $_[1];
8419 24         39 my $_savetext;
8420 24         61 @item = (q{inreplyto});
8421 24         60 %item = (__RULE__ => q{inreplyto});
8422 24         39 my $repcount = 0;
8423              
8424              
8425 24 50       57 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
8426             Parse::RecDescent::_tracefirst($text),
8427             q{inreplyto},
8428             $tracelevel)
8429             if defined $::RD_TRACE;
8430 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         273  
  24         41  
8431 24         73 $expectation->is(q{})->at($text);
8432 24 100   24   264 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         68  
8433             {
8434            
8435 1 50       4 Parse::RecDescent::_trace(q{<>},
8436             Parse::RecDescent::_tracefirst($text),
8437             q{inreplyto},
8438             $tracelevel)
8439             if defined $::RD_TRACE;
8440 1         4 $expectation->failed();
8441 1         4 last;
8442             }
8443 23 50       114 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
8444             . $_tok . q{]},
8445              
8446             Parse::RecDescent::_tracefirst($text),
8447             q{inreplyto},
8448             $tracelevel)
8449             if defined $::RD_TRACE;
8450 23         66 $item{q{NIL}} = $_tok;
8451 23         49 push @item, $_tok;
8452            
8453             }
8454              
8455 23 50       52 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
8456             Parse::RecDescent::_tracefirst($text),
8457             q{inreplyto},
8458             $tracelevel)
8459             if defined $::RD_TRACE;
8460              
8461              
8462              
8463 23         44 $_matched = 1;
8464 23         48 last;
8465             }
8466              
8467             splice
8468 24 100       87 @{$thisparser->{deferred}}, $def_at unless $_matched;
  1         3  
8469            
8470 24   66     77 while (!$_matched && !$commit)
8471             {
8472            
8473 1 50       3 Parse::RecDescent::_trace(q{Trying production: [STRING]},
8474             Parse::RecDescent::_tracefirst($_[1]),
8475             q{inreplyto},
8476             $tracelevel)
8477             if defined $::RD_TRACE;
8478 1         3 my $thisprod = $thisrule->{"prods"}[1];
8479 1         3 $text = $_[1];
8480 1         2 my $_savetext;
8481 1         5 @item = (q{inreplyto});
8482 1         3 %item = (__RULE__ => q{inreplyto});
8483 1         3 my $repcount = 0;
8484              
8485              
8486 1 50       3 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
8487             Parse::RecDescent::_tracefirst($text),
8488             q{inreplyto},
8489             $tracelevel)
8490             if defined $::RD_TRACE;
8491 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         473  
  1         2  
8492 1         5 $expectation->is(q{})->at($text);
8493 1 50   1   13 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  1         3  
8494             {
8495            
8496 0 0       0 Parse::RecDescent::_trace(q{<>},
8497             Parse::RecDescent::_tracefirst($text),
8498             q{inreplyto},
8499             $tracelevel)
8500             if defined $::RD_TRACE;
8501 0         0 $expectation->failed();
8502 0         0 last;
8503             }
8504 1 50       6 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
8505             . $_tok . q{]},
8506              
8507             Parse::RecDescent::_tracefirst($text),
8508             q{inreplyto},
8509             $tracelevel)
8510             if defined $::RD_TRACE;
8511 1         8 $item{q{STRING}} = $_tok;
8512 1         4 push @item, $_tok;
8513            
8514             }
8515              
8516 1 50       4 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
8517             Parse::RecDescent::_tracefirst($text),
8518             q{inreplyto},
8519             $tracelevel)
8520             if defined $::RD_TRACE;
8521              
8522              
8523              
8524 1         2 $_matched = 1;
8525 1         3 last;
8526             }
8527              
8528             splice
8529 24 50       56 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
8530            
8531 24 50 33     76 unless ( $_matched || defined($score) )
8532             {
8533 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
8534            
8535              
8536 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
8537 0 0       0 Parse::RecDescent::_trace(q{<>},
8538             Parse::RecDescent::_tracefirst($_[1]),
8539             q{inreplyto},
8540             $tracelevel)
8541             if defined $::RD_TRACE;
8542 0         0 return undef;
8543             }
8544 24 50 33     112 if (!defined($return) && defined($score))
8545             {
8546 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8547             q{inreplyto},
8548             $tracelevel)
8549             if defined $::RD_TRACE;
8550 0         0 $return = $score_return;
8551             }
8552 24         43 splice @{$thisparser->{errors}}, $err_at;
  24         59  
8553 24 50       89 $return = $item[$#item] unless defined $return;
8554 24 50       82 if (defined $::RD_TRACE)
8555             {
8556 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8557             $return . q{])}, "",
8558             q{inreplyto},
8559             $tracelevel);
8560 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
8561             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8562             Parse::RecDescent::_tracefirst($text),
8563             , q{inreplyto},
8564             $tracelevel)
8565             }
8566 24         70 $_[1] = $text;
8567 24         142 return $return;
8568             }
8569              
8570             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
8571             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::key
8572             {
8573 132     132   227 my $thisparser = $_[0];
8574 1     1   8 use vars q{$tracelevel};
  1         2  
  1         368  
8575 132   50     316 local $tracelevel = ($tracelevel||0)+1;
8576 132         192 $ERRORS = 0;
8577 132         278 my $thisrule = $thisparser->{"rules"}{"key"};
8578              
8579 132 50       255 Parse::RecDescent::_trace(q{Trying rule: [key]},
8580             Parse::RecDescent::_tracefirst($_[1]),
8581             q{key},
8582             $tracelevel)
8583             if defined $::RD_TRACE;
8584              
8585 132         182 my $def_at = @{$thisparser->{deferred}};
  132         262  
8586 132         198 my $err_at = @{$thisparser->{errors}};
  132         235  
8587              
8588 132         339 my $score;
8589             my $score_return;
8590 132         0 my $_tok;
8591 132         205 my $return = undef;
8592 132         173 my $_matched=0;
8593 132         176 my $commit=0;
8594 132         237 my @item = ();
8595 132         295 my %item = ();
8596 132         179 my $repeating = $_[2];
8597 132         198 my $_noactions = $_[3];
8598 132 50       305 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  132         201  
  132         247  
8599 132         231 my $_itempos = $_[5];
8600 132 50       289 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8601 132         317 my $text;
8602             my $lastsep;
8603 132         0 my $current_match;
8604 132         295 my $expectation = new Parse::RecDescent::Expectation(q{STRING});
8605 132         869 $expectation->at($_[1]);
8606            
8607 132         530 my $thisline;
8608 132         427 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8609              
8610            
8611              
8612 132   33     1120 while (!$_matched && !$commit)
8613             {
8614            
8615 132 50       263 Parse::RecDescent::_trace(q{Trying production: [STRING]},
8616             Parse::RecDescent::_tracefirst($_[1]),
8617             q{key},
8618             $tracelevel)
8619             if defined $::RD_TRACE;
8620 132         246 my $thisprod = $thisrule->{"prods"}[0];
8621 132         217 $text = $_[1];
8622 132         191 my $_savetext;
8623 132         249 @item = (q{key});
8624 132         278 %item = (__RULE__ => q{key});
8625 132         213 my $repcount = 0;
8626              
8627              
8628 132 50       264 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
8629             Parse::RecDescent::_tracefirst($text),
8630             q{key},
8631             $tracelevel)
8632             if defined $::RD_TRACE;
8633 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         483  
  132         202  
8634 132         296 $expectation->is(q{})->at($text);
8635 132 50   132   1295 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  132         285  
8636             {
8637            
8638 0 0       0 Parse::RecDescent::_trace(q{<>},
8639             Parse::RecDescent::_tracefirst($text),
8640             q{key},
8641             $tracelevel)
8642             if defined $::RD_TRACE;
8643 0         0 $expectation->failed();
8644 0         0 last;
8645             }
8646 132 50       405 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
8647             . $_tok . q{]},
8648              
8649             Parse::RecDescent::_tracefirst($text),
8650             q{key},
8651             $tracelevel)
8652             if defined $::RD_TRACE;
8653 132         272 $item{q{STRING}} = $_tok;
8654 132         233 push @item, $_tok;
8655            
8656             }
8657              
8658 132 50       265 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
8659             Parse::RecDescent::_tracefirst($text),
8660             q{key},
8661             $tracelevel)
8662             if defined $::RD_TRACE;
8663              
8664              
8665              
8666 132         214 $_matched = 1;
8667 132         223 last;
8668             }
8669              
8670             splice
8671 132 50       272 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
8672            
8673 132 50 33     346 unless ( $_matched || defined($score) )
8674             {
8675 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
8676            
8677              
8678 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
8679 0 0       0 Parse::RecDescent::_trace(q{<>},
8680             Parse::RecDescent::_tracefirst($_[1]),
8681             q{key},
8682             $tracelevel)
8683             if defined $::RD_TRACE;
8684 0         0 return undef;
8685             }
8686 132 50 33     457 if (!defined($return) && defined($score))
8687             {
8688 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8689             q{key},
8690             $tracelevel)
8691             if defined $::RD_TRACE;
8692 0         0 $return = $score_return;
8693             }
8694 132         196 splice @{$thisparser->{errors}}, $err_at;
  132         252  
8695 132 50       323 $return = $item[$#item] unless defined $return;
8696 132 50       305 if (defined $::RD_TRACE)
8697             {
8698 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8699             $return . q{])}, "",
8700             q{key},
8701             $tracelevel);
8702 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
8703             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8704             Parse::RecDescent::_tracefirst($text),
8705             , q{key},
8706             $tracelevel)
8707             }
8708 132         259 $_[1] = $text;
8709 132         618 return $return;
8710             }
8711              
8712             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
8713             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::kvpair
8714             {
8715 255     255   4636 my $thisparser = $_[0];
8716 1     1   8 use vars q{$tracelevel};
  1         2  
  1         531  
8717 255   50     727 local $tracelevel = ($tracelevel||0)+1;
8718 255         404 $ERRORS = 0;
8719 255         538 my $thisrule = $thisparser->{"rules"}{"kvpair"};
8720              
8721 255 50       505 Parse::RecDescent::_trace(q{Trying rule: [kvpair]},
8722             Parse::RecDescent::_tracefirst($_[1]),
8723             q{kvpair},
8724             $tracelevel)
8725             if defined $::RD_TRACE;
8726              
8727 255         408 my $def_at = @{$thisparser->{deferred}};
  255         467  
8728 255         382 my $err_at = @{$thisparser->{errors}};
  255         398  
8729              
8730 255         656 my $score;
8731             my $score_return;
8732 255         0 my $_tok;
8733 255         421 my $return = undef;
8734 255         399 my $_matched=0;
8735 255         386 my $commit=0;
8736 255         771 my @item = ();
8737 255         417 my %item = ();
8738 255         414 my $repeating = $_[2];
8739 255         367 my $_noactions = $_[3];
8740 255 50       540 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  255         345  
  255         525  
8741 255         433 my $_itempos = $_[5];
8742 255 50       537 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8743 255         614 my $text;
8744             my $lastsep;
8745 255         0 my $current_match;
8746 255         607 my $expectation = new Parse::RecDescent::Expectation(q{')'});
8747 255         1833 $expectation->at($_[1]);
8748            
8749 255         1058 my $thisline;
8750 255         966 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8751              
8752            
8753              
8754 255   33     2074 while (!$_matched && !$commit)
8755             {
8756            
8757 255 50       513 Parse::RecDescent::_trace(q{Trying production: [')' key value]},
8758             Parse::RecDescent::_tracefirst($_[1]),
8759             q{kvpair},
8760             $tracelevel)
8761             if defined $::RD_TRACE;
8762 255         488 my $thisprod = $thisrule->{"prods"}[0];
8763 255         440 $text = $_[1];
8764 255         399 my $_savetext;
8765 255         578 @item = (q{kvpair});
8766 255         481 %item = (__RULE__ => q{kvpair});
8767 255         367 my $repcount = 0;
8768              
8769              
8770 255 50       495 Parse::RecDescent::_trace(q{Trying terminal: [')']},
8771             Parse::RecDescent::_tracefirst($text),
8772             q{kvpair},
8773             $tracelevel)
8774             if defined $::RD_TRACE;
8775 255         532 undef $lastsep;
8776 255         575 $expectation->is(q{})->at($text);
8777 255         1825 $_savetext = $text;
8778              
8779 255 100 33     1597 if ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and
  255 50 66     1715  
  255   66     559  
  255         1286  
8780             substr($text,0,length($_tok)) eq $_tok and
8781 123         283 do { substr($text,0,length($_tok)) = ""; 1; }
  123         368  
8782             )
8783             {
8784 123         223 $text = $_savetext;
8785            
8786 123         363 $expectation->failed();
8787 123 50       529 Parse::RecDescent::_trace(q{<>},
8788             Parse::RecDescent::_tracefirst($text))
8789             if defined $::RD_TRACE;
8790 123         269 last;
8791             }
8792 132 50       390 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
8793             . $_tok . q{])},
8794             Parse::RecDescent::_tracefirst($text))
8795             if defined $::RD_TRACE;
8796 132         353 push @item, $item{__STRING1__}=$_tok;
8797 132         255 $text = $_savetext;
8798              
8799 132 50       265 Parse::RecDescent::_trace(q{Trying subrule: [key]},
8800             Parse::RecDescent::_tracefirst($text),
8801             q{kvpair},
8802             $tracelevel)
8803             if defined $::RD_TRACE;
8804 1     1   7 if (1) { no strict qw{refs};
  1         3  
  1         157  
  132         185  
8805 132         403 $expectation->is(q{key})->at($text);
8806 132 50   132   1244 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::key($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  132         270  
8807             {
8808            
8809 0 0       0 Parse::RecDescent::_trace(q{<>},
8810             Parse::RecDescent::_tracefirst($text),
8811             q{kvpair},
8812             $tracelevel)
8813             if defined $::RD_TRACE;
8814 0         0 $expectation->failed();
8815 0         0 last;
8816             }
8817 132 50       406 Parse::RecDescent::_trace(q{>>Matched subrule: [key]<< (return value: [}
8818             . $_tok . q{]},
8819              
8820             Parse::RecDescent::_tracefirst($text),
8821             q{kvpair},
8822             $tracelevel)
8823             if defined $::RD_TRACE;
8824 132         270 $item{q{key}} = $_tok;
8825 132         250 push @item, $_tok;
8826            
8827             }
8828              
8829 132 50       267 Parse::RecDescent::_trace(q{Trying subrule: [value]},
8830             Parse::RecDescent::_tracefirst($text),
8831             q{kvpair},
8832             $tracelevel)
8833             if defined $::RD_TRACE;
8834 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         592  
  132         175  
8835 132         432 $expectation->is(q{value})->at($text);
8836 132 50   132   1407 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::value($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  132         287  
8837             {
8838            
8839 0 0       0 Parse::RecDescent::_trace(q{<>},
8840             Parse::RecDescent::_tracefirst($text),
8841             q{kvpair},
8842             $tracelevel)
8843             if defined $::RD_TRACE;
8844 0         0 $expectation->failed();
8845 0         0 last;
8846             }
8847 132 50       406 Parse::RecDescent::_trace(q{>>Matched subrule: [value]<< (return value: [}
8848             . $_tok . q{]},
8849              
8850             Parse::RecDescent::_tracefirst($text),
8851             q{kvpair},
8852             $tracelevel)
8853             if defined $::RD_TRACE;
8854 132         284 $item{q{value}} = $_tok;
8855 132         247 push @item, $_tok;
8856            
8857             }
8858              
8859 132 50       271 Parse::RecDescent::_trace(q{Trying action},
8860             Parse::RecDescent::_tracefirst($text),
8861             q{kvpair},
8862             $tracelevel)
8863             if defined $::RD_TRACE;
8864            
8865              
8866 132 50       276 $_tok = ($_noactions) ? 0 : do { $return = { $item{key} => $item{value} } };
  132         442  
8867 132 50       298 unless (defined $_tok)
8868             {
8869 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
8870             if defined $::RD_TRACE;
8871 0         0 last;
8872             }
8873 132 50       282 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
8874             . $_tok . q{])},
8875             Parse::RecDescent::_tracefirst($text))
8876             if defined $::RD_TRACE;
8877 132         215 push @item, $_tok;
8878 132         270 $item{__ACTION1__}=$_tok;
8879            
8880              
8881 132 50       237 Parse::RecDescent::_trace(q{>>Matched production: [')' key value]<<},
8882             Parse::RecDescent::_tracefirst($text),
8883             q{kvpair},
8884             $tracelevel)
8885             if defined $::RD_TRACE;
8886              
8887              
8888              
8889 132         211 $_matched = 1;
8890 132         253 last;
8891             }
8892              
8893             splice
8894 255 100       558 @{$thisparser->{deferred}}, $def_at unless $_matched;
  123         301  
8895            
8896 255 100 66     700 unless ( $_matched || defined($score) )
8897             {
8898 123         173 splice @{$thisparser->{deferred}}, $def_at;
  123         211  
8899            
8900              
8901 123         247 $_[1] = $text; # NOT SURE THIS IS NEEDED
8902 123 50       323 Parse::RecDescent::_trace(q{<>},
8903             Parse::RecDescent::_tracefirst($_[1]),
8904             q{kvpair},
8905             $tracelevel)
8906             if defined $::RD_TRACE;
8907 123         605 return undef;
8908             }
8909 132 50 33     330 if (!defined($return) && defined($score))
8910             {
8911 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8912             q{kvpair},
8913             $tracelevel)
8914             if defined $::RD_TRACE;
8915 0         0 $return = $score_return;
8916             }
8917 132         211 splice @{$thisparser->{errors}}, $err_at;
  132         258  
8918 132 50       319 $return = $item[$#item] unless defined $return;
8919 132 50       279 if (defined $::RD_TRACE)
8920             {
8921 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8922             $return . q{])}, "",
8923             q{kvpair},
8924             $tracelevel);
8925 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
8926             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8927             Parse::RecDescent::_tracefirst($text),
8928             , q{kvpair},
8929             $tracelevel)
8930             }
8931 132         233 $_[1] = $text;
8932 132         811 return $return;
8933             }
8934              
8935             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
8936             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::mailboxname
8937             {
8938 94     94   496 my $thisparser = $_[0];
8939 1     1   8 use vars q{$tracelevel};
  1         11  
  1         361  
8940 94   50     222 local $tracelevel = ($tracelevel||0)+1;
8941 94         148 $ERRORS = 0;
8942 94         216 my $thisrule = $thisparser->{"rules"}{"mailboxname"};
8943              
8944 94 50       216 Parse::RecDescent::_trace(q{Trying rule: [mailboxname]},
8945             Parse::RecDescent::_tracefirst($_[1]),
8946             q{mailboxname},
8947             $tracelevel)
8948             if defined $::RD_TRACE;
8949              
8950 94         134 my $def_at = @{$thisparser->{deferred}};
  94         177  
8951 94         143 my $err_at = @{$thisparser->{errors}};
  94         163  
8952              
8953 94         244 my $score;
8954             my $score_return;
8955 94         0 my $_tok;
8956 94         161 my $return = undef;
8957 94         141 my $_matched=0;
8958 94         138 my $commit=0;
8959 94         153 my @item = ();
8960 94         170 my %item = ();
8961 94         131 my $repeating = $_[2];
8962 94         141 my $_noactions = $_[3];
8963 94 50       184 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  94         143  
  94         202  
8964 94         152 my $_itempos = $_[5];
8965 94 50       215 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8966 94         251 my $text;
8967             my $lastsep;
8968 94         0 my $current_match;
8969 94         276 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING});
8970 94         626 $expectation->at($_[1]);
8971            
8972 94         403 my $thisline;
8973 94         346 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8974              
8975            
8976              
8977 94   33     841 while (!$_matched && !$commit)
8978             {
8979            
8980 94 50       199 Parse::RecDescent::_trace(q{Trying production: [NIL]},
8981             Parse::RecDescent::_tracefirst($_[1]),
8982             q{mailboxname},
8983             $tracelevel)
8984             if defined $::RD_TRACE;
8985 94         199 my $thisprod = $thisrule->{"prods"}[0];
8986 94         167 $text = $_[1];
8987 94         157 my $_savetext;
8988 94         202 @item = (q{mailboxname});
8989 94         197 %item = (__RULE__ => q{mailboxname});
8990 94         145 my $repcount = 0;
8991              
8992              
8993 94 50       181 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
8994             Parse::RecDescent::_tracefirst($text),
8995             q{mailboxname},
8996             $tracelevel)
8997             if defined $::RD_TRACE;
8998 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         301  
  94         151  
8999 94         241 $expectation->is(q{})->at($text);
9000 94 50   94   849 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  94         187  
9001             {
9002            
9003 94 50       220 Parse::RecDescent::_trace(q{<>},
9004             Parse::RecDescent::_tracefirst($text),
9005             q{mailboxname},
9006             $tracelevel)
9007             if defined $::RD_TRACE;
9008 94         261 $expectation->failed();
9009 94         314 last;
9010             }
9011 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
9012             . $_tok . q{]},
9013              
9014             Parse::RecDescent::_tracefirst($text),
9015             q{mailboxname},
9016             $tracelevel)
9017             if defined $::RD_TRACE;
9018 0         0 $item{q{NIL}} = $_tok;
9019 0         0 push @item, $_tok;
9020            
9021             }
9022              
9023 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
9024             Parse::RecDescent::_tracefirst($text),
9025             q{mailboxname},
9026             $tracelevel)
9027             if defined $::RD_TRACE;
9028              
9029              
9030              
9031 0         0 $_matched = 1;
9032 0         0 last;
9033             }
9034              
9035             splice
9036 94 50       316 @{$thisparser->{deferred}}, $def_at unless $_matched;
  94         193  
9037            
9038 94   33     379 while (!$_matched && !$commit)
9039             {
9040            
9041 94 50       202 Parse::RecDescent::_trace(q{Trying production: [STRING]},
9042             Parse::RecDescent::_tracefirst($_[1]),
9043             q{mailboxname},
9044             $tracelevel)
9045             if defined $::RD_TRACE;
9046 94         178 my $thisprod = $thisrule->{"prods"}[1];
9047 94         211 $text = $_[1];
9048 94         177 my $_savetext;
9049 94         208 @item = (q{mailboxname});
9050 94         254 %item = (__RULE__ => q{mailboxname});
9051 94         139 my $repcount = 0;
9052              
9053              
9054 94 50       201 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
9055             Parse::RecDescent::_tracefirst($text),
9056             q{mailboxname},
9057             $tracelevel)
9058             if defined $::RD_TRACE;
9059 1     1   18 if (1) { no strict qw{refs};
  1         10  
  1         452  
  94         137  
9060 94         226 $expectation->is(q{})->at($text);
9061 94 50   94   917 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  94         224  
9062             {
9063            
9064 0 0       0 Parse::RecDescent::_trace(q{<>},
9065             Parse::RecDescent::_tracefirst($text),
9066             q{mailboxname},
9067             $tracelevel)
9068             if defined $::RD_TRACE;
9069 0         0 $expectation->failed();
9070 0         0 last;
9071             }
9072 94 50       338 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
9073             . $_tok . q{]},
9074              
9075             Parse::RecDescent::_tracefirst($text),
9076             q{mailboxname},
9077             $tracelevel)
9078             if defined $::RD_TRACE;
9079 94         202 $item{q{STRING}} = $_tok;
9080 94         169 push @item, $_tok;
9081            
9082             }
9083              
9084 94 50       213 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
9085             Parse::RecDescent::_tracefirst($text),
9086             q{mailboxname},
9087             $tracelevel)
9088             if defined $::RD_TRACE;
9089              
9090              
9091              
9092 94         173 $_matched = 1;
9093 94         177 last;
9094             }
9095              
9096             splice
9097 94 50       202 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
9098            
9099 94 50 33     226 unless ( $_matched || defined($score) )
9100             {
9101 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
9102            
9103              
9104 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
9105 0 0       0 Parse::RecDescent::_trace(q{<>},
9106             Parse::RecDescent::_tracefirst($_[1]),
9107             q{mailboxname},
9108             $tracelevel)
9109             if defined $::RD_TRACE;
9110 0         0 return undef;
9111             }
9112 94 50 33     346 if (!defined($return) && defined($score))
9113             {
9114 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9115             q{mailboxname},
9116             $tracelevel)
9117             if defined $::RD_TRACE;
9118 0         0 $return = $score_return;
9119             }
9120 94         143 splice @{$thisparser->{errors}}, $err_at;
  94         181  
9121 94 50       389 $return = $item[$#item] unless defined $return;
9122 94 50       203 if (defined $::RD_TRACE)
9123             {
9124 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9125             $return . q{])}, "",
9126             q{mailboxname},
9127             $tracelevel);
9128 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9129             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9130             Parse::RecDescent::_tracefirst($text),
9131             , q{mailboxname},
9132             $tracelevel)
9133             }
9134 94         220 $_[1] = $text;
9135 94         509 return $return;
9136             }
9137              
9138             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
9139             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::messageid
9140             {
9141 24     24   50 my $thisparser = $_[0];
9142 1     1   9 use vars q{$tracelevel};
  1         2  
  1         341  
9143 24   50     83 local $tracelevel = ($tracelevel||0)+1;
9144 24         43 $ERRORS = 0;
9145 24         60 my $thisrule = $thisparser->{"rules"}{"messageid"};
9146              
9147 24 50       59 Parse::RecDescent::_trace(q{Trying rule: [messageid]},
9148             Parse::RecDescent::_tracefirst($_[1]),
9149             q{messageid},
9150             $tracelevel)
9151             if defined $::RD_TRACE;
9152              
9153 24         35 my $def_at = @{$thisparser->{deferred}};
  24         63  
9154 24         39 my $err_at = @{$thisparser->{errors}};
  24         49  
9155              
9156 24         62 my $score;
9157             my $score_return;
9158 24         0 my $_tok;
9159 24         42 my $return = undef;
9160 24         39 my $_matched=0;
9161 24         46 my $commit=0;
9162 24         51 my @item = ();
9163 24         48 my %item = ();
9164 24         43 my $repeating = $_[2];
9165 24         42 my $_noactions = $_[3];
9166 24 50       103 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  24         39  
  24         44  
9167 24         45 my $_itempos = $_[5];
9168 24 50       76 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
9169 24         62 my $text;
9170             my $lastsep;
9171 24         0 my $current_match;
9172 24         68 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING});
9173 24         178 $expectation->at($_[1]);
9174            
9175 24         106 my $thisline;
9176 24         101 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
9177              
9178            
9179              
9180 24   33     229 while (!$_matched && !$commit)
9181             {
9182            
9183 24 50       94 Parse::RecDescent::_trace(q{Trying production: [NIL]},
9184             Parse::RecDescent::_tracefirst($_[1]),
9185             q{messageid},
9186             $tracelevel)
9187             if defined $::RD_TRACE;
9188 24         65 my $thisprod = $thisrule->{"prods"}[0];
9189 24         57 $text = $_[1];
9190 24         45 my $_savetext;
9191 24         56 @item = (q{messageid});
9192 24         62 %item = (__RULE__ => q{messageid});
9193 24         41 my $repcount = 0;
9194              
9195              
9196 24 50       57 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
9197             Parse::RecDescent::_tracefirst($text),
9198             q{messageid},
9199             $tracelevel)
9200             if defined $::RD_TRACE;
9201 1     1   8 if (1) { no strict qw{refs};
  1         9  
  1         295  
  24         50  
9202 24         72 $expectation->is(q{})->at($text);
9203 24 50   24   260 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         49  
9204             {
9205            
9206 24 50       71 Parse::RecDescent::_trace(q{<>},
9207             Parse::RecDescent::_tracefirst($text),
9208             q{messageid},
9209             $tracelevel)
9210             if defined $::RD_TRACE;
9211 24         80 $expectation->failed();
9212 24         91 last;
9213             }
9214 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
9215             . $_tok . q{]},
9216              
9217             Parse::RecDescent::_tracefirst($text),
9218             q{messageid},
9219             $tracelevel)
9220             if defined $::RD_TRACE;
9221 0         0 $item{q{NIL}} = $_tok;
9222 0         0 push @item, $_tok;
9223            
9224             }
9225              
9226 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
9227             Parse::RecDescent::_tracefirst($text),
9228             q{messageid},
9229             $tracelevel)
9230             if defined $::RD_TRACE;
9231              
9232              
9233              
9234 0         0 $_matched = 1;
9235 0         0 last;
9236             }
9237              
9238             splice
9239 24 50       97 @{$thisparser->{deferred}}, $def_at unless $_matched;
  24         67  
9240            
9241 24   33     108 while (!$_matched && !$commit)
9242             {
9243            
9244 24 50       61 Parse::RecDescent::_trace(q{Trying production: [STRING]},
9245             Parse::RecDescent::_tracefirst($_[1]),
9246             q{messageid},
9247             $tracelevel)
9248             if defined $::RD_TRACE;
9249 24         57 my $thisprod = $thisrule->{"prods"}[1];
9250 24         51 $text = $_[1];
9251 24         38 my $_savetext;
9252 24         56 @item = (q{messageid});
9253 24         66 %item = (__RULE__ => q{messageid});
9254 24         39 my $repcount = 0;
9255              
9256              
9257 24 50       59 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
9258             Parse::RecDescent::_tracefirst($text),
9259             q{messageid},
9260             $tracelevel)
9261             if defined $::RD_TRACE;
9262 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         471  
  24         38  
9263 24         70 $expectation->is(q{})->at($text);
9264 24 50   24   275 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         51  
9265             {
9266            
9267 0 0       0 Parse::RecDescent::_trace(q{<>},
9268             Parse::RecDescent::_tracefirst($text),
9269             q{messageid},
9270             $tracelevel)
9271             if defined $::RD_TRACE;
9272 0         0 $expectation->failed();
9273 0         0 last;
9274             }
9275 24 50       127 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
9276             . $_tok . q{]},
9277              
9278             Parse::RecDescent::_tracefirst($text),
9279             q{messageid},
9280             $tracelevel)
9281             if defined $::RD_TRACE;
9282 24         75 $item{q{STRING}} = $_tok;
9283 24         48 push @item, $_tok;
9284            
9285             }
9286              
9287 24 50       64 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
9288             Parse::RecDescent::_tracefirst($text),
9289             q{messageid},
9290             $tracelevel)
9291             if defined $::RD_TRACE;
9292              
9293              
9294              
9295 24         49 $_matched = 1;
9296 24         50 last;
9297             }
9298              
9299             splice
9300 24 50       57 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
9301            
9302 24 50 33     69 unless ( $_matched || defined($score) )
9303             {
9304 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
9305            
9306              
9307 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
9308 0 0       0 Parse::RecDescent::_trace(q{<>},
9309             Parse::RecDescent::_tracefirst($_[1]),
9310             q{messageid},
9311             $tracelevel)
9312             if defined $::RD_TRACE;
9313 0         0 return undef;
9314             }
9315 24 50 33     224 if (!defined($return) && defined($score))
9316             {
9317 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9318             q{messageid},
9319             $tracelevel)
9320             if defined $::RD_TRACE;
9321 0         0 $return = $score_return;
9322             }
9323 24         51 splice @{$thisparser->{errors}}, $err_at;
  24         68  
9324 24 50       74 $return = $item[$#item] unless defined $return;
9325 24 50       62 if (defined $::RD_TRACE)
9326             {
9327 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9328             $return . q{])}, "",
9329             q{messageid},
9330             $tracelevel);
9331 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9332             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9333             Parse::RecDescent::_tracefirst($text),
9334             , q{messageid},
9335             $tracelevel)
9336             }
9337 24         50 $_[1] = $text;
9338 24         139 return $return;
9339             }
9340              
9341             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
9342             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::multipart
9343             {
9344 125     125   220 my $thisparser = $_[0];
9345 1     1   9 use vars q{$tracelevel};
  1         2  
  1         622  
9346 125   50     301 local $tracelevel = ($tracelevel||0)+1;
9347 125         194 $ERRORS = 0;
9348 125         246 my $thisrule = $thisparser->{"rules"}{"multipart"};
9349              
9350 125 50       256 Parse::RecDescent::_trace(q{Trying rule: [multipart]},
9351             Parse::RecDescent::_tracefirst($_[1]),
9352             q{multipart},
9353             $tracelevel)
9354             if defined $::RD_TRACE;
9355              
9356 125         228 my $def_at = @{$thisparser->{deferred}};
  125         283  
9357 125         193 my $err_at = @{$thisparser->{errors}};
  125         228  
9358              
9359 125         297 my $score;
9360             my $score_return;
9361 125         0 my $_tok;
9362 125         181 my $return = undef;
9363 125         207 my $_matched=0;
9364 125         194 my $commit=0;
9365 125         216 my @item = ();
9366 125         185 my %item = ();
9367 125         189 my $repeating = $_[2];
9368 125         182 my $_noactions = $_[3];
9369 125 50       246 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  125         210  
  125         237  
9370 125         238 my $_itempos = $_[5];
9371 125 50       281 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
9372 125         301 my $text;
9373             my $lastsep;
9374 125         0 my $current_match;
9375 125         307 my $expectation = new Parse::RecDescent::Expectation(q{subpart});
9376 125         788 $expectation->at($_[1]);
9377            
9378 125         515 my $thisline;
9379 125         392 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
9380              
9381            
9382              
9383 125   33     945 while (!$_matched && !$commit)
9384             {
9385            
9386 125 50       289 Parse::RecDescent::_trace(q{Trying production: [subpart bodysubtype bodyparms bodydisp bodylang bodyloc bodyextra bodyextensions ]},
9387             Parse::RecDescent::_tracefirst($_[1]),
9388             q{multipart},
9389             $tracelevel)
9390             if defined $::RD_TRACE;
9391 125         247 my $thisprod = $thisrule->{"prods"}[0];
9392 125         243 $text = $_[1];
9393 125         196 my $_savetext;
9394 125         301 @item = (q{multipart});
9395 125         259 %item = (__RULE__ => q{multipart});
9396 125         200 my $repcount = 0;
9397              
9398              
9399 125 50       274 Parse::RecDescent::_trace(q{Trying repeated subrule: [subpart]},
9400             Parse::RecDescent::_tracefirst($text),
9401             q{multipart},
9402             $tracelevel)
9403             if defined $::RD_TRACE;
9404 125         294 $expectation->is(q{})->at($text);
9405            
9406 125 100   200   1606 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::subpart, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
  200         423  
9407             {
9408 94 50       1220 Parse::RecDescent::_trace(q{<>},
9409             Parse::RecDescent::_tracefirst($text),
9410             q{multipart},
9411             $tracelevel)
9412             if defined $::RD_TRACE;
9413 94         165 last;
9414             }
9415 31 50       543 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [subpart]<< (}
9416             . @$_tok . q{ times)},
9417              
9418             Parse::RecDescent::_tracefirst($text),
9419             q{multipart},
9420             $tracelevel)
9421             if defined $::RD_TRACE;
9422 31         92 $item{q{subpart(s)}} = $_tok;
9423 31         73 push @item, $_tok;
9424            
9425              
9426              
9427            
9428              
9429 31 50       85 Parse::RecDescent::_trace(q{Trying directive: []},
9430             Parse::RecDescent::_tracefirst($text),
9431             q{multipart},
9432             $tracelevel)
9433             if defined $::RD_TRACE;
9434 31         64 $_tok = do { $commit = 1 };
  31         61  
9435 31 50       85 if (defined($_tok))
9436             {
9437 31 50       96 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
9438             . $_tok . q{])},
9439             Parse::RecDescent::_tracefirst($text))
9440             if defined $::RD_TRACE;
9441             }
9442             else
9443             {
9444 0 0       0 Parse::RecDescent::_trace(q{<>},
9445             Parse::RecDescent::_tracefirst($text))
9446             if defined $::RD_TRACE;
9447             }
9448            
9449 31 50       75 last unless defined $_tok;
9450 31         75 push @item, $item{__DIRECTIVE1__}=$_tok;
9451            
9452              
9453 31 50       83 Parse::RecDescent::_trace(q{Trying subrule: [bodysubtype]},
9454             Parse::RecDescent::_tracefirst($text),
9455             q{multipart},
9456             $tracelevel)
9457             if defined $::RD_TRACE;
9458 1     1   9 if (1) { no strict qw{refs};
  1         3  
  1         1557  
  31         51  
9459 31         89 $expectation->is(q{bodysubtype})->at($text);
9460 31 50   31   352 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodysubtype($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  31         92  
9461             {
9462            
9463 0 0       0 Parse::RecDescent::_trace(q{<>},
9464             Parse::RecDescent::_tracefirst($text),
9465             q{multipart},
9466             $tracelevel)
9467             if defined $::RD_TRACE;
9468 0         0 $expectation->failed();
9469 0         0 last;
9470             }
9471 31 50       140 Parse::RecDescent::_trace(q{>>Matched subrule: [bodysubtype]<< (return value: [}
9472             . $_tok . q{]},
9473              
9474             Parse::RecDescent::_tracefirst($text),
9475             q{multipart},
9476             $tracelevel)
9477             if defined $::RD_TRACE;
9478 31         87 $item{q{bodysubtype}} = $_tok;
9479 31         68 push @item, $_tok;
9480            
9481             }
9482              
9483 31 50       71 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyparms]},
9484             Parse::RecDescent::_tracefirst($text),
9485             q{multipart},
9486             $tracelevel)
9487             if defined $::RD_TRACE;
9488 31         100 $expectation->is(q{bodyparms})->at($text);
9489            
9490 31 50   31   358 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyparms, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  31         68  
9491             {
9492 0 0       0 Parse::RecDescent::_trace(q{<>},
9493             Parse::RecDescent::_tracefirst($text),
9494             q{multipart},
9495             $tracelevel)
9496             if defined $::RD_TRACE;
9497 0         0 last;
9498             }
9499 31 50       577 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyparms]<< (}
9500             . @$_tok . q{ times)},
9501              
9502             Parse::RecDescent::_tracefirst($text),
9503             q{multipart},
9504             $tracelevel)
9505             if defined $::RD_TRACE;
9506 31         73 $item{q{bodyparms(?)}} = $_tok;
9507 31         65 push @item, $_tok;
9508            
9509              
9510              
9511 31 50       69 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodydisp]},
9512             Parse::RecDescent::_tracefirst($text),
9513             q{multipart},
9514             $tracelevel)
9515             if defined $::RD_TRACE;
9516 31         94 $expectation->is(q{bodydisp})->at($text);
9517            
9518 31 50   31   346 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydisp, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  31         69  
9519             {
9520 0 0       0 Parse::RecDescent::_trace(q{<>},
9521             Parse::RecDescent::_tracefirst($text),
9522             q{multipart},
9523             $tracelevel)
9524             if defined $::RD_TRACE;
9525 0         0 last;
9526             }
9527 31 50       548 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodydisp]<< (}
9528             . @$_tok . q{ times)},
9529              
9530             Parse::RecDescent::_tracefirst($text),
9531             q{multipart},
9532             $tracelevel)
9533             if defined $::RD_TRACE;
9534 31         67 $item{q{bodydisp(?)}} = $_tok;
9535 31         62 push @item, $_tok;
9536            
9537              
9538              
9539 31 50       77 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodylang]},
9540             Parse::RecDescent::_tracefirst($text),
9541             q{multipart},
9542             $tracelevel)
9543             if defined $::RD_TRACE;
9544 31         117 $expectation->is(q{bodylang})->at($text);
9545            
9546 31 50   31   338 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodylang, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  31         63  
9547             {
9548 0 0       0 Parse::RecDescent::_trace(q{<>},
9549             Parse::RecDescent::_tracefirst($text),
9550             q{multipart},
9551             $tracelevel)
9552             if defined $::RD_TRACE;
9553 0         0 last;
9554             }
9555 31 50       525 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodylang]<< (}
9556             . @$_tok . q{ times)},
9557              
9558             Parse::RecDescent::_tracefirst($text),
9559             q{multipart},
9560             $tracelevel)
9561             if defined $::RD_TRACE;
9562 31         80 $item{q{bodylang(?)}} = $_tok;
9563 31         67 push @item, $_tok;
9564            
9565              
9566              
9567 31 50       69 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyloc]},
9568             Parse::RecDescent::_tracefirst($text),
9569             q{multipart},
9570             $tracelevel)
9571             if defined $::RD_TRACE;
9572 31         86 $expectation->is(q{bodyloc})->at($text);
9573            
9574 31 50   31   348 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyloc, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  31         70  
9575             {
9576 0 0       0 Parse::RecDescent::_trace(q{<>},
9577             Parse::RecDescent::_tracefirst($text),
9578             q{multipart},
9579             $tracelevel)
9580             if defined $::RD_TRACE;
9581 0         0 last;
9582             }
9583 31 50       526 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyloc]<< (}
9584             . @$_tok . q{ times)},
9585              
9586             Parse::RecDescent::_tracefirst($text),
9587             q{multipart},
9588             $tracelevel)
9589             if defined $::RD_TRACE;
9590 31         91 $item{q{bodyloc(?)}} = $_tok;
9591 31         102 push @item, $_tok;
9592            
9593              
9594              
9595 31 50       87 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyextra]},
9596             Parse::RecDescent::_tracefirst($text),
9597             q{multipart},
9598             $tracelevel)
9599             if defined $::RD_TRACE;
9600 31         95 $expectation->is(q{bodyextra})->at($text);
9601            
9602 31 50   31   402 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextra, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  31         59  
9603             {
9604 0 0       0 Parse::RecDescent::_trace(q{<>},
9605             Parse::RecDescent::_tracefirst($text),
9606             q{multipart},
9607             $tracelevel)
9608             if defined $::RD_TRACE;
9609 0         0 last;
9610             }
9611 31 50       459 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyextra]<< (}
9612             . @$_tok . q{ times)},
9613              
9614             Parse::RecDescent::_tracefirst($text),
9615             q{multipart},
9616             $tracelevel)
9617             if defined $::RD_TRACE;
9618 31         79 $item{q{bodyextra(?)}} = $_tok;
9619 31         69 push @item, $_tok;
9620            
9621              
9622              
9623 31 50       82 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyextensions]},
9624             Parse::RecDescent::_tracefirst($text),
9625             q{multipart},
9626             $tracelevel)
9627             if defined $::RD_TRACE;
9628 31         84 $expectation->is(q{bodyextensions})->at($text);
9629            
9630 31 50   32   447 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextensions, 0, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
  32         72  
9631             {
9632 0 0       0 Parse::RecDescent::_trace(q{<>},
9633             Parse::RecDescent::_tracefirst($text),
9634             q{multipart},
9635             $tracelevel)
9636             if defined $::RD_TRACE;
9637 0         0 last;
9638             }
9639 31 50       443 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyextensions]<< (}
9640             . @$_tok . q{ times)},
9641              
9642             Parse::RecDescent::_tracefirst($text),
9643             q{multipart},
9644             $tracelevel)
9645             if defined $::RD_TRACE;
9646 31         74 $item{q{bodyextensions(s?)}} = $_tok;
9647 31         70 push @item, $_tok;
9648            
9649              
9650              
9651            
9652              
9653 31 50       84 Parse::RecDescent::_trace(q{Trying directive: []},
9654             Parse::RecDescent::_tracefirst($text),
9655             q{multipart},
9656             $tracelevel)
9657             if defined $::RD_TRACE;
9658 31     31   48 $_tok = do { push @{$thisparser->{deferred}}, sub { $subpartCount = 0 }; };
  31         48  
  31         154  
  31         118  
9659 31 50       94 if (defined($_tok))
9660             {
9661 31 50       87 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
9662             . $_tok . q{])},
9663             Parse::RecDescent::_tracefirst($text))
9664             if defined $::RD_TRACE;
9665             }
9666             else
9667             {
9668 0 0       0 Parse::RecDescent::_trace(q{<>},
9669             Parse::RecDescent::_tracefirst($text))
9670             if defined $::RD_TRACE;
9671             }
9672            
9673 31 50       70 last unless defined $_tok;
9674 31         127 push @item, $item{__DIRECTIVE2__}=$_tok;
9675            
9676              
9677 31 50       77 Parse::RecDescent::_trace(q{Trying action},
9678             Parse::RecDescent::_tracefirst($text),
9679             q{multipart},
9680             $tracelevel)
9681             if defined $::RD_TRACE;
9682            
9683              
9684 31 50       61 $_tok = ($_noactions) ? 0 : do { $return =
9685             { bodysubtype => $item{bodysubtype}
9686             , bodytype => 'MULTIPART'
9687 31         119 , bodystructure => $item{'subpart(s)'}
9688             };
9689 31         113 take_optional_items($return, \%item
9690             , qw/bodyparms bodydisp bodylang bodyloc bodyextra/);
9691 31         81 1;
9692             };
9693 31 50       82 unless (defined $_tok)
9694             {
9695 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
9696             if defined $::RD_TRACE;
9697 0         0 last;
9698             }
9699 31 50       87 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
9700             . $_tok . q{])},
9701             Parse::RecDescent::_tracefirst($text))
9702             if defined $::RD_TRACE;
9703 31         60 push @item, $_tok;
9704 31         54 $item{__ACTION1__}=$_tok;
9705            
9706              
9707 31 50       61 Parse::RecDescent::_trace(q{>>Matched production: [subpart bodysubtype bodyparms bodydisp bodylang bodyloc bodyextra bodyextensions ]<<},
9708             Parse::RecDescent::_tracefirst($text),
9709             q{multipart},
9710             $tracelevel)
9711             if defined $::RD_TRACE;
9712              
9713              
9714              
9715 31         62 $_matched = 1;
9716 31         52 last;
9717             }
9718              
9719             splice
9720 125 100       439 @{$thisparser->{deferred}}, $def_at unless $_matched;
  94         200  
9721            
9722 125 100 66     414 unless ( $_matched || defined($score) )
9723             {
9724 94         137 splice @{$thisparser->{deferred}}, $def_at;
  94         162  
9725            
9726              
9727 94         167 $_[1] = $text; # NOT SURE THIS IS NEEDED
9728 94 50       208 Parse::RecDescent::_trace(q{<>},
9729             Parse::RecDescent::_tracefirst($_[1]),
9730             q{multipart},
9731             $tracelevel)
9732             if defined $::RD_TRACE;
9733 94         479 return undef;
9734             }
9735 31 50 33     109 if (!defined($return) && defined($score))
9736             {
9737 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9738             q{multipart},
9739             $tracelevel)
9740             if defined $::RD_TRACE;
9741 0         0 $return = $score_return;
9742             }
9743 31         51 splice @{$thisparser->{errors}}, $err_at;
  31         81  
9744 31 50       83 $return = $item[$#item] unless defined $return;
9745 31 50       77 if (defined $::RD_TRACE)
9746             {
9747 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9748             $return . q{])}, "",
9749             q{multipart},
9750             $tracelevel);
9751 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9752             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9753             Parse::RecDescent::_tracefirst($text),
9754             , q{multipart},
9755             $tracelevel)
9756             }
9757 31         74 $_[1] = $text;
9758 31         321 return $return;
9759             }
9760              
9761             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
9762             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::nestedmessage
9763             {
9764 53     53   115 my $thisparser = $_[0];
9765 1     1   9 use vars q{$tracelevel};
  1         3  
  1         351  
9766 53   50     144 local $tracelevel = ($tracelevel||0)+1;
9767 53         87 $ERRORS = 0;
9768 53         117 my $thisrule = $thisparser->{"rules"}{"nestedmessage"};
9769              
9770 53 50       107 Parse::RecDescent::_trace(q{Trying rule: [nestedmessage]},
9771             Parse::RecDescent::_tracefirst($_[1]),
9772             q{nestedmessage},
9773             $tracelevel)
9774             if defined $::RD_TRACE;
9775              
9776 53         73 my $def_at = @{$thisparser->{deferred}};
  53         100  
9777 53         98 my $err_at = @{$thisparser->{errors}};
  53         95  
9778              
9779 53         148 my $score;
9780             my $score_return;
9781 53         0 my $_tok;
9782 53         85 my $return = undef;
9783 53         80 my $_matched=0;
9784 53         77 my $commit=0;
9785 53         89 my @item = ();
9786 53         91 my %item = ();
9787 53         74 my $repeating = $_[2];
9788 53         92 my $_noactions = $_[3];
9789 53 50       110 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  53         88  
  53         141  
9790 53         96 my $_itempos = $_[5];
9791 53 50       121 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
9792 53         146 my $text;
9793             my $lastsep;
9794 53         0 my $current_match;
9795 53         136 my $expectation = new Parse::RecDescent::Expectation(q{rfc822message});
9796 53         453 $expectation->at($_[1]);
9797            
9798 53         215 my $thisline;
9799 53         176 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
9800              
9801            
9802              
9803 53   33     443 while (!$_matched && !$commit)
9804             {
9805            
9806 53 50       118 Parse::RecDescent::_trace(q{Trying production: [rfc822message bodyparms bodyid bodydesc bodyenc bodysize envelopestruct bodystructure textlines bodyMD5 bodydisp bodylang bodyextra]},
9807             Parse::RecDescent::_tracefirst($_[1]),
9808             q{nestedmessage},
9809             $tracelevel)
9810             if defined $::RD_TRACE;
9811 53         134 my $thisprod = $thisrule->{"prods"}[0];
9812 53         122 $text = $_[1];
9813 53         78 my $_savetext;
9814 53         113 @item = (q{nestedmessage});
9815 53         132 %item = (__RULE__ => q{nestedmessage});
9816 53         93 my $repcount = 0;
9817              
9818              
9819 53 50       115 Parse::RecDescent::_trace(q{Trying subrule: [rfc822message]},
9820             Parse::RecDescent::_tracefirst($text),
9821             q{nestedmessage},
9822             $tracelevel)
9823             if defined $::RD_TRACE;
9824 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         259  
  53         75  
9825 53         128 $expectation->is(q{})->at($text);
9826 53 100   53   540 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::rfc822message($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  53         106  
9827             {
9828            
9829 32 50       87 Parse::RecDescent::_trace(q{<>},
9830             Parse::RecDescent::_tracefirst($text),
9831             q{nestedmessage},
9832             $tracelevel)
9833             if defined $::RD_TRACE;
9834 32         104 $expectation->failed();
9835 32         113 last;
9836             }
9837 21 50       77 Parse::RecDescent::_trace(q{>>Matched subrule: [rfc822message]<< (return value: [}
9838             . $_tok . q{]},
9839              
9840             Parse::RecDescent::_tracefirst($text),
9841             q{nestedmessage},
9842             $tracelevel)
9843             if defined $::RD_TRACE;
9844 21         50 $item{q{rfc822message}} = $_tok;
9845 21         40 push @item, $_tok;
9846            
9847             }
9848              
9849            
9850              
9851 21 50       62 Parse::RecDescent::_trace(q{Trying directive: []},
9852             Parse::RecDescent::_tracefirst($text),
9853             q{nestedmessage},
9854             $tracelevel)
9855             if defined $::RD_TRACE;
9856 21         35 $_tok = do { $commit = 1 };
  21         49  
9857 21 50       65 if (defined($_tok))
9858             {
9859 21 50       59 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
9860             . $_tok . q{])},
9861             Parse::RecDescent::_tracefirst($text))
9862             if defined $::RD_TRACE;
9863             }
9864             else
9865             {
9866 0 0       0 Parse::RecDescent::_trace(q{<>},
9867             Parse::RecDescent::_tracefirst($text))
9868             if defined $::RD_TRACE;
9869             }
9870            
9871 21 50       45 last unless defined $_tok;
9872 21         56 push @item, $item{__DIRECTIVE1__}=$_tok;
9873            
9874              
9875 21 50       47 Parse::RecDescent::_trace(q{Trying subrule: [bodyparms]},
9876             Parse::RecDescent::_tracefirst($text),
9877             q{nestedmessage},
9878             $tracelevel)
9879             if defined $::RD_TRACE;
9880 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         173  
  21         36  
9881 21         86 $expectation->is(q{bodyparms})->at($text);
9882 21 50   21   268 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyparms($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  21         48  
9883             {
9884            
9885 0 0       0 Parse::RecDescent::_trace(q{<>},
9886             Parse::RecDescent::_tracefirst($text),
9887             q{nestedmessage},
9888             $tracelevel)
9889             if defined $::RD_TRACE;
9890 0         0 $expectation->failed();
9891 0         0 last;
9892             }
9893 21 50       88 Parse::RecDescent::_trace(q{>>Matched subrule: [bodyparms]<< (return value: [}
9894             . $_tok . q{]},
9895              
9896             Parse::RecDescent::_tracefirst($text),
9897             q{nestedmessage},
9898             $tracelevel)
9899             if defined $::RD_TRACE;
9900 21         53 $item{q{bodyparms}} = $_tok;
9901 21         43 push @item, $_tok;
9902            
9903             }
9904              
9905 21 50       48 Parse::RecDescent::_trace(q{Trying subrule: [bodyid]},
9906             Parse::RecDescent::_tracefirst($text),
9907             q{nestedmessage},
9908             $tracelevel)
9909             if defined $::RD_TRACE;
9910 1     1   7 if (1) { no strict qw{refs};
  1         3  
  1         208  
  21         31  
9911 21         74 $expectation->is(q{bodyid})->at($text);
9912 21 50   21   232 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyid($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  21         63  
9913             {
9914            
9915 0 0       0 Parse::RecDescent::_trace(q{<>},
9916             Parse::RecDescent::_tracefirst($text),
9917             q{nestedmessage},
9918             $tracelevel)
9919             if defined $::RD_TRACE;
9920 0         0 $expectation->failed();
9921 0         0 last;
9922             }
9923 21 50       81 Parse::RecDescent::_trace(q{>>Matched subrule: [bodyid]<< (return value: [}
9924             . $_tok . q{]},
9925              
9926             Parse::RecDescent::_tracefirst($text),
9927             q{nestedmessage},
9928             $tracelevel)
9929             if defined $::RD_TRACE;
9930 21         49 $item{q{bodyid}} = $_tok;
9931 21         45 push @item, $_tok;
9932            
9933             }
9934              
9935 21 50       55 Parse::RecDescent::_trace(q{Trying subrule: [bodydesc]},
9936             Parse::RecDescent::_tracefirst($text),
9937             q{nestedmessage},
9938             $tracelevel)
9939             if defined $::RD_TRACE;
9940 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         163  
  21         39  
9941 21         66 $expectation->is(q{bodydesc})->at($text);
9942 21 50   21   233 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydesc($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  21         47  
9943             {
9944            
9945 0 0       0 Parse::RecDescent::_trace(q{<>},
9946             Parse::RecDescent::_tracefirst($text),
9947             q{nestedmessage},
9948             $tracelevel)
9949             if defined $::RD_TRACE;
9950 0         0 $expectation->failed();
9951 0         0 last;
9952             }
9953 21 50       78 Parse::RecDescent::_trace(q{>>Matched subrule: [bodydesc]<< (return value: [}
9954             . $_tok . q{]},
9955              
9956             Parse::RecDescent::_tracefirst($text),
9957             q{nestedmessage},
9958             $tracelevel)
9959             if defined $::RD_TRACE;
9960 21         51 $item{q{bodydesc}} = $_tok;
9961 21         42 push @item, $_tok;
9962            
9963             }
9964              
9965 21 50       55 Parse::RecDescent::_trace(q{Trying subrule: [bodyenc]},
9966             Parse::RecDescent::_tracefirst($text),
9967             q{nestedmessage},
9968             $tracelevel)
9969             if defined $::RD_TRACE;
9970 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         184  
  21         32  
9971 21         73 $expectation->is(q{bodyenc})->at($text);
9972 21 50   21   234 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyenc($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  21         47  
9973             {
9974            
9975 0 0       0 Parse::RecDescent::_trace(q{<>},
9976             Parse::RecDescent::_tracefirst($text),
9977             q{nestedmessage},
9978             $tracelevel)
9979             if defined $::RD_TRACE;
9980 0         0 $expectation->failed();
9981 0         0 last;
9982             }
9983 21 50       85 Parse::RecDescent::_trace(q{>>Matched subrule: [bodyenc]<< (return value: [}
9984             . $_tok . q{]},
9985              
9986             Parse::RecDescent::_tracefirst($text),
9987             q{nestedmessage},
9988             $tracelevel)
9989             if defined $::RD_TRACE;
9990 21         57 $item{q{bodyenc}} = $_tok;
9991 21         55 push @item, $_tok;
9992            
9993             }
9994              
9995 21 50       59 Parse::RecDescent::_trace(q{Trying subrule: [bodysize]},
9996             Parse::RecDescent::_tracefirst($text),
9997             q{nestedmessage},
9998             $tracelevel)
9999             if defined $::RD_TRACE;
10000 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         1651  
  21         31  
10001 21         78 $expectation->is(q{bodysize})->at($text);
10002 21 50   21   238 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodysize($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  21         65  
10003             {
10004            
10005 0 0       0 Parse::RecDescent::_trace(q{<>},
10006             Parse::RecDescent::_tracefirst($text),
10007             q{nestedmessage},
10008             $tracelevel)
10009             if defined $::RD_TRACE;
10010 0         0 $expectation->failed();
10011 0         0 last;
10012             }
10013 21 50       95 Parse::RecDescent::_trace(q{>>Matched subrule: [bodysize]<< (return value: [}
10014             . $_tok . q{]},
10015              
10016             Parse::RecDescent::_tracefirst($text),
10017             q{nestedmessage},
10018             $tracelevel)
10019             if defined $::RD_TRACE;
10020 21         59 $item{q{bodysize}} = $_tok;
10021 21         46 push @item, $_tok;
10022            
10023             }
10024              
10025 21 50       60 Parse::RecDescent::_trace(q{Trying repeated subrule: [envelopestruct]},
10026             Parse::RecDescent::_tracefirst($text),
10027             q{nestedmessage},
10028             $tracelevel)
10029             if defined $::RD_TRACE;
10030 21         77 $expectation->is(q{envelopestruct})->at($text);
10031            
10032 21 50   21   245 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::envelopestruct, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  21         57  
10033             {
10034 0 0       0 Parse::RecDescent::_trace(q{<>},
10035             Parse::RecDescent::_tracefirst($text),
10036             q{nestedmessage},
10037             $tracelevel)
10038             if defined $::RD_TRACE;
10039 0         0 last;
10040             }
10041 21 50       422 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [envelopestruct]<< (}
10042             . @$_tok . q{ times)},
10043              
10044             Parse::RecDescent::_tracefirst($text),
10045             q{nestedmessage},
10046             $tracelevel)
10047             if defined $::RD_TRACE;
10048 21         59 $item{q{envelopestruct(?)}} = $_tok;
10049 21         53 push @item, $_tok;
10050            
10051              
10052              
10053 21 50       62 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodystructure]},
10054             Parse::RecDescent::_tracefirst($text),
10055             q{nestedmessage},
10056             $tracelevel)
10057             if defined $::RD_TRACE;
10058 21         70 $expectation->is(q{bodystructure})->at($text);
10059            
10060 21 50   21   268 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodystructure, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  21         45  
10061             {
10062 0 0       0 Parse::RecDescent::_trace(q{<>},
10063             Parse::RecDescent::_tracefirst($text),
10064             q{nestedmessage},
10065             $tracelevel)
10066             if defined $::RD_TRACE;
10067 0         0 last;
10068             }
10069 21 50       445 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodystructure]<< (}
10070             . @$_tok . q{ times)},
10071              
10072             Parse::RecDescent::_tracefirst($text),
10073             q{nestedmessage},
10074             $tracelevel)
10075             if defined $::RD_TRACE;
10076 21         59 $item{q{bodystructure(?)}} = $_tok;
10077 21         52 push @item, $_tok;
10078            
10079              
10080              
10081 21 50       53 Parse::RecDescent::_trace(q{Trying repeated subrule: [textlines]},
10082             Parse::RecDescent::_tracefirst($text),
10083             q{nestedmessage},
10084             $tracelevel)
10085             if defined $::RD_TRACE;
10086 21         78 $expectation->is(q{textlines})->at($text);
10087            
10088 21 50   21   264 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::textlines, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  21         67  
10089             {
10090 0 0       0 Parse::RecDescent::_trace(q{<>},
10091             Parse::RecDescent::_tracefirst($text),
10092             q{nestedmessage},
10093             $tracelevel)
10094             if defined $::RD_TRACE;
10095 0         0 last;
10096             }
10097 21 50       423 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [textlines]<< (}
10098             . @$_tok . q{ times)},
10099              
10100             Parse::RecDescent::_tracefirst($text),
10101             q{nestedmessage},
10102             $tracelevel)
10103             if defined $::RD_TRACE;
10104 21         51 $item{q{textlines(?)}} = $_tok;
10105 21         52 push @item, $_tok;
10106            
10107              
10108              
10109 21 50       59 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyMD5]},
10110             Parse::RecDescent::_tracefirst($text),
10111             q{nestedmessage},
10112             $tracelevel)
10113             if defined $::RD_TRACE;
10114 21         91 $expectation->is(q{bodyMD5})->at($text);
10115            
10116 21 50   21   263 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyMD5, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  21         48  
10117             {
10118 0 0       0 Parse::RecDescent::_trace(q{<>},
10119             Parse::RecDescent::_tracefirst($text),
10120             q{nestedmessage},
10121             $tracelevel)
10122             if defined $::RD_TRACE;
10123 0         0 last;
10124             }
10125 21 50       369 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyMD5]<< (}
10126             . @$_tok . q{ times)},
10127              
10128             Parse::RecDescent::_tracefirst($text),
10129             q{nestedmessage},
10130             $tracelevel)
10131             if defined $::RD_TRACE;
10132 21         53 $item{q{bodyMD5(?)}} = $_tok;
10133 21         47 push @item, $_tok;
10134            
10135              
10136              
10137 21 50       53 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodydisp]},
10138             Parse::RecDescent::_tracefirst($text),
10139             q{nestedmessage},
10140             $tracelevel)
10141             if defined $::RD_TRACE;
10142 21         69 $expectation->is(q{bodydisp})->at($text);
10143            
10144 21 50   21   256 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydisp, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  21         51  
10145             {
10146 0 0       0 Parse::RecDescent::_trace(q{<>},
10147             Parse::RecDescent::_tracefirst($text),
10148             q{nestedmessage},
10149             $tracelevel)
10150             if defined $::RD_TRACE;
10151 0         0 last;
10152             }
10153 21 50       365 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodydisp]<< (}
10154             . @$_tok . q{ times)},
10155              
10156             Parse::RecDescent::_tracefirst($text),
10157             q{nestedmessage},
10158             $tracelevel)
10159             if defined $::RD_TRACE;
10160 21         53 $item{q{bodydisp(?)}} = $_tok;
10161 21         85 push @item, $_tok;
10162            
10163              
10164              
10165 21 50       62 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodylang]},
10166             Parse::RecDescent::_tracefirst($text),
10167             q{nestedmessage},
10168             $tracelevel)
10169             if defined $::RD_TRACE;
10170 21         68 $expectation->is(q{bodylang})->at($text);
10171            
10172 21 50   21   255 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodylang, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  21         50  
10173             {
10174 0 0       0 Parse::RecDescent::_trace(q{<>},
10175             Parse::RecDescent::_tracefirst($text),
10176             q{nestedmessage},
10177             $tracelevel)
10178             if defined $::RD_TRACE;
10179 0         0 last;
10180             }
10181 21 50       381 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodylang]<< (}
10182             . @$_tok . q{ times)},
10183              
10184             Parse::RecDescent::_tracefirst($text),
10185             q{nestedmessage},
10186             $tracelevel)
10187             if defined $::RD_TRACE;
10188 21         58 $item{q{bodylang(?)}} = $_tok;
10189 21         41 push @item, $_tok;
10190            
10191              
10192              
10193 21 50       65 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyextra]},
10194             Parse::RecDescent::_tracefirst($text),
10195             q{nestedmessage},
10196             $tracelevel)
10197             if defined $::RD_TRACE;
10198 21         63 $expectation->is(q{bodyextra})->at($text);
10199            
10200 21 50   21   302 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextra, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  21         62  
10201             {
10202 0 0       0 Parse::RecDescent::_trace(q{<>},
10203             Parse::RecDescent::_tracefirst($text),
10204             q{nestedmessage},
10205             $tracelevel)
10206             if defined $::RD_TRACE;
10207 0         0 last;
10208             }
10209 21 50       363 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyextra]<< (}
10210             . @$_tok . q{ times)},
10211              
10212             Parse::RecDescent::_tracefirst($text),
10213             q{nestedmessage},
10214             $tracelevel)
10215             if defined $::RD_TRACE;
10216 21         67 $item{q{bodyextra(?)}} = $_tok;
10217 21         40 push @item, $_tok;
10218            
10219              
10220              
10221 21 50       54 Parse::RecDescent::_trace(q{Trying action},
10222             Parse::RecDescent::_tracefirst($text),
10223             q{nestedmessage},
10224             $tracelevel)
10225             if defined $::RD_TRACE;
10226            
10227              
10228 21 50       51 $_tok = ($_noactions) ? 0 : do {
10229 21         41 $return = {};
10230             $return->{$_} = $item{$_}
10231 21         192 for qw/bodyparms bodyid bodydesc bodyenc bodysize/;
10232             # envelopestruct bodystructure textlines/;
10233              
10234 21         99 take_optional_items($return, \%item
10235             , qw/envelopestruct bodystructure textlines/
10236             , qw/bodyMD5 bodydisp bodylang bodyextra/);
10237              
10238 21         122 merge_hash($return, $item{bodystructure}[0]);
10239 21         95 merge_hash($return, $item{basicfields});
10240 21         59 $return->{bodytype} = "MESSAGE" ;
10241 21         51 $return->{bodysubtype} = "RFC822" ;
10242 21         42 1;
10243             };
10244 21 50       74 unless (defined $_tok)
10245             {
10246 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
10247             if defined $::RD_TRACE;
10248 0         0 last;
10249             }
10250 21 50       65 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
10251             . $_tok . q{])},
10252             Parse::RecDescent::_tracefirst($text))
10253             if defined $::RD_TRACE;
10254 21         44 push @item, $_tok;
10255 21         44 $item{__ACTION1__}=$_tok;
10256            
10257              
10258 21 50       53 Parse::RecDescent::_trace(q{>>Matched production: [rfc822message bodyparms bodyid bodydesc bodyenc bodysize envelopestruct bodystructure textlines bodyMD5 bodydisp bodylang bodyextra]<<},
10259             Parse::RecDescent::_tracefirst($text),
10260             q{nestedmessage},
10261             $tracelevel)
10262             if defined $::RD_TRACE;
10263              
10264              
10265              
10266 21         36 $_matched = 1;
10267 21         39 last;
10268             }
10269              
10270             splice
10271 53 100       189 @{$thisparser->{deferred}}, $def_at unless $_matched;
  32         83  
10272            
10273 53 100 66     186 unless ( $_matched || defined($score) )
10274             {
10275 32         57 splice @{$thisparser->{deferred}}, $def_at;
  32         61  
10276            
10277              
10278 32         66 $_[1] = $text; # NOT SURE THIS IS NEEDED
10279 32 50       75 Parse::RecDescent::_trace(q{<>},
10280             Parse::RecDescent::_tracefirst($_[1]),
10281             q{nestedmessage},
10282             $tracelevel)
10283             if defined $::RD_TRACE;
10284 32         172 return undef;
10285             }
10286 21 50 33     137 if (!defined($return) && defined($score))
10287             {
10288 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
10289             q{nestedmessage},
10290             $tracelevel)
10291             if defined $::RD_TRACE;
10292 0         0 $return = $score_return;
10293             }
10294 21         37 splice @{$thisparser->{errors}}, $err_at;
  21         59  
10295 21 50       60 $return = $item[$#item] unless defined $return;
10296 21 50       90 if (defined $::RD_TRACE)
10297             {
10298 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
10299             $return . q{])}, "",
10300             q{nestedmessage},
10301             $tracelevel);
10302 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
10303             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
10304             Parse::RecDescent::_tracefirst($text),
10305             , q{nestedmessage},
10306             $tracelevel)
10307             }
10308 21         56 $_[1] = $text;
10309 21         250 return $return;
10310             }
10311              
10312             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
10313             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::othertypemessage
10314             {
10315 32     32   62 my $thisparser = $_[0];
10316 1     1   10 use vars q{$tracelevel};
  1         2  
  1         367  
10317 32   50     84 local $tracelevel = ($tracelevel||0)+1;
10318 32         63 $ERRORS = 0;
10319 32         71 my $thisrule = $thisparser->{"rules"}{"othertypemessage"};
10320              
10321 32 50       71 Parse::RecDescent::_trace(q{Trying rule: [othertypemessage]},
10322             Parse::RecDescent::_tracefirst($_[1]),
10323             q{othertypemessage},
10324             $tracelevel)
10325             if defined $::RD_TRACE;
10326              
10327 32         63 my $def_at = @{$thisparser->{deferred}};
  32         67  
10328 32         57 my $err_at = @{$thisparser->{errors}};
  32         68  
10329              
10330 32         87 my $score;
10331             my $score_return;
10332 32         0 my $_tok;
10333 32         50 my $return = undef;
10334 32         55 my $_matched=0;
10335 32         49 my $commit=0;
10336 32         65 my @item = ();
10337 32         57 my %item = ();
10338 32         48 my $repeating = $_[2];
10339 32         53 my $_noactions = $_[3];
10340 32 50       73 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  32         53  
  32         61  
10341 32         61 my $_itempos = $_[5];
10342 32 50       87 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10343 32         88 my $text;
10344             my $lastsep;
10345 32         0 my $current_match;
10346 32         92 my $expectation = new Parse::RecDescent::Expectation(q{bodytype});
10347 32         251 $expectation->at($_[1]);
10348            
10349 32         127 my $thisline;
10350 32         123 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10351              
10352            
10353              
10354 32   33     276 while (!$_matched && !$commit)
10355             {
10356            
10357 32 50       80 Parse::RecDescent::_trace(q{Trying production: [bodytype basicfields bodyMD5 bodydisp bodylang bodyextra]},
10358             Parse::RecDescent::_tracefirst($_[1]),
10359             q{othertypemessage},
10360             $tracelevel)
10361             if defined $::RD_TRACE;
10362 32         78 my $thisprod = $thisrule->{"prods"}[0];
10363 32         85 $text = $_[1];
10364 32         58 my $_savetext;
10365 32         69 @item = (q{othertypemessage});
10366 32         68 %item = (__RULE__ => q{othertypemessage});
10367 32         54 my $repcount = 0;
10368              
10369              
10370 32 50       74 Parse::RecDescent::_trace(q{Trying subrule: [bodytype]},
10371             Parse::RecDescent::_tracefirst($text),
10372             q{othertypemessage},
10373             $tracelevel)
10374             if defined $::RD_TRACE;
10375 1     1   8 if (1) { no strict qw{refs};
  1         3  
  1         171  
  32         48  
10376 32         86 $expectation->is(q{})->at($text);
10377 32 100   32   343 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodytype($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  32         71  
10378             {
10379            
10380 20 50       46 Parse::RecDescent::_trace(q{<>},
10381             Parse::RecDescent::_tracefirst($text),
10382             q{othertypemessage},
10383             $tracelevel)
10384             if defined $::RD_TRACE;
10385 20         69 $expectation->failed();
10386 20         74 last;
10387             }
10388 12 50       53 Parse::RecDescent::_trace(q{>>Matched subrule: [bodytype]<< (return value: [}
10389             . $_tok . q{]},
10390              
10391             Parse::RecDescent::_tracefirst($text),
10392             q{othertypemessage},
10393             $tracelevel)
10394             if defined $::RD_TRACE;
10395 12         34 $item{q{bodytype}} = $_tok;
10396 12         31 push @item, $_tok;
10397            
10398             }
10399              
10400 12 50       40 Parse::RecDescent::_trace(q{Trying subrule: [basicfields]},
10401             Parse::RecDescent::_tracefirst($text),
10402             q{othertypemessage},
10403             $tracelevel)
10404             if defined $::RD_TRACE;
10405 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         1160  
  12         17  
10406 12         50 $expectation->is(q{basicfields})->at($text);
10407 12 50   12   187 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::basicfields($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  12         25  
10408             {
10409            
10410 0 0       0 Parse::RecDescent::_trace(q{<>},
10411             Parse::RecDescent::_tracefirst($text),
10412             q{othertypemessage},
10413             $tracelevel)
10414             if defined $::RD_TRACE;
10415 0         0 $expectation->failed();
10416 0         0 last;
10417             }
10418 12 50       51 Parse::RecDescent::_trace(q{>>Matched subrule: [basicfields]<< (return value: [}
10419             . $_tok . q{]},
10420              
10421             Parse::RecDescent::_tracefirst($text),
10422             q{othertypemessage},
10423             $tracelevel)
10424             if defined $::RD_TRACE;
10425 12         34 $item{q{basicfields}} = $_tok;
10426 12         27 push @item, $_tok;
10427            
10428             }
10429              
10430 12 50       33 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyMD5]},
10431             Parse::RecDescent::_tracefirst($text),
10432             q{othertypemessage},
10433             $tracelevel)
10434             if defined $::RD_TRACE;
10435 12         38 $expectation->is(q{bodyMD5})->at($text);
10436            
10437 12 50   12   152 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyMD5, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  12         27  
10438             {
10439 0 0       0 Parse::RecDescent::_trace(q{<>},
10440             Parse::RecDescent::_tracefirst($text),
10441             q{othertypemessage},
10442             $tracelevel)
10443             if defined $::RD_TRACE;
10444 0         0 last;
10445             }
10446 12 50       216 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyMD5]<< (}
10447             . @$_tok . q{ times)},
10448              
10449             Parse::RecDescent::_tracefirst($text),
10450             q{othertypemessage},
10451             $tracelevel)
10452             if defined $::RD_TRACE;
10453 12         33 $item{q{bodyMD5(?)}} = $_tok;
10454 12         27 push @item, $_tok;
10455            
10456              
10457              
10458 12 50       34 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodydisp]},
10459             Parse::RecDescent::_tracefirst($text),
10460             q{othertypemessage},
10461             $tracelevel)
10462             if defined $::RD_TRACE;
10463 12         38 $expectation->is(q{bodydisp})->at($text);
10464            
10465 12 50   12   148 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydisp, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  12         25  
10466             {
10467 0 0       0 Parse::RecDescent::_trace(q{<>},
10468             Parse::RecDescent::_tracefirst($text),
10469             q{othertypemessage},
10470             $tracelevel)
10471             if defined $::RD_TRACE;
10472 0         0 last;
10473             }
10474 12 50       263 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodydisp]<< (}
10475             . @$_tok . q{ times)},
10476              
10477             Parse::RecDescent::_tracefirst($text),
10478             q{othertypemessage},
10479             $tracelevel)
10480             if defined $::RD_TRACE;
10481 12         35 $item{q{bodydisp(?)}} = $_tok;
10482 12         30 push @item, $_tok;
10483            
10484              
10485              
10486 12 50       36 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodylang]},
10487             Parse::RecDescent::_tracefirst($text),
10488             q{othertypemessage},
10489             $tracelevel)
10490             if defined $::RD_TRACE;
10491 12         41 $expectation->is(q{bodylang})->at($text);
10492            
10493 12 50   12   153 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodylang, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  12         29  
10494             {
10495 0 0       0 Parse::RecDescent::_trace(q{<>},
10496             Parse::RecDescent::_tracefirst($text),
10497             q{othertypemessage},
10498             $tracelevel)
10499             if defined $::RD_TRACE;
10500 0         0 last;
10501             }
10502 12 50       242 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodylang]<< (}
10503             . @$_tok . q{ times)},
10504              
10505             Parse::RecDescent::_tracefirst($text),
10506             q{othertypemessage},
10507             $tracelevel)
10508             if defined $::RD_TRACE;
10509 12         31 $item{q{bodylang(?)}} = $_tok;
10510 12         27 push @item, $_tok;
10511            
10512              
10513              
10514 12 50       40 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyextra]},
10515             Parse::RecDescent::_tracefirst($text),
10516             q{othertypemessage},
10517             $tracelevel)
10518             if defined $::RD_TRACE;
10519 12         37 $expectation->is(q{bodyextra})->at($text);
10520            
10521 12 50   12   158 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextra, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  12         29  
10522             {
10523 0 0       0 Parse::RecDescent::_trace(q{<>},
10524             Parse::RecDescent::_tracefirst($text),
10525             q{othertypemessage},
10526             $tracelevel)
10527             if defined $::RD_TRACE;
10528 0         0 last;
10529             }
10530 12 50       214 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyextra]<< (}
10531             . @$_tok . q{ times)},
10532              
10533             Parse::RecDescent::_tracefirst($text),
10534             q{othertypemessage},
10535             $tracelevel)
10536             if defined $::RD_TRACE;
10537 12         33 $item{q{bodyextra(?)}} = $_tok;
10538 12         27 push @item, $_tok;
10539            
10540              
10541              
10542 12 50       37 Parse::RecDescent::_trace(q{Trying action},
10543             Parse::RecDescent::_tracefirst($text),
10544             q{othertypemessage},
10545             $tracelevel)
10546             if defined $::RD_TRACE;
10547            
10548              
10549 12 50       31 $_tok = ($_noactions) ? 0 : do { $return = { bodytype => $item{bodytype} };
  12         38  
10550 12         47 take_optional_items($return, \%item
10551             , qw/bodyMD5 bodydisp bodylang bodyextra/ );
10552 12         53 merge_hash($return, $item{basicfields});
10553 12         33 1;
10554             };
10555 12 50       40 unless (defined $_tok)
10556             {
10557 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
10558             if defined $::RD_TRACE;
10559 0         0 last;
10560             }
10561 12 50       34 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
10562             . $_tok . q{])},
10563             Parse::RecDescent::_tracefirst($text))
10564             if defined $::RD_TRACE;
10565 12         24 push @item, $_tok;
10566 12         26 $item{__ACTION1__}=$_tok;
10567            
10568              
10569 12 50       30 Parse::RecDescent::_trace(q{>>Matched production: [bodytype basicfields bodyMD5 bodydisp bodylang bodyextra]<<},
10570             Parse::RecDescent::_tracefirst($text),
10571             q{othertypemessage},
10572             $tracelevel)
10573             if defined $::RD_TRACE;
10574              
10575              
10576              
10577 12         23 $_matched = 1;
10578 12         22 last;
10579             }
10580              
10581             splice
10582 32 100       134 @{$thisparser->{deferred}}, $def_at unless $_matched;
  20         57  
10583            
10584 32 100 66     119 unless ( $_matched || defined($score) )
10585             {
10586 20         37 splice @{$thisparser->{deferred}}, $def_at;
  20         46  
10587            
10588              
10589 20         42 $_[1] = $text; # NOT SURE THIS IS NEEDED
10590 20 50       52 Parse::RecDescent::_trace(q{<>},
10591             Parse::RecDescent::_tracefirst($_[1]),
10592             q{othertypemessage},
10593             $tracelevel)
10594             if defined $::RD_TRACE;
10595 20         118 return undef;
10596             }
10597 12 50 33     46 if (!defined($return) && defined($score))
10598             {
10599 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
10600             q{othertypemessage},
10601             $tracelevel)
10602             if defined $::RD_TRACE;
10603 0         0 $return = $score_return;
10604             }
10605 12         19 splice @{$thisparser->{errors}}, $err_at;
  12         33  
10606 12 50       36 $return = $item[$#item] unless defined $return;
10607 12 50       31 if (defined $::RD_TRACE)
10608             {
10609 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
10610             $return . q{])}, "",
10611             q{othertypemessage},
10612             $tracelevel);
10613 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
10614             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
10615             Parse::RecDescent::_tracefirst($text),
10616             , q{othertypemessage},
10617             $tracelevel)
10618             }
10619 12         25 $_[1] = $text;
10620 12         113 return $return;
10621             }
10622              
10623             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
10624             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::part
10625             {
10626 125     125   1243 my $thisparser = $_[0];
10627 1     1   9 use vars q{$tracelevel};
  1         2  
  1         375  
10628 125   50     316 local $tracelevel = ($tracelevel||0)+1;
10629 125         256 $ERRORS = 0;
10630 125         249 my $thisrule = $thisparser->{"rules"}{"part"};
10631              
10632 125 50       283 Parse::RecDescent::_trace(q{Trying rule: [part]},
10633             Parse::RecDescent::_tracefirst($_[1]),
10634             q{part},
10635             $tracelevel)
10636             if defined $::RD_TRACE;
10637              
10638 125         199 my $def_at = @{$thisparser->{deferred}};
  125         244  
10639 125         204 my $err_at = @{$thisparser->{errors}};
  125         213  
10640              
10641 125         313 my $score;
10642             my $score_return;
10643 125         0 my $_tok;
10644 125         212 my $return = undef;
10645 125         176 my $_matched=0;
10646 125         188 my $commit=0;
10647 125         228 my @item = ();
10648 125         224 my %item = ();
10649 125         212 my $repeating = $_[2];
10650 125         193 my $_noactions = $_[3];
10651 125 50       277 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  125         247  
  125         221  
10652 125         217 my $_itempos = $_[5];
10653 125 50       330 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10654 125         327 my $text;
10655             my $lastsep;
10656 125         0 my $current_match;
10657 125         296 my $expectation = new Parse::RecDescent::Expectation(q{multipart, or textmessage, or nestedmessage, or othertypemessage});
10658 125         864 $expectation->at($_[1]);
10659            
10660 125         608 my $thisline;
10661 125         421 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10662              
10663            
10664              
10665 125   33     1014 while (!$_matched && !$commit)
10666             {
10667            
10668 125 50       286 Parse::RecDescent::_trace(q{Trying production: [multipart]},
10669             Parse::RecDescent::_tracefirst($_[1]),
10670             q{part},
10671             $tracelevel)
10672             if defined $::RD_TRACE;
10673 125         268 my $thisprod = $thisrule->{"prods"}[0];
10674 125         301 $text = $_[1];
10675 125         192 my $_savetext;
10676 125         260 @item = (q{part});
10677 125         268 %item = (__RULE__ => q{part});
10678 125         221 my $repcount = 0;
10679              
10680              
10681 125 50       251 Parse::RecDescent::_trace(q{Trying subrule: [multipart]},
10682             Parse::RecDescent::_tracefirst($text),
10683             q{part},
10684             $tracelevel)
10685             if defined $::RD_TRACE;
10686 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         368  
  125         192  
10687 125         334 $expectation->is(q{})->at($text);
10688 125 100   125   1273 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::multipart($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  125         285  
10689             {
10690            
10691 94 50       193 Parse::RecDescent::_trace(q{<>},
10692             Parse::RecDescent::_tracefirst($text),
10693             q{part},
10694             $tracelevel)
10695             if defined $::RD_TRACE;
10696 94         264 $expectation->failed();
10697 94         324 last;
10698             }
10699 31 50       140 Parse::RecDescent::_trace(q{>>Matched subrule: [multipart]<< (return value: [}
10700             . $_tok . q{]},
10701              
10702             Parse::RecDescent::_tracefirst($text),
10703             q{part},
10704             $tracelevel)
10705             if defined $::RD_TRACE;
10706 31         76 $item{q{multipart}} = $_tok;
10707 31         67 push @item, $_tok;
10708            
10709             }
10710              
10711 31 50       81 Parse::RecDescent::_trace(q{Trying action},
10712             Parse::RecDescent::_tracefirst($text),
10713             q{part},
10714             $tracelevel)
10715             if defined $::RD_TRACE;
10716            
10717              
10718 31 50       70 $_tok = ($_noactions) ? 0 : do { $return = bless $item{multipart}, $mibs };
  31         108  
10719 31 50       84 unless (defined $_tok)
10720             {
10721 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
10722             if defined $::RD_TRACE;
10723 0         0 last;
10724             }
10725 31 50       75 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
10726             . $_tok . q{])},
10727             Parse::RecDescent::_tracefirst($text))
10728             if defined $::RD_TRACE;
10729 31         51 push @item, $_tok;
10730 31         64 $item{__ACTION1__}=$_tok;
10731            
10732              
10733 31 50       80 Parse::RecDescent::_trace(q{>>Matched production: [multipart]<<},
10734             Parse::RecDescent::_tracefirst($text),
10735             q{part},
10736             $tracelevel)
10737             if defined $::RD_TRACE;
10738              
10739              
10740              
10741 31         66 $_matched = 1;
10742 31         60 last;
10743             }
10744              
10745             splice
10746 125 100       373 @{$thisparser->{deferred}}, $def_at unless $_matched;
  94         190  
10747            
10748 125   66     476 while (!$_matched && !$commit)
10749             {
10750            
10751 94 50       207 Parse::RecDescent::_trace(q{Trying production: [textmessage]},
10752             Parse::RecDescent::_tracefirst($_[1]),
10753             q{part},
10754             $tracelevel)
10755             if defined $::RD_TRACE;
10756 94         192 my $thisprod = $thisrule->{"prods"}[1];
10757 94         245 $text = $_[1];
10758 94         157 my $_savetext;
10759 94         209 @item = (q{part});
10760 94         251 %item = (__RULE__ => q{part});
10761 94         172 my $repcount = 0;
10762              
10763              
10764 94 50       249 Parse::RecDescent::_trace(q{Trying subrule: [textmessage]},
10765             Parse::RecDescent::_tracefirst($text),
10766             q{part},
10767             $tracelevel)
10768             if defined $::RD_TRACE;
10769 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         514  
  94         141  
10770 94         242 $expectation->is(q{})->at($text);
10771 94 100   94   1004 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::textmessage($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  94         171  
10772             {
10773            
10774 53 50       133 Parse::RecDescent::_trace(q{<>},
10775             Parse::RecDescent::_tracefirst($text),
10776             q{part},
10777             $tracelevel)
10778             if defined $::RD_TRACE;
10779 53         157 $expectation->failed();
10780 53         184 last;
10781             }
10782 41 50       161 Parse::RecDescent::_trace(q{>>Matched subrule: [textmessage]<< (return value: [}
10783             . $_tok . q{]},
10784              
10785             Parse::RecDescent::_tracefirst($text),
10786             q{part},
10787             $tracelevel)
10788             if defined $::RD_TRACE;
10789 41         98 $item{q{textmessage}} = $_tok;
10790 41         85 push @item, $_tok;
10791            
10792             }
10793              
10794 41 50       100 Parse::RecDescent::_trace(q{Trying action},
10795             Parse::RecDescent::_tracefirst($text),
10796             q{part},
10797             $tracelevel)
10798             if defined $::RD_TRACE;
10799            
10800              
10801 41 50       91 $_tok = ($_noactions) ? 0 : do { $return = bless $item{textmessage}, $mibs };
  41         126  
10802 41 50       106 unless (defined $_tok)
10803             {
10804 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
10805             if defined $::RD_TRACE;
10806 0         0 last;
10807             }
10808 41 50       90 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
10809             . $_tok . q{])},
10810             Parse::RecDescent::_tracefirst($text))
10811             if defined $::RD_TRACE;
10812 41         60 push @item, $_tok;
10813 41         78 $item{__ACTION1__}=$_tok;
10814            
10815              
10816 41 50       83 Parse::RecDescent::_trace(q{>>Matched production: [textmessage]<<},
10817             Parse::RecDescent::_tracefirst($text),
10818             q{part},
10819             $tracelevel)
10820             if defined $::RD_TRACE;
10821              
10822              
10823              
10824 41         62 $_matched = 1;
10825 41         73 last;
10826             }
10827              
10828             splice
10829 125 100       333 @{$thisparser->{deferred}}, $def_at unless $_matched;
  53         137  
10830            
10831 125   66     380 while (!$_matched && !$commit)
10832             {
10833            
10834 53 50       113 Parse::RecDescent::_trace(q{Trying production: [nestedmessage]},
10835             Parse::RecDescent::_tracefirst($_[1]),
10836             q{part},
10837             $tracelevel)
10838             if defined $::RD_TRACE;
10839 53         111 my $thisprod = $thisrule->{"prods"}[2];
10840 53         120 $text = $_[1];
10841 53         89 my $_savetext;
10842 53         129 @item = (q{part});
10843 53         131 %item = (__RULE__ => q{part});
10844 53         85 my $repcount = 0;
10845              
10846              
10847 53 50       128 Parse::RecDescent::_trace(q{Trying subrule: [nestedmessage]},
10848             Parse::RecDescent::_tracefirst($text),
10849             q{part},
10850             $tracelevel)
10851             if defined $::RD_TRACE;
10852 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         371  
  53         83  
10853 53         126 $expectation->is(q{})->at($text);
10854 53 100   53   658 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::nestedmessage($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  53         126  
10855             {
10856            
10857 32 50       80 Parse::RecDescent::_trace(q{<>},
10858             Parse::RecDescent::_tracefirst($text),
10859             q{part},
10860             $tracelevel)
10861             if defined $::RD_TRACE;
10862 32         108 $expectation->failed();
10863 32         110 last;
10864             }
10865 21 50       103 Parse::RecDescent::_trace(q{>>Matched subrule: [nestedmessage]<< (return value: [}
10866             . $_tok . q{]},
10867              
10868             Parse::RecDescent::_tracefirst($text),
10869             q{part},
10870             $tracelevel)
10871             if defined $::RD_TRACE;
10872 21         60 $item{q{nestedmessage}} = $_tok;
10873 21         44 push @item, $_tok;
10874            
10875             }
10876              
10877 21 50       67 Parse::RecDescent::_trace(q{Trying action},
10878             Parse::RecDescent::_tracefirst($text),
10879             q{part},
10880             $tracelevel)
10881             if defined $::RD_TRACE;
10882            
10883              
10884 21 50       49 $_tok = ($_noactions) ? 0 : do { $return = bless $item{nestedmessage}, $mibs };
  21         119  
10885 21 50       67 unless (defined $_tok)
10886             {
10887 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
10888             if defined $::RD_TRACE;
10889 0         0 last;
10890             }
10891 21 50       52 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
10892             . $_tok . q{])},
10893             Parse::RecDescent::_tracefirst($text))
10894             if defined $::RD_TRACE;
10895 21         39 push @item, $_tok;
10896 21         44 $item{__ACTION1__}=$_tok;
10897            
10898              
10899 21 50       57 Parse::RecDescent::_trace(q{>>Matched production: [nestedmessage]<<},
10900             Parse::RecDescent::_tracefirst($text),
10901             q{part},
10902             $tracelevel)
10903             if defined $::RD_TRACE;
10904              
10905              
10906              
10907 21         38 $_matched = 1;
10908 21         42 last;
10909             }
10910              
10911             splice
10912 125 100       327 @{$thisparser->{deferred}}, $def_at unless $_matched;
  32         71  
10913            
10914 125   66     395 while (!$_matched && !$commit)
10915             {
10916            
10917 32 50       77 Parse::RecDescent::_trace(q{Trying production: [othertypemessage]},
10918             Parse::RecDescent::_tracefirst($_[1]),
10919             q{part},
10920             $tracelevel)
10921             if defined $::RD_TRACE;
10922 32         78 my $thisprod = $thisrule->{"prods"}[3];
10923 32         66 $text = $_[1];
10924 32         47 my $_savetext;
10925 32         86 @item = (q{part});
10926 32         81 %item = (__RULE__ => q{part});
10927 32         61 my $repcount = 0;
10928              
10929              
10930 32 50       70 Parse::RecDescent::_trace(q{Trying subrule: [othertypemessage]},
10931             Parse::RecDescent::_tracefirst($text),
10932             q{part},
10933             $tracelevel)
10934             if defined $::RD_TRACE;
10935 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         720  
  32         49  
10936 32         86 $expectation->is(q{})->at($text);
10937 32 100   32   350 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::othertypemessage($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  32         66  
10938             {
10939            
10940 20 50       63 Parse::RecDescent::_trace(q{<>},
10941             Parse::RecDescent::_tracefirst($text),
10942             q{part},
10943             $tracelevel)
10944             if defined $::RD_TRACE;
10945 20         64 $expectation->failed();
10946 20         74 last;
10947             }
10948 12 50       59 Parse::RecDescent::_trace(q{>>Matched subrule: [othertypemessage]<< (return value: [}
10949             . $_tok . q{]},
10950              
10951             Parse::RecDescent::_tracefirst($text),
10952             q{part},
10953             $tracelevel)
10954             if defined $::RD_TRACE;
10955 12         38 $item{q{othertypemessage}} = $_tok;
10956 12         29 push @item, $_tok;
10957            
10958             }
10959              
10960 12 50       35 Parse::RecDescent::_trace(q{Trying action},
10961             Parse::RecDescent::_tracefirst($text),
10962             q{part},
10963             $tracelevel)
10964             if defined $::RD_TRACE;
10965            
10966              
10967 12 50       35 $_tok = ($_noactions) ? 0 : do { $return = bless $item{othertypemessage}, $mibs };
  12         48  
10968 12 50       42 unless (defined $_tok)
10969             {
10970 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
10971             if defined $::RD_TRACE;
10972 0         0 last;
10973             }
10974 12 50       39 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
10975             . $_tok . q{])},
10976             Parse::RecDescent::_tracefirst($text))
10977             if defined $::RD_TRACE;
10978 12         24 push @item, $_tok;
10979 12         30 $item{__ACTION1__}=$_tok;
10980            
10981              
10982 12 50       30 Parse::RecDescent::_trace(q{>>Matched production: [othertypemessage]<<},
10983             Parse::RecDescent::_tracefirst($text),
10984             q{part},
10985             $tracelevel)
10986             if defined $::RD_TRACE;
10987              
10988              
10989              
10990 12         24 $_matched = 1;
10991 12         17 last;
10992             }
10993              
10994             splice
10995 125 100       299 @{$thisparser->{deferred}}, $def_at unless $_matched;
  20         47  
10996            
10997 125 100 66     344 unless ( $_matched || defined($score) )
10998             {
10999 20         39 splice @{$thisparser->{deferred}}, $def_at;
  20         45  
11000            
11001              
11002 20         50 $_[1] = $text; # NOT SURE THIS IS NEEDED
11003 20 50       49 Parse::RecDescent::_trace(q{<>},
11004             Parse::RecDescent::_tracefirst($_[1]),
11005             q{part},
11006             $tracelevel)
11007             if defined $::RD_TRACE;
11008 20         98 return undef;
11009             }
11010 105 50 33     276 if (!defined($return) && defined($score))
11011             {
11012 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11013             q{part},
11014             $tracelevel)
11015             if defined $::RD_TRACE;
11016 0         0 $return = $score_return;
11017             }
11018 105         189 splice @{$thisparser->{errors}}, $err_at;
  105         218  
11019 105 50       230 $return = $item[$#item] unless defined $return;
11020 105 50       198 if (defined $::RD_TRACE)
11021             {
11022 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11023             $return . q{])}, "",
11024             q{part},
11025             $tracelevel);
11026 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11027             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11028             Parse::RecDescent::_tracefirst($text),
11029             , q{part},
11030             $tracelevel)
11031             }
11032 105         283 $_[1] = $text;
11033 105         758 return $return;
11034             }
11035              
11036             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
11037             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::personalname
11038             {
11039 94     94   179 my $thisparser = $_[0];
11040 1     1   9 use vars q{$tracelevel};
  1         2  
  1         352  
11041 94   50     246 local $tracelevel = ($tracelevel||0)+1;
11042 94         164 $ERRORS = 0;
11043 94         238 my $thisrule = $thisparser->{"rules"}{"personalname"};
11044              
11045 94 50       199 Parse::RecDescent::_trace(q{Trying rule: [personalname]},
11046             Parse::RecDescent::_tracefirst($_[1]),
11047             q{personalname},
11048             $tracelevel)
11049             if defined $::RD_TRACE;
11050              
11051 94         131 my $def_at = @{$thisparser->{deferred}};
  94         200  
11052 94         178 my $err_at = @{$thisparser->{errors}};
  94         184  
11053              
11054 94         264 my $score;
11055             my $score_return;
11056 94         0 my $_tok;
11057 94         161 my $return = undef;
11058 94         156 my $_matched=0;
11059 94         135 my $commit=0;
11060 94         162 my @item = ();
11061 94         158 my %item = ();
11062 94         136 my $repeating = $_[2];
11063 94         182 my $_noactions = $_[3];
11064 94 50       200 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  94         131  
  94         177  
11065 94         161 my $_itempos = $_[5];
11066 94 50       226 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11067 94         268 my $text;
11068             my $lastsep;
11069 94         0 my $current_match;
11070 94         276 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING});
11071 94         632 $expectation->at($_[1]);
11072            
11073 94         506 my $thisline;
11074 94         301 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11075              
11076            
11077              
11078 94   33     746 while (!$_matched && !$commit)
11079             {
11080            
11081 94 50       209 Parse::RecDescent::_trace(q{Trying production: [NIL]},
11082             Parse::RecDescent::_tracefirst($_[1]),
11083             q{personalname},
11084             $tracelevel)
11085             if defined $::RD_TRACE;
11086 94         200 my $thisprod = $thisrule->{"prods"}[0];
11087 94         280 $text = $_[1];
11088 94         151 my $_savetext;
11089 94         193 @item = (q{personalname});
11090 94         234 %item = (__RULE__ => q{personalname});
11091 94         148 my $repcount = 0;
11092              
11093              
11094 94 50       202 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
11095             Parse::RecDescent::_tracefirst($text),
11096             q{personalname},
11097             $tracelevel)
11098             if defined $::RD_TRACE;
11099 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         298  
  94         160  
11100 94         212 $expectation->is(q{})->at($text);
11101 94 100   94   974 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  94         218  
11102             {
11103            
11104 70 50       198 Parse::RecDescent::_trace(q{<>},
11105             Parse::RecDescent::_tracefirst($text),
11106             q{personalname},
11107             $tracelevel)
11108             if defined $::RD_TRACE;
11109 70         219 $expectation->failed();
11110 70         248 last;
11111             }
11112 24 50       118 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
11113             . $_tok . q{]},
11114              
11115             Parse::RecDescent::_tracefirst($text),
11116             q{personalname},
11117             $tracelevel)
11118             if defined $::RD_TRACE;
11119 24         61 $item{q{NIL}} = $_tok;
11120 24         50 push @item, $_tok;
11121            
11122             }
11123              
11124 24 50       65 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
11125             Parse::RecDescent::_tracefirst($text),
11126             q{personalname},
11127             $tracelevel)
11128             if defined $::RD_TRACE;
11129              
11130              
11131              
11132 24         48 $_matched = 1;
11133 24         41 last;
11134             }
11135              
11136             splice
11137 94 100       316 @{$thisparser->{deferred}}, $def_at unless $_matched;
  70         165  
11138            
11139 94   66     339 while (!$_matched && !$commit)
11140             {
11141            
11142 70 50       142 Parse::RecDescent::_trace(q{Trying production: [STRING]},
11143             Parse::RecDescent::_tracefirst($_[1]),
11144             q{personalname},
11145             $tracelevel)
11146             if defined $::RD_TRACE;
11147 70         141 my $thisprod = $thisrule->{"prods"}[1];
11148 70         180 $text = $_[1];
11149 70         110 my $_savetext;
11150 70         157 @item = (q{personalname});
11151 70         219 %item = (__RULE__ => q{personalname});
11152 70         128 my $repcount = 0;
11153              
11154              
11155 70 50       167 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
11156             Parse::RecDescent::_tracefirst($text),
11157             q{personalname},
11158             $tracelevel)
11159             if defined $::RD_TRACE;
11160 1     1   8 if (1) { no strict qw{refs};
  1         10  
  1         480  
  70         109  
11161 70         200 $expectation->is(q{})->at($text);
11162 70 50   70   706 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  70         160  
11163             {
11164            
11165 0 0       0 Parse::RecDescent::_trace(q{<>},
11166             Parse::RecDescent::_tracefirst($text),
11167             q{personalname},
11168             $tracelevel)
11169             if defined $::RD_TRACE;
11170 0         0 $expectation->failed();
11171 0         0 last;
11172             }
11173 70 50       214 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
11174             . $_tok . q{]},
11175              
11176             Parse::RecDescent::_tracefirst($text),
11177             q{personalname},
11178             $tracelevel)
11179             if defined $::RD_TRACE;
11180 70         144 $item{q{STRING}} = $_tok;
11181 70         132 push @item, $_tok;
11182            
11183             }
11184              
11185 70 50       152 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
11186             Parse::RecDescent::_tracefirst($text),
11187             q{personalname},
11188             $tracelevel)
11189             if defined $::RD_TRACE;
11190              
11191              
11192              
11193 70         108 $_matched = 1;
11194 70         120 last;
11195             }
11196              
11197             splice
11198 94 50       204 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
11199            
11200 94 50 33     262 unless ( $_matched || defined($score) )
11201             {
11202 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
11203            
11204              
11205 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
11206 0 0       0 Parse::RecDescent::_trace(q{<>},
11207             Parse::RecDescent::_tracefirst($_[1]),
11208             q{personalname},
11209             $tracelevel)
11210             if defined $::RD_TRACE;
11211 0         0 return undef;
11212             }
11213 94 50 33     402 if (!defined($return) && defined($score))
11214             {
11215 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11216             q{personalname},
11217             $tracelevel)
11218             if defined $::RD_TRACE;
11219 0         0 $return = $score_return;
11220             }
11221 94         144 splice @{$thisparser->{errors}}, $err_at;
  94         174  
11222 94 50       243 $return = $item[$#item] unless defined $return;
11223 94 50       209 if (defined $::RD_TRACE)
11224             {
11225 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11226             $return . q{])}, "",
11227             q{personalname},
11228             $tracelevel);
11229 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11230             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11231             Parse::RecDescent::_tracefirst($text),
11232             , q{personalname},
11233             $tracelevel)
11234             }
11235 94         218 $_[1] = $text;
11236 94         625 return $return;
11237             }
11238              
11239             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
11240             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::replyto
11241             {
11242 24     24   49 my $thisparser = $_[0];
11243 1     1   8 use vars q{$tracelevel};
  1         2  
  1         355  
11244 24   50     77 local $tracelevel = ($tracelevel||0)+1;
11245 24         60 $ERRORS = 0;
11246 24         70 my $thisrule = $thisparser->{"rules"}{"replyto"};
11247              
11248 24 50       61 Parse::RecDescent::_trace(q{Trying rule: [replyto]},
11249             Parse::RecDescent::_tracefirst($_[1]),
11250             q{replyto},
11251             $tracelevel)
11252             if defined $::RD_TRACE;
11253              
11254 24         45 my $def_at = @{$thisparser->{deferred}};
  24         59  
11255 24         50 my $err_at = @{$thisparser->{errors}};
  24         51  
11256              
11257 24         82 my $score;
11258             my $score_return;
11259 24         0 my $_tok;
11260 24         39 my $return = undef;
11261 24         46 my $_matched=0;
11262 24         45 my $commit=0;
11263 24         56 my @item = ();
11264 24         53 my %item = ();
11265 24         42 my $repeating = $_[2];
11266 24         44 my $_noactions = $_[3];
11267 24 50       60 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  24         39  
  24         48  
11268 24         51 my $_itempos = $_[5];
11269 24 50       67 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11270 24         76 my $text;
11271             my $lastsep;
11272 24         0 my $current_match;
11273 24         100 my $expectation = new Parse::RecDescent::Expectation(q{ADDRESSES});
11274 24         197 $expectation->at($_[1]);
11275            
11276 24         108 my $thisline;
11277 24         97 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11278              
11279            
11280              
11281 24   33     211 while (!$_matched && !$commit)
11282             {
11283            
11284 24 50       85 Parse::RecDescent::_trace(q{Trying production: [ADDRESSES]},
11285             Parse::RecDescent::_tracefirst($_[1]),
11286             q{replyto},
11287             $tracelevel)
11288             if defined $::RD_TRACE;
11289 24         65 my $thisprod = $thisrule->{"prods"}[0];
11290 24         57 $text = $_[1];
11291 24         39 my $_savetext;
11292 24         55 @item = (q{replyto});
11293 24         54 %item = (__RULE__ => q{replyto});
11294 24         40 my $repcount = 0;
11295              
11296              
11297 24 50       57 Parse::RecDescent::_trace(q{Trying subrule: [ADDRESSES]},
11298             Parse::RecDescent::_tracefirst($text),
11299             q{replyto},
11300             $tracelevel)
11301             if defined $::RD_TRACE;
11302 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         415  
  24         37  
11303 24         54 $expectation->is(q{})->at($text);
11304 24 50   24   235 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         67  
11305             {
11306            
11307 0 0       0 Parse::RecDescent::_trace(q{<>},
11308             Parse::RecDescent::_tracefirst($text),
11309             q{replyto},
11310             $tracelevel)
11311             if defined $::RD_TRACE;
11312 0         0 $expectation->failed();
11313 0         0 last;
11314             }
11315 24 50       104 Parse::RecDescent::_trace(q{>>Matched subrule: [ADDRESSES]<< (return value: [}
11316             . $_tok . q{]},
11317              
11318             Parse::RecDescent::_tracefirst($text),
11319             q{replyto},
11320             $tracelevel)
11321             if defined $::RD_TRACE;
11322 24         58 $item{q{ADDRESSES}} = $_tok;
11323 24         53 push @item, $_tok;
11324            
11325             }
11326              
11327 24 50       68 Parse::RecDescent::_trace(q{>>Matched production: [ADDRESSES]<<},
11328             Parse::RecDescent::_tracefirst($text),
11329             q{replyto},
11330             $tracelevel)
11331             if defined $::RD_TRACE;
11332              
11333              
11334              
11335 24         39 $_matched = 1;
11336 24         50 last;
11337             }
11338              
11339             splice
11340 24 50       69 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
11341            
11342 24 50 33     82 unless ( $_matched || defined($score) )
11343             {
11344 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
11345            
11346              
11347 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
11348 0 0       0 Parse::RecDescent::_trace(q{<>},
11349             Parse::RecDescent::_tracefirst($_[1]),
11350             q{replyto},
11351             $tracelevel)
11352             if defined $::RD_TRACE;
11353 0         0 return undef;
11354             }
11355 24 50 33     117 if (!defined($return) && defined($score))
11356             {
11357 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11358             q{replyto},
11359             $tracelevel)
11360             if defined $::RD_TRACE;
11361 0         0 $return = $score_return;
11362             }
11363 24         66 splice @{$thisparser->{errors}}, $err_at;
  24         66  
11364 24 50       72 $return = $item[$#item] unless defined $return;
11365 24 50       73 if (defined $::RD_TRACE)
11366             {
11367 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11368             $return . q{])}, "",
11369             q{replyto},
11370             $tracelevel);
11371 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11372             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11373             Parse::RecDescent::_tracefirst($text),
11374             , q{replyto},
11375             $tracelevel)
11376             }
11377 24         62 $_[1] = $text;
11378 24         141 return $return;
11379             }
11380              
11381             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
11382             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::rfc822message
11383             {
11384 53     53   104 my $thisparser = $_[0];
11385 1     1   8 use vars q{$tracelevel};
  1         2  
  1         369  
11386 53   50     148 local $tracelevel = ($tracelevel||0)+1;
11387 53         109 $ERRORS = 0;
11388 53         119 my $thisrule = $thisparser->{"rules"}{"rfc822message"};
11389              
11390 53 50       115 Parse::RecDescent::_trace(q{Trying rule: [rfc822message]},
11391             Parse::RecDescent::_tracefirst($_[1]),
11392             q{rfc822message},
11393             $tracelevel)
11394             if defined $::RD_TRACE;
11395              
11396 53         85 my $def_at = @{$thisparser->{deferred}};
  53         94  
11397 53         89 my $err_at = @{$thisparser->{errors}};
  53         96  
11398              
11399 53         135 my $score;
11400             my $score_return;
11401 53         0 my $_tok;
11402 53         84 my $return = undef;
11403 53         83 my $_matched=0;
11404 53         86 my $commit=0;
11405 53         125 my @item = ();
11406 53         84 my %item = ();
11407 53         98 my $repeating = $_[2];
11408 53         87 my $_noactions = $_[3];
11409 53 50       131 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  53         80  
  53         107  
11410 53         81 my $_itempos = $_[5];
11411 53 50       171 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11412 53         136 my $text;
11413             my $lastsep;
11414 53         0 my $current_match;
11415 53         135 my $expectation = new Parse::RecDescent::Expectation(q{MESSAGE});
11416 53         334 $expectation->at($_[1]);
11417            
11418 53         226 my $thisline;
11419 53         168 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11420              
11421            
11422              
11423 53   33     403 while (!$_matched && !$commit)
11424             {
11425            
11426 53 50       112 Parse::RecDescent::_trace(q{Trying production: [MESSAGE RFC822]},
11427             Parse::RecDescent::_tracefirst($_[1]),
11428             q{rfc822message},
11429             $tracelevel)
11430             if defined $::RD_TRACE;
11431 53         122 my $thisprod = $thisrule->{"prods"}[0];
11432 53         93 $text = $_[1];
11433 53         82 my $_savetext;
11434 53         106 @item = (q{rfc822message});
11435 53         103 %item = (__RULE__ => q{rfc822message});
11436 53         92 my $repcount = 0;
11437              
11438              
11439 53 50       112 Parse::RecDescent::_trace(q{Trying subrule: [MESSAGE]},
11440             Parse::RecDescent::_tracefirst($text),
11441             q{rfc822message},
11442             $tracelevel)
11443             if defined $::RD_TRACE;
11444 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         176  
  53         74  
11445 53         152 $expectation->is(q{})->at($text);
11446 53 100   53   519 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::MESSAGE($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  53         103  
11447             {
11448            
11449 31 50       82 Parse::RecDescent::_trace(q{<>},
11450             Parse::RecDescent::_tracefirst($text),
11451             q{rfc822message},
11452             $tracelevel)
11453             if defined $::RD_TRACE;
11454 31         94 $expectation->failed();
11455 31         107 last;
11456             }
11457 22 50       111 Parse::RecDescent::_trace(q{>>Matched subrule: [MESSAGE]<< (return value: [}
11458             . $_tok . q{]},
11459              
11460             Parse::RecDescent::_tracefirst($text),
11461             q{rfc822message},
11462             $tracelevel)
11463             if defined $::RD_TRACE;
11464 22         65 $item{q{MESSAGE}} = $_tok;
11465 22         47 push @item, $_tok;
11466            
11467             }
11468              
11469 22 50       57 Parse::RecDescent::_trace(q{Trying subrule: [RFC822]},
11470             Parse::RecDescent::_tracefirst($text),
11471             q{rfc822message},
11472             $tracelevel)
11473             if defined $::RD_TRACE;
11474 1     1   7 if (1) { no strict qw{refs};
  1         3  
  1         588  
  22         57  
11475 22         76 $expectation->is(q{RFC822})->at($text);
11476 22 100   22   256 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::RFC822($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  22         52  
11477             {
11478            
11479 1 50       4 Parse::RecDescent::_trace(q{<>},
11480             Parse::RecDescent::_tracefirst($text),
11481             q{rfc822message},
11482             $tracelevel)
11483             if defined $::RD_TRACE;
11484 1         5 $expectation->failed();
11485 1         9 last;
11486             }
11487 21 50       87 Parse::RecDescent::_trace(q{>>Matched subrule: [RFC822]<< (return value: [}
11488             . $_tok . q{]},
11489              
11490             Parse::RecDescent::_tracefirst($text),
11491             q{rfc822message},
11492             $tracelevel)
11493             if defined $::RD_TRACE;
11494 21         64 $item{q{RFC822}} = $_tok;
11495 21         41 push @item, $_tok;
11496            
11497             }
11498              
11499 21 50       56 Parse::RecDescent::_trace(q{Trying action},
11500             Parse::RecDescent::_tracefirst($text),
11501             q{rfc822message},
11502             $tracelevel)
11503             if defined $::RD_TRACE;
11504            
11505              
11506 21 50       44 $_tok = ($_noactions) ? 0 : do { $return = "MESSAGE RFC822" };
  21         45  
11507 21 50       45 unless (defined $_tok)
11508             {
11509 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
11510             if defined $::RD_TRACE;
11511 0         0 last;
11512             }
11513 21 50       62 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
11514             . $_tok . q{])},
11515             Parse::RecDescent::_tracefirst($text))
11516             if defined $::RD_TRACE;
11517 21         41 push @item, $_tok;
11518 21         42 $item{__ACTION1__}=$_tok;
11519            
11520              
11521 21 50       68 Parse::RecDescent::_trace(q{>>Matched production: [MESSAGE RFC822]<<},
11522             Parse::RecDescent::_tracefirst($text),
11523             q{rfc822message},
11524             $tracelevel)
11525             if defined $::RD_TRACE;
11526              
11527              
11528              
11529 21         37 $_matched = 1;
11530 21         39 last;
11531             }
11532              
11533             splice
11534 53 100       160 @{$thisparser->{deferred}}, $def_at unless $_matched;
  32         74  
11535            
11536 53 100 66     188 unless ( $_matched || defined($score) )
11537             {
11538 32         59 splice @{$thisparser->{deferred}}, $def_at;
  32         67  
11539            
11540              
11541 32         76 $_[1] = $text; # NOT SURE THIS IS NEEDED
11542 32 50       71 Parse::RecDescent::_trace(q{<>},
11543             Parse::RecDescent::_tracefirst($_[1]),
11544             q{rfc822message},
11545             $tracelevel)
11546             if defined $::RD_TRACE;
11547 32         156 return undef;
11548             }
11549 21 50 33     67 if (!defined($return) && defined($score))
11550             {
11551 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11552             q{rfc822message},
11553             $tracelevel)
11554             if defined $::RD_TRACE;
11555 0         0 $return = $score_return;
11556             }
11557 21         36 splice @{$thisparser->{errors}}, $err_at;
  21         49  
11558 21 50       58 $return = $item[$#item] unless defined $return;
11559 21 50       58 if (defined $::RD_TRACE)
11560             {
11561 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11562             $return . q{])}, "",
11563             q{rfc822message},
11564             $tracelevel);
11565 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11566             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11567             Parse::RecDescent::_tracefirst($text),
11568             , q{rfc822message},
11569             $tracelevel)
11570             }
11571 21         40 $_[1] = $text;
11572 21         125 return $return;
11573             }
11574              
11575             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
11576             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::sender
11577             {
11578 24     24   51 my $thisparser = $_[0];
11579 1     1   8 use vars q{$tracelevel};
  1         3  
  1         372  
11580 24   50     88 local $tracelevel = ($tracelevel||0)+1;
11581 24         54 $ERRORS = 0;
11582 24         72 my $thisrule = $thisparser->{"rules"}{"sender"};
11583              
11584 24 50       75 Parse::RecDescent::_trace(q{Trying rule: [sender]},
11585             Parse::RecDescent::_tracefirst($_[1]),
11586             q{sender},
11587             $tracelevel)
11588             if defined $::RD_TRACE;
11589              
11590 24         51 my $def_at = @{$thisparser->{deferred}};
  24         60  
11591 24         44 my $err_at = @{$thisparser->{errors}};
  24         52  
11592              
11593 24         86 my $score;
11594             my $score_return;
11595 24         0 my $_tok;
11596 24         53 my $return = undef;
11597 24         96 my $_matched=0;
11598 24         53 my $commit=0;
11599 24         55 my @item = ();
11600 24         44 my %item = ();
11601 24         45 my $repeating = $_[2];
11602 24         42 my $_noactions = $_[3];
11603 24 50       59 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  24         38  
  24         48  
11604 24         43 my $_itempos = $_[5];
11605 24 50       72 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11606 24         65 my $text;
11607             my $lastsep;
11608 24         0 my $current_match;
11609 24         74 my $expectation = new Parse::RecDescent::Expectation(q{ADDRESSES});
11610 24         191 $expectation->at($_[1]);
11611            
11612 24         107 my $thisline;
11613 24         99 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11614              
11615            
11616              
11617 24   33     226 while (!$_matched && !$commit)
11618             {
11619            
11620 24 50       64 Parse::RecDescent::_trace(q{Trying production: [ADDRESSES]},
11621             Parse::RecDescent::_tracefirst($_[1]),
11622             q{sender},
11623             $tracelevel)
11624             if defined $::RD_TRACE;
11625 24         72 my $thisprod = $thisrule->{"prods"}[0];
11626 24         46 $text = $_[1];
11627 24         39 my $_savetext;
11628 24         49 @item = (q{sender});
11629 24         52 %item = (__RULE__ => q{sender});
11630 24         36 my $repcount = 0;
11631              
11632              
11633 24 50       55 Parse::RecDescent::_trace(q{Trying subrule: [ADDRESSES]},
11634             Parse::RecDescent::_tracefirst($text),
11635             q{sender},
11636             $tracelevel)
11637             if defined $::RD_TRACE;
11638 1     1   8 if (1) { no strict qw{refs};
  1         3  
  1         438  
  24         39  
11639 24         63 $expectation->is(q{})->at($text);
11640 24 50   24   246 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         53  
11641             {
11642            
11643 0 0       0 Parse::RecDescent::_trace(q{<>},
11644             Parse::RecDescent::_tracefirst($text),
11645             q{sender},
11646             $tracelevel)
11647             if defined $::RD_TRACE;
11648 0         0 $expectation->failed();
11649 0         0 last;
11650             }
11651 24 50       119 Parse::RecDescent::_trace(q{>>Matched subrule: [ADDRESSES]<< (return value: [}
11652             . $_tok . q{]},
11653              
11654             Parse::RecDescent::_tracefirst($text),
11655             q{sender},
11656             $tracelevel)
11657             if defined $::RD_TRACE;
11658 24         62 $item{q{ADDRESSES}} = $_tok;
11659 24         59 push @item, $_tok;
11660            
11661             }
11662              
11663 24 50       57 Parse::RecDescent::_trace(q{>>Matched production: [ADDRESSES]<<},
11664             Parse::RecDescent::_tracefirst($text),
11665             q{sender},
11666             $tracelevel)
11667             if defined $::RD_TRACE;
11668              
11669              
11670              
11671 24         51 $_matched = 1;
11672 24         57 last;
11673             }
11674              
11675             splice
11676 24 50       102 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
11677            
11678 24 50 33     83 unless ( $_matched || defined($score) )
11679             {
11680 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
11681            
11682              
11683 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
11684 0 0       0 Parse::RecDescent::_trace(q{<>},
11685             Parse::RecDescent::_tracefirst($_[1]),
11686             q{sender},
11687             $tracelevel)
11688             if defined $::RD_TRACE;
11689 0         0 return undef;
11690             }
11691 24 50 33     122 if (!defined($return) && defined($score))
11692             {
11693 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11694             q{sender},
11695             $tracelevel)
11696             if defined $::RD_TRACE;
11697 0         0 $return = $score_return;
11698             }
11699 24         60 splice @{$thisparser->{errors}}, $err_at;
  24         63  
11700 24 50       97 $return = $item[$#item] unless defined $return;
11701 24 50       70 if (defined $::RD_TRACE)
11702             {
11703 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11704             $return . q{])}, "",
11705             q{sender},
11706             $tracelevel);
11707 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11708             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11709             Parse::RecDescent::_tracefirst($text),
11710             , q{sender},
11711             $tracelevel)
11712             }
11713 24         61 $_[1] = $text;
11714 24         142 return $return;
11715             }
11716              
11717             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
11718             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::sourceroute
11719             {
11720 94     94   203 my $thisparser = $_[0];
11721 1     1   9 use vars q{$tracelevel};
  1         2  
  1         378  
11722 94   50     246 local $tracelevel = ($tracelevel||0)+1;
11723 94         157 $ERRORS = 0;
11724 94         209 my $thisrule = $thisparser->{"rules"}{"sourceroute"};
11725              
11726 94 50       199 Parse::RecDescent::_trace(q{Trying rule: [sourceroute]},
11727             Parse::RecDescent::_tracefirst($_[1]),
11728             q{sourceroute},
11729             $tracelevel)
11730             if defined $::RD_TRACE;
11731              
11732 94         138 my $def_at = @{$thisparser->{deferred}};
  94         180  
11733 94         167 my $err_at = @{$thisparser->{errors}};
  94         178  
11734              
11735 94         265 my $score;
11736             my $score_return;
11737 94         0 my $_tok;
11738 94         164 my $return = undef;
11739 94         164 my $_matched=0;
11740 94         144 my $commit=0;
11741 94         182 my @item = ();
11742 94         149 my %item = ();
11743 94         184 my $repeating = $_[2];
11744 94         154 my $_noactions = $_[3];
11745 94 50       217 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  94         140  
  94         163  
11746 94         184 my $_itempos = $_[5];
11747 94 50       239 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11748 94         223 my $text;
11749             my $lastsep;
11750 94         0 my $current_match;
11751 94         245 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING});
11752 94         651 $expectation->at($_[1]);
11753            
11754 94         425 my $thisline;
11755 94         350 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11756              
11757            
11758              
11759 94   33     818 while (!$_matched && !$commit)
11760             {
11761            
11762 94 50       243 Parse::RecDescent::_trace(q{Trying production: [NIL]},
11763             Parse::RecDescent::_tracefirst($_[1]),
11764             q{sourceroute},
11765             $tracelevel)
11766             if defined $::RD_TRACE;
11767 94         219 my $thisprod = $thisrule->{"prods"}[0];
11768 94         168 $text = $_[1];
11769 94         139 my $_savetext;
11770 94         182 @item = (q{sourceroute});
11771 94         188 %item = (__RULE__ => q{sourceroute});
11772 94         134 my $repcount = 0;
11773              
11774              
11775 94 50       192 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
11776             Parse::RecDescent::_tracefirst($text),
11777             q{sourceroute},
11778             $tracelevel)
11779             if defined $::RD_TRACE;
11780 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         290  
  94         171  
11781 94         244 $expectation->is(q{})->at($text);
11782 94 50   94   883 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  94         205  
11783             {
11784            
11785 0 0       0 Parse::RecDescent::_trace(q{<>},
11786             Parse::RecDescent::_tracefirst($text),
11787             q{sourceroute},
11788             $tracelevel)
11789             if defined $::RD_TRACE;
11790 0         0 $expectation->failed();
11791 0         0 last;
11792             }
11793 94 50       339 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
11794             . $_tok . q{]},
11795              
11796             Parse::RecDescent::_tracefirst($text),
11797             q{sourceroute},
11798             $tracelevel)
11799             if defined $::RD_TRACE;
11800 94         251 $item{q{NIL}} = $_tok;
11801 94         198 push @item, $_tok;
11802            
11803             }
11804              
11805 94 50       190 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
11806             Parse::RecDescent::_tracefirst($text),
11807             q{sourceroute},
11808             $tracelevel)
11809             if defined $::RD_TRACE;
11810              
11811              
11812              
11813 94         147 $_matched = 1;
11814 94         170 last;
11815             }
11816              
11817             splice
11818 94 50       273 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
11819            
11820 94   33     234 while (!$_matched && !$commit)
11821             {
11822            
11823 0 0       0 Parse::RecDescent::_trace(q{Trying production: [STRING]},
11824             Parse::RecDescent::_tracefirst($_[1]),
11825             q{sourceroute},
11826             $tracelevel)
11827             if defined $::RD_TRACE;
11828 0         0 my $thisprod = $thisrule->{"prods"}[1];
11829 0         0 $text = $_[1];
11830 0         0 my $_savetext;
11831 0         0 @item = (q{sourceroute});
11832 0         0 %item = (__RULE__ => q{sourceroute});
11833 0         0 my $repcount = 0;
11834              
11835              
11836 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
11837             Parse::RecDescent::_tracefirst($text),
11838             q{sourceroute},
11839             $tracelevel)
11840             if defined $::RD_TRACE;
11841 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         456  
  0         0  
11842 0         0 $expectation->is(q{})->at($text);
11843 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  0         0  
11844             {
11845            
11846 0 0       0 Parse::RecDescent::_trace(q{<>},
11847             Parse::RecDescent::_tracefirst($text),
11848             q{sourceroute},
11849             $tracelevel)
11850             if defined $::RD_TRACE;
11851 0         0 $expectation->failed();
11852 0         0 last;
11853             }
11854 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
11855             . $_tok . q{]},
11856              
11857             Parse::RecDescent::_tracefirst($text),
11858             q{sourceroute},
11859             $tracelevel)
11860             if defined $::RD_TRACE;
11861 0         0 $item{q{STRING}} = $_tok;
11862 0         0 push @item, $_tok;
11863            
11864             }
11865              
11866 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
11867             Parse::RecDescent::_tracefirst($text),
11868             q{sourceroute},
11869             $tracelevel)
11870             if defined $::RD_TRACE;
11871              
11872              
11873              
11874 0         0 $_matched = 1;
11875 0         0 last;
11876             }
11877              
11878             splice
11879 94 50       208 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
11880            
11881 94 50 33     275 unless ( $_matched || defined($score) )
11882             {
11883 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
11884            
11885              
11886 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
11887 0 0       0 Parse::RecDescent::_trace(q{<>},
11888             Parse::RecDescent::_tracefirst($_[1]),
11889             q{sourceroute},
11890             $tracelevel)
11891             if defined $::RD_TRACE;
11892 0         0 return undef;
11893             }
11894 94 50 33     343 if (!defined($return) && defined($score))
11895             {
11896 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11897             q{sourceroute},
11898             $tracelevel)
11899             if defined $::RD_TRACE;
11900 0         0 $return = $score_return;
11901             }
11902 94         168 splice @{$thisparser->{errors}}, $err_at;
  94         183  
11903 94 50       255 $return = $item[$#item] unless defined $return;
11904 94 50       207 if (defined $::RD_TRACE)
11905             {
11906 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11907             $return . q{])}, "",
11908             q{sourceroute},
11909             $tracelevel);
11910 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11911             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11912             Parse::RecDescent::_tracefirst($text),
11913             , q{sourceroute},
11914             $tracelevel)
11915             }
11916 94         206 $_[1] = $text;
11917 94         679 return $return;
11918             }
11919              
11920             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
11921             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::start
11922             {
11923 10     10   859 my $thisparser = $_[0];
11924 1     1   8 use vars q{$tracelevel};
  1         2  
  1         1223  
11925 10   50     58 local $tracelevel = ($tracelevel||0)+1;
11926 10         25 $ERRORS = 0;
11927 10         40 my $thisrule = $thisparser->{"rules"}{"start"};
11928              
11929 10 50       38 Parse::RecDescent::_trace(q{Trying rule: [start]},
11930             Parse::RecDescent::_tracefirst($_[1]),
11931             q{start},
11932             $tracelevel)
11933             if defined $::RD_TRACE;
11934              
11935 10         19 my $def_at = @{$thisparser->{deferred}};
  10         25  
11936 10         19 my $err_at = @{$thisparser->{errors}};
  10         24  
11937              
11938 10         32 my $score;
11939             my $score_return;
11940 10         0 my $_tok;
11941 10         16 my $return = undef;
11942 10         18 my $_matched=0;
11943 10         23 my $commit=0;
11944 10         19 my @item = ();
11945 10         22 my %item = ();
11946 10         16 my $repeating = $_[2];
11947 10         17 my $_noactions = $_[3];
11948 10 50       32 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  10         15  
  10         30  
11949 10         46 my $_itempos = $_[5];
11950 10 50       35 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11951 10         28 my $text;
11952             my $lastsep;
11953 10         0 my $current_match;
11954 10         34 my $expectation = new Parse::RecDescent::Expectation(q{/.*?\\(.*?BODYSTRUCTURE \\(/i});
11955 10         85 $expectation->at($_[1]);
11956            
11957 10         47 my $thisline;
11958 10         62 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11959              
11960            
11961              
11962 10   33     112 while (!$_matched && !$commit)
11963             {
11964            
11965 10 50       26 Parse::RecDescent::_trace(q{Trying production: [/.*?\\(.*?BODYSTRUCTURE \\(/i part /\\).*\\)\\r?\\n?/]},
11966             Parse::RecDescent::_tracefirst($_[1]),
11967             q{start},
11968             $tracelevel)
11969             if defined $::RD_TRACE;
11970 10         33 my $thisprod = $thisrule->{"prods"}[0];
11971 10         22 $text = $_[1];
11972 10         18 my $_savetext;
11973 10         26 @item = (q{start});
11974 10         25 %item = (__RULE__ => q{start});
11975 10         17 my $repcount = 0;
11976              
11977              
11978 10 50       33 Parse::RecDescent::_trace(q{Trying terminal: [/.*?\\(.*?BODYSTRUCTURE \\(/i]}, Parse::RecDescent::_tracefirst($text),
11979             q{start},
11980             $tracelevel)
11981             if defined $::RD_TRACE;
11982 10         27 undef $lastsep;
11983 10         28 $expectation->is(q{})->at($text);
11984            
11985              
11986 10 50 33     146 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:.*?\(.*?BODYSTRUCTURE \()/i)
  10 50       158  
11987             {
11988 0 0       0 $text = $lastsep . $text if defined $lastsep;
11989 0         0 $expectation->failed();
11990 0 0       0 Parse::RecDescent::_trace(q{<>},
11991             Parse::RecDescent::_tracefirst($text))
11992             if defined $::RD_TRACE;
11993              
11994 0         0 last;
11995             }
11996 10         68 $current_match = substr($text, $-[0], $+[0] - $-[0]);
11997 10         78 substr($text,0,length($current_match),q{});
11998 10 50       29 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
11999             . $current_match . q{])},
12000             Parse::RecDescent::_tracefirst($text))
12001             if defined $::RD_TRACE;
12002 10         46 push @item, $item{__PATTERN1__}=$current_match;
12003            
12004              
12005 10 50       36 Parse::RecDescent::_trace(q{Trying repeated subrule: [part]},
12006             Parse::RecDescent::_tracefirst($text),
12007             q{start},
12008             $tracelevel)
12009             if defined $::RD_TRACE;
12010 10         30 $expectation->is(q{part})->at($text);
12011            
12012 10 50   10   147 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::part, 1, 1, $_noactions,$expectation,sub { \@arg },undef)))
  10         21  
12013             {
12014 0 0       0 Parse::RecDescent::_trace(q{<>},
12015             Parse::RecDescent::_tracefirst($text),
12016             q{start},
12017             $tracelevel)
12018             if defined $::RD_TRACE;
12019 0         0 last;
12020             }
12021 10 50       193 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [part]<< (}
12022             . @$_tok . q{ times)},
12023              
12024             Parse::RecDescent::_tracefirst($text),
12025             q{start},
12026             $tracelevel)
12027             if defined $::RD_TRACE;
12028 10         31 $item{q{part(1)}} = $_tok;
12029 10         20 push @item, $_tok;
12030            
12031              
12032              
12033 10 50       28 Parse::RecDescent::_trace(q{Trying terminal: [/\\).*\\)\\r?\\n?/]}, Parse::RecDescent::_tracefirst($text),
12034             q{start},
12035             $tracelevel)
12036             if defined $::RD_TRACE;
12037 10         20 undef $lastsep;
12038 10         28 $expectation->is(q{/\\).*\\)\\r?\\n?/})->at($text);
12039            
12040              
12041 10 50 33     162 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\).*\)\r?\n?)/)
  10 50       132  
12042             {
12043 0 0       0 $text = $lastsep . $text if defined $lastsep;
12044 0         0 $expectation->failed();
12045 0 0       0 Parse::RecDescent::_trace(q{<>},
12046             Parse::RecDescent::_tracefirst($text))
12047             if defined $::RD_TRACE;
12048              
12049 0         0 last;
12050             }
12051 10         64 $current_match = substr($text, $-[0], $+[0] - $-[0]);
12052 10         37 substr($text,0,length($current_match),q{});
12053 10 50       32 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
12054             . $current_match . q{])},
12055             Parse::RecDescent::_tracefirst($text))
12056             if defined $::RD_TRACE;
12057 10         42 push @item, $item{__PATTERN2__}=$current_match;
12058            
12059              
12060 10 50       31 Parse::RecDescent::_trace(q{Trying action},
12061             Parse::RecDescent::_tracefirst($text),
12062             q{start},
12063             $tracelevel)
12064             if defined $::RD_TRACE;
12065            
12066              
12067 10 50       28 $_tok = ($_noactions) ? 0 : do { $return = $item{'part(1)'}[0] };
  10         27  
12068 10 50       27 unless (defined $_tok)
12069             {
12070 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
12071             if defined $::RD_TRACE;
12072 0         0 last;
12073             }
12074 10 50       32 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
12075             . $_tok . q{])},
12076             Parse::RecDescent::_tracefirst($text))
12077             if defined $::RD_TRACE;
12078 10         19 push @item, $_tok;
12079 10         23 $item{__ACTION1__}=$_tok;
12080            
12081              
12082 10 50       26 Parse::RecDescent::_trace(q{>>Matched production: [/.*?\\(.*?BODYSTRUCTURE \\(/i part /\\).*\\)\\r?\\n?/]<<},
12083             Parse::RecDescent::_tracefirst($text),
12084             q{start},
12085             $tracelevel)
12086             if defined $::RD_TRACE;
12087              
12088              
12089              
12090 10         17 $_matched = 1;
12091 10         23 last;
12092             }
12093              
12094             splice
12095 10 50       25 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
12096            
12097 10 50 33     31 unless ( $_matched || defined($score) )
12098             {
12099 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
12100            
12101              
12102 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
12103 0 0       0 Parse::RecDescent::_trace(q{<>},
12104             Parse::RecDescent::_tracefirst($_[1]),
12105             q{start},
12106             $tracelevel)
12107             if defined $::RD_TRACE;
12108 0         0 return undef;
12109             }
12110 10 50 33     37 if (!defined($return) && defined($score))
12111             {
12112 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
12113             q{start},
12114             $tracelevel)
12115             if defined $::RD_TRACE;
12116 0         0 $return = $score_return;
12117             }
12118 10         18 splice @{$thisparser->{errors}}, $err_at;
  10         28  
12119 10 50       34 $return = $item[$#item] unless defined $return;
12120 10 50       27 if (defined $::RD_TRACE)
12121             {
12122 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
12123             $return . q{])}, "",
12124             q{start},
12125             $tracelevel);
12126 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
12127             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
12128             Parse::RecDescent::_tracefirst($text),
12129             , q{start},
12130             $tracelevel)
12131             }
12132 10         22 $_[1] = $text;
12133 10         89 return $return;
12134             }
12135              
12136             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
12137             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::subject
12138             {
12139 24     24   54 my $thisparser = $_[0];
12140 1     1   9 use vars q{$tracelevel};
  1         3  
  1         370  
12141 24   50     63 local $tracelevel = ($tracelevel||0)+1;
12142 24         47 $ERRORS = 0;
12143 24         63 my $thisrule = $thisparser->{"rules"}{"subject"};
12144              
12145 24 50       71 Parse::RecDescent::_trace(q{Trying rule: [subject]},
12146             Parse::RecDescent::_tracefirst($_[1]),
12147             q{subject},
12148             $tracelevel)
12149             if defined $::RD_TRACE;
12150              
12151 24         37 my $def_at = @{$thisparser->{deferred}};
  24         56  
12152 24         39 my $err_at = @{$thisparser->{errors}};
  24         62  
12153              
12154 24         72 my $score;
12155             my $score_return;
12156 24         0 my $_tok;
12157 24         40 my $return = undef;
12158 24         38 my $_matched=0;
12159 24         43 my $commit=0;
12160 24         57 my @item = ();
12161 24         41 my %item = ();
12162 24         46 my $repeating = $_[2];
12163 24         43 my $_noactions = $_[3];
12164 24 50       56 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  24         35  
  24         53  
12165 24         49 my $_itempos = $_[5];
12166 24 50       65 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
12167 24         79 my $text;
12168             my $lastsep;
12169 24         0 my $current_match;
12170 24         79 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING});
12171 24         183 $expectation->at($_[1]);
12172            
12173 24         111 my $thisline;
12174 24         109 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
12175              
12176            
12177              
12178 24   33     219 while (!$_matched && !$commit)
12179             {
12180            
12181 24 50       76 Parse::RecDescent::_trace(q{Trying production: [NIL]},
12182             Parse::RecDescent::_tracefirst($_[1]),
12183             q{subject},
12184             $tracelevel)
12185             if defined $::RD_TRACE;
12186 24         60 my $thisprod = $thisrule->{"prods"}[0];
12187 24         53 $text = $_[1];
12188 24         42 my $_savetext;
12189 24         56 @item = (q{subject});
12190 24         67 %item = (__RULE__ => q{subject});
12191 24         37 my $repcount = 0;
12192              
12193              
12194 24 50       74 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
12195             Parse::RecDescent::_tracefirst($text),
12196             q{subject},
12197             $tracelevel)
12198             if defined $::RD_TRACE;
12199 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         328  
  24         41  
12200 24         72 $expectation->is(q{})->at($text);
12201 24 50   24   272 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         52  
12202             {
12203            
12204 24 50       81 Parse::RecDescent::_trace(q{<>},
12205             Parse::RecDescent::_tracefirst($text),
12206             q{subject},
12207             $tracelevel)
12208             if defined $::RD_TRACE;
12209 24         99 $expectation->failed();
12210 24         90 last;
12211             }
12212 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
12213             . $_tok . q{]},
12214              
12215             Parse::RecDescent::_tracefirst($text),
12216             q{subject},
12217             $tracelevel)
12218             if defined $::RD_TRACE;
12219 0         0 $item{q{NIL}} = $_tok;
12220 0         0 push @item, $_tok;
12221            
12222             }
12223              
12224 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
12225             Parse::RecDescent::_tracefirst($text),
12226             q{subject},
12227             $tracelevel)
12228             if defined $::RD_TRACE;
12229              
12230              
12231              
12232 0         0 $_matched = 1;
12233 0         0 last;
12234             }
12235              
12236             splice
12237 24 50       97 @{$thisparser->{deferred}}, $def_at unless $_matched;
  24         63  
12238            
12239 24   33     126 while (!$_matched && !$commit)
12240             {
12241            
12242 24 50       106 Parse::RecDescent::_trace(q{Trying production: [STRING]},
12243             Parse::RecDescent::_tracefirst($_[1]),
12244             q{subject},
12245             $tracelevel)
12246             if defined $::RD_TRACE;
12247 24         68 my $thisprod = $thisrule->{"prods"}[1];
12248 24         53 $text = $_[1];
12249 24         43 my $_savetext;
12250 24         67 @item = (q{subject});
12251 24         81 %item = (__RULE__ => q{subject});
12252 24         49 my $repcount = 0;
12253              
12254              
12255 24 50       62 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
12256             Parse::RecDescent::_tracefirst($text),
12257             q{subject},
12258             $tracelevel)
12259             if defined $::RD_TRACE;
12260 1     1   8 if (1) { no strict qw{refs};
  1         73  
  1         458  
  24         39  
12261 24         85 $expectation->is(q{})->at($text);
12262 24 50   24   265 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         52  
12263             {
12264            
12265 0 0       0 Parse::RecDescent::_trace(q{<>},
12266             Parse::RecDescent::_tracefirst($text),
12267             q{subject},
12268             $tracelevel)
12269             if defined $::RD_TRACE;
12270 0         0 $expectation->failed();
12271 0         0 last;
12272             }
12273 24 50       91 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
12274             . $_tok . q{]},
12275              
12276             Parse::RecDescent::_tracefirst($text),
12277             q{subject},
12278             $tracelevel)
12279             if defined $::RD_TRACE;
12280 24         52 $item{q{STRING}} = $_tok;
12281 24         52 push @item, $_tok;
12282            
12283             }
12284              
12285 24 50       71 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
12286             Parse::RecDescent::_tracefirst($text),
12287             q{subject},
12288             $tracelevel)
12289             if defined $::RD_TRACE;
12290              
12291              
12292              
12293 24         38 $_matched = 1;
12294 24         45 last;
12295             }
12296              
12297             splice
12298 24 50       80 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
12299            
12300 24 50 33     67 unless ( $_matched || defined($score) )
12301             {
12302 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
12303            
12304              
12305 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
12306 0 0       0 Parse::RecDescent::_trace(q{<>},
12307             Parse::RecDescent::_tracefirst($_[1]),
12308             q{subject},
12309             $tracelevel)
12310             if defined $::RD_TRACE;
12311 0         0 return undef;
12312             }
12313 24 50 33     122 if (!defined($return) && defined($score))
12314             {
12315 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
12316             q{subject},
12317             $tracelevel)
12318             if defined $::RD_TRACE;
12319 0         0 $return = $score_return;
12320             }
12321 24         42 splice @{$thisparser->{errors}}, $err_at;
  24         59  
12322 24 50       75 $return = $item[$#item] unless defined $return;
12323 24 50       57 if (defined $::RD_TRACE)
12324             {
12325 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
12326             $return . q{])}, "",
12327             q{subject},
12328             $tracelevel);
12329 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
12330             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
12331             Parse::RecDescent::_tracefirst($text),
12332             , q{subject},
12333             $tracelevel)
12334             }
12335 24         61 $_[1] = $text;
12336 24         150 return $return;
12337             }
12338              
12339             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
12340             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::subpart
12341             {
12342 200     200   3383 my $thisparser = $_[0];
12343 1     1   9 use vars q{$tracelevel};
  1         2  
  1         538  
12344 200   50     495 local $tracelevel = ($tracelevel||0)+1;
12345 200         315 $ERRORS = 0;
12346 200         393 my $thisrule = $thisparser->{"rules"}{"subpart"};
12347              
12348 200 50       423 Parse::RecDescent::_trace(q{Trying rule: [subpart]},
12349             Parse::RecDescent::_tracefirst($_[1]),
12350             q{subpart},
12351             $tracelevel)
12352             if defined $::RD_TRACE;
12353              
12354 200         308 my $def_at = @{$thisparser->{deferred}};
  200         392  
12355 200         338 my $err_at = @{$thisparser->{errors}};
  200         532  
12356              
12357 200         495 my $score;
12358             my $score_return;
12359 200         0 my $_tok;
12360 200         322 my $return = undef;
12361 200         286 my $_matched=0;
12362 200         318 my $commit=0;
12363 200         342 my @item = ();
12364 200         344 my %item = ();
12365 200         316 my $repeating = $_[2];
12366 200         267 my $_noactions = $_[3];
12367 200 50       407 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  200         309  
  200         356  
12368 200         407 my $_itempos = $_[5];
12369 200 50       490 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
12370 200         528 my $text;
12371             my $lastsep;
12372 200         0 my $current_match;
12373 200         495 my $expectation = new Parse::RecDescent::Expectation(q{'('});
12374 200         1349 $expectation->at($_[1]);
12375            
12376 200         786 my $thisline;
12377 200         660 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
12378              
12379            
12380              
12381 200   33     1625 while (!$_matched && !$commit)
12382             {
12383            
12384 200 50       417 Parse::RecDescent::_trace(q{Trying production: ['(' part ')' ]},
12385             Parse::RecDescent::_tracefirst($_[1]),
12386             q{subpart},
12387             $tracelevel)
12388             if defined $::RD_TRACE;
12389 200         429 my $thisprod = $thisrule->{"prods"}[0];
12390 200         371 $text = $_[1];
12391 200         317 my $_savetext;
12392 200         402 @item = (q{subpart});
12393 200         417 %item = (__RULE__ => q{subpart});
12394 200         304 my $repcount = 0;
12395              
12396              
12397 200 50       406 Parse::RecDescent::_trace(q{Trying terminal: ['(']},
12398             Parse::RecDescent::_tracefirst($text),
12399             q{subpart},
12400             $tracelevel)
12401             if defined $::RD_TRACE;
12402 200         413 undef $lastsep;
12403 200         468 $expectation->is(q{})->at($text);
12404            
12405              
12406 200 100 33     2374 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and
  200 100 66     1326  
  200   66     433  
  200         1036  
12407             substr($text,0,length($_tok)) eq $_tok and
12408 75         161 do { substr($text,0,length($_tok)) = ""; 1; }
  75         215  
12409             )
12410             {
12411 125 50       520 $text = $lastsep . $text if defined $lastsep;
12412            
12413 125         447 $expectation->failed();
12414 125 50       560 Parse::RecDescent::_trace(q{<>},
12415             Parse::RecDescent::_tracefirst($text))
12416             if defined $::RD_TRACE;
12417 125         288 last;
12418             }
12419 75 50       189 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
12420             . $_tok . q{])},
12421             Parse::RecDescent::_tracefirst($text))
12422             if defined $::RD_TRACE;
12423 75         200 push @item, $item{__STRING1__}=$_tok;
12424            
12425              
12426 75 50       189 Parse::RecDescent::_trace(q{Trying subrule: [part]},
12427             Parse::RecDescent::_tracefirst($text),
12428             q{subpart},
12429             $tracelevel)
12430             if defined $::RD_TRACE;
12431 1     1   9 if (1) { no strict qw{refs};
  1         3  
  1         801  
  75         139  
12432 75         196 $expectation->is(q{part})->at($text);
12433 75 50   75   904 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::part($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  75         151  
12434             {
12435            
12436 0 0       0 Parse::RecDescent::_trace(q{<>},
12437             Parse::RecDescent::_tracefirst($text),
12438             q{subpart},
12439             $tracelevel)
12440             if defined $::RD_TRACE;
12441 0         0 $expectation->failed();
12442 0         0 last;
12443             }
12444 75 50       277 Parse::RecDescent::_trace(q{>>Matched subrule: [part]<< (return value: [}
12445             . $_tok . q{]},
12446              
12447             Parse::RecDescent::_tracefirst($text),
12448             q{subpart},
12449             $tracelevel)
12450             if defined $::RD_TRACE;
12451 75         171 $item{q{part}} = $_tok;
12452 75         129 push @item, $_tok;
12453            
12454             }
12455              
12456 75 50       165 Parse::RecDescent::_trace(q{Trying terminal: [')']},
12457             Parse::RecDescent::_tracefirst($text),
12458             q{subpart},
12459             $tracelevel)
12460             if defined $::RD_TRACE;
12461 75         124 undef $lastsep;
12462 75         233 $expectation->is(q{')'})->at($text);
12463            
12464              
12465 75 50 33     997 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and
  75 50 33     589  
  75   33     148  
  75         415  
12466             substr($text,0,length($_tok)) eq $_tok and
12467 75         164 do { substr($text,0,length($_tok)) = ""; 1; }
  75         222  
12468             )
12469             {
12470 0 0       0 $text = $lastsep . $text if defined $lastsep;
12471            
12472 0         0 $expectation->failed();
12473 0 0       0 Parse::RecDescent::_trace(q{<>},
12474             Parse::RecDescent::_tracefirst($text))
12475             if defined $::RD_TRACE;
12476 0         0 last;
12477             }
12478 75 50       209 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
12479             . $_tok . q{])},
12480             Parse::RecDescent::_tracefirst($text))
12481             if defined $::RD_TRACE;
12482 75         188 push @item, $item{__STRING2__}=$_tok;
12483            
12484              
12485 75 50       182 Parse::RecDescent::_trace(q{Trying action},
12486             Parse::RecDescent::_tracefirst($text),
12487             q{subpart},
12488             $tracelevel)
12489             if defined $::RD_TRACE;
12490            
12491              
12492 75 50       160 $_tok = ($_noactions) ? 0 : do {$return = $item{part}};
  75         151  
12493 75 50       167 unless (defined $_tok)
12494             {
12495 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
12496             if defined $::RD_TRACE;
12497 0         0 last;
12498             }
12499 75 50       151 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
12500             . $_tok . q{])},
12501             Parse::RecDescent::_tracefirst($text))
12502             if defined $::RD_TRACE;
12503 75         147 push @item, $_tok;
12504 75         144 $item{__ACTION1__}=$_tok;
12505            
12506              
12507            
12508              
12509 75 50       176 Parse::RecDescent::_trace(q{Trying directive: []},
12510             Parse::RecDescent::_tracefirst($text),
12511             q{subpart},
12512             $tracelevel)
12513             if defined $::RD_TRACE;
12514 75     75   114 $_tok = do { push @{$thisparser->{deferred}}, sub { ++$subpartCount; }; };
  75         106  
  75         436  
  75         313  
12515 75 50       201 if (defined($_tok))
12516             {
12517 75 50       169 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
12518             . $_tok . q{])},
12519             Parse::RecDescent::_tracefirst($text))
12520             if defined $::RD_TRACE;
12521             }
12522             else
12523             {
12524 0 0       0 Parse::RecDescent::_trace(q{<>},
12525             Parse::RecDescent::_tracefirst($text))
12526             if defined $::RD_TRACE;
12527             }
12528            
12529 75 50       177 last unless defined $_tok;
12530 75         174 push @item, $item{__DIRECTIVE1__}=$_tok;
12531            
12532              
12533 75 50       145 Parse::RecDescent::_trace(q{>>Matched production: ['(' part ')' ]<<},
12534             Parse::RecDescent::_tracefirst($text),
12535             q{subpart},
12536             $tracelevel)
12537             if defined $::RD_TRACE;
12538              
12539              
12540              
12541 75         107 $_matched = 1;
12542 75         173 last;
12543             }
12544              
12545             splice
12546 200 100       467 @{$thisparser->{deferred}}, $def_at unless $_matched;
  125         325  
12547            
12548 200 100 66     626 unless ( $_matched || defined($score) )
12549             {
12550 125         196 splice @{$thisparser->{deferred}}, $def_at;
  125         230  
12551            
12552              
12553 125         245 $_[1] = $text; # NOT SURE THIS IS NEEDED
12554 125 50       240 Parse::RecDescent::_trace(q{<>},
12555             Parse::RecDescent::_tracefirst($_[1]),
12556             q{subpart},
12557             $tracelevel)
12558             if defined $::RD_TRACE;
12559 125         650 return undef;
12560             }
12561 75 50 33     228 if (!defined($return) && defined($score))
12562             {
12563 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
12564             q{subpart},
12565             $tracelevel)
12566             if defined $::RD_TRACE;
12567 0         0 $return = $score_return;
12568             }
12569 75         103 splice @{$thisparser->{errors}}, $err_at;
  75         158  
12570 75 50       170 $return = $item[$#item] unless defined $return;
12571 75 50       190 if (defined $::RD_TRACE)
12572             {
12573 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
12574             $return . q{])}, "",
12575             q{subpart},
12576             $tracelevel);
12577 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
12578             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
12579             Parse::RecDescent::_tracefirst($text),
12580             , q{subpart},
12581             $tracelevel)
12582             }
12583 75         224 $_[1] = $text;
12584 75         662 return $return;
12585             }
12586              
12587             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
12588             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::textlines
12589             {
12590 62     62   1032 my $thisparser = $_[0];
12591 1     1   8 use vars q{$tracelevel};
  1         2  
  1         361  
12592 62   50     160 local $tracelevel = ($tracelevel||0)+1;
12593 62         99 $ERRORS = 0;
12594 62         135 my $thisrule = $thisparser->{"rules"}{"textlines"};
12595              
12596 62 50       221 Parse::RecDescent::_trace(q{Trying rule: [textlines]},
12597             Parse::RecDescent::_tracefirst($_[1]),
12598             q{textlines},
12599             $tracelevel)
12600             if defined $::RD_TRACE;
12601              
12602 62         101 my $def_at = @{$thisparser->{deferred}};
  62         124  
12603 62         112 my $err_at = @{$thisparser->{errors}};
  62         125  
12604              
12605 62         149 my $score;
12606             my $score_return;
12607 62         0 my $_tok;
12608 62         110 my $return = undef;
12609 62         95 my $_matched=0;
12610 62         96 my $commit=0;
12611 62         91 my @item = ();
12612 62         96 my %item = ();
12613 62         130 my $repeating = $_[2];
12614 62         111 my $_noactions = $_[3];
12615 62 50       120 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  62         93  
  62         124  
12616 62         117 my $_itempos = $_[5];
12617 62 50       157 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
12618 62         151 my $text;
12619             my $lastsep;
12620 62         0 my $current_match;
12621 62         201 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or NUMBER});
12622 62         436 $expectation->at($_[1]);
12623            
12624 62         263 my $thisline;
12625 62         239 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
12626              
12627            
12628              
12629 62   33     580 while (!$_matched && !$commit)
12630             {
12631            
12632 62 50       168 Parse::RecDescent::_trace(q{Trying production: [NIL]},
12633             Parse::RecDescent::_tracefirst($_[1]),
12634             q{textlines},
12635             $tracelevel)
12636             if defined $::RD_TRACE;
12637 62         178 my $thisprod = $thisrule->{"prods"}[0];
12638 62         124 $text = $_[1];
12639 62         100 my $_savetext;
12640 62         122 @item = (q{textlines});
12641 62         120 %item = (__RULE__ => q{textlines});
12642 62         102 my $repcount = 0;
12643              
12644              
12645 62 50       166 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
12646             Parse::RecDescent::_tracefirst($text),
12647             q{textlines},
12648             $tracelevel)
12649             if defined $::RD_TRACE;
12650 1     1   8 if (1) { no strict qw{refs};
  1         3  
  1         302  
  62         100  
12651 62         141 $expectation->is(q{})->at($text);
12652 62 50   62   601 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  62         123  
12653             {
12654            
12655 62 50       141 Parse::RecDescent::_trace(q{<>},
12656             Parse::RecDescent::_tracefirst($text),
12657             q{textlines},
12658             $tracelevel)
12659             if defined $::RD_TRACE;
12660 62         169 $expectation->failed();
12661 62         237 last;
12662             }
12663 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
12664             . $_tok . q{]},
12665              
12666             Parse::RecDescent::_tracefirst($text),
12667             q{textlines},
12668             $tracelevel)
12669             if defined $::RD_TRACE;
12670 0         0 $item{q{NIL}} = $_tok;
12671 0         0 push @item, $_tok;
12672            
12673             }
12674              
12675 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
12676             Parse::RecDescent::_tracefirst($text),
12677             q{textlines},
12678             $tracelevel)
12679             if defined $::RD_TRACE;
12680              
12681              
12682              
12683 0         0 $_matched = 1;
12684 0         0 last;
12685             }
12686              
12687             splice
12688 62 50       282 @{$thisparser->{deferred}}, $def_at unless $_matched;
  62         159  
12689            
12690 62   33     241 while (!$_matched && !$commit)
12691             {
12692            
12693 62 50       144 Parse::RecDescent::_trace(q{Trying production: [NUMBER]},
12694             Parse::RecDescent::_tracefirst($_[1]),
12695             q{textlines},
12696             $tracelevel)
12697             if defined $::RD_TRACE;
12698 62         123 my $thisprod = $thisrule->{"prods"}[1];
12699 62         128 $text = $_[1];
12700 62         95 my $_savetext;
12701 62         153 @item = (q{textlines});
12702 62         139 %item = (__RULE__ => q{textlines});
12703 62         104 my $repcount = 0;
12704              
12705              
12706 62 50       127 Parse::RecDescent::_trace(q{Trying subrule: [NUMBER]},
12707             Parse::RecDescent::_tracefirst($text),
12708             q{textlines},
12709             $tracelevel)
12710             if defined $::RD_TRACE;
12711 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         483  
  62         94  
12712 62         163 $expectation->is(q{})->at($text);
12713 62 100   62   588 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NUMBER($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  62         148  
12714             {
12715            
12716 2 50       7 Parse::RecDescent::_trace(q{<>},
12717             Parse::RecDescent::_tracefirst($text),
12718             q{textlines},
12719             $tracelevel)
12720             if defined $::RD_TRACE;
12721 2         8 $expectation->failed();
12722 2         7 last;
12723             }
12724 60 50       253 Parse::RecDescent::_trace(q{>>Matched subrule: [NUMBER]<< (return value: [}
12725             . $_tok . q{]},
12726              
12727             Parse::RecDescent::_tracefirst($text),
12728             q{textlines},
12729             $tracelevel)
12730             if defined $::RD_TRACE;
12731 60         160 $item{q{NUMBER}} = $_tok;
12732 60         117 push @item, $_tok;
12733            
12734             }
12735              
12736 60 50       129 Parse::RecDescent::_trace(q{>>Matched production: [NUMBER]<<},
12737             Parse::RecDescent::_tracefirst($text),
12738             q{textlines},
12739             $tracelevel)
12740             if defined $::RD_TRACE;
12741              
12742              
12743              
12744 60         92 $_matched = 1;
12745 60         133 last;
12746             }
12747              
12748             splice
12749 62 100       132 @{$thisparser->{deferred}}, $def_at unless $_matched;
  2         6  
12750            
12751 62 100 66     163 unless ( $_matched || defined($score) )
12752             {
12753 2         4 splice @{$thisparser->{deferred}}, $def_at;
  2         5  
12754            
12755              
12756 2         4 $_[1] = $text; # NOT SURE THIS IS NEEDED
12757 2 50       6 Parse::RecDescent::_trace(q{<>},
12758             Parse::RecDescent::_tracefirst($_[1]),
12759             q{textlines},
12760             $tracelevel)
12761             if defined $::RD_TRACE;
12762 2         9 return undef;
12763             }
12764 60 50 33     273 if (!defined($return) && defined($score))
12765             {
12766 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
12767             q{textlines},
12768             $tracelevel)
12769             if defined $::RD_TRACE;
12770 0         0 $return = $score_return;
12771             }
12772 60         93 splice @{$thisparser->{errors}}, $err_at;
  60         128  
12773 60 50       172 $return = $item[$#item] unless defined $return;
12774 60 50       148 if (defined $::RD_TRACE)
12775             {
12776 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
12777             $return . q{])}, "",
12778             q{textlines},
12779             $tracelevel);
12780 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
12781             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
12782             Parse::RecDescent::_tracefirst($text),
12783             , q{textlines},
12784             $tracelevel)
12785             }
12786 60         150 $_[1] = $text;
12787 60         306 return $return;
12788             }
12789              
12790             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
12791             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::textmessage
12792             {
12793 94     94   187 my $thisparser = $_[0];
12794 1     1   8 use vars q{$tracelevel};
  1         2  
  1         342  
12795 94   50     257 local $tracelevel = ($tracelevel||0)+1;
12796 94         150 $ERRORS = 0;
12797 94         184 my $thisrule = $thisparser->{"rules"}{"textmessage"};
12798              
12799 94 50       195 Parse::RecDescent::_trace(q{Trying rule: [textmessage]},
12800             Parse::RecDescent::_tracefirst($_[1]),
12801             q{textmessage},
12802             $tracelevel)
12803             if defined $::RD_TRACE;
12804              
12805 94         158 my $def_at = @{$thisparser->{deferred}};
  94         185  
12806 94         139 my $err_at = @{$thisparser->{errors}};
  94         200  
12807              
12808 94         218 my $score;
12809             my $score_return;
12810 94         0 my $_tok;
12811 94         138 my $return = undef;
12812 94         132 my $_matched=0;
12813 94         157 my $commit=0;
12814 94         169 my @item = ();
12815 94         174 my %item = ();
12816 94         135 my $repeating = $_[2];
12817 94         161 my $_noactions = $_[3];
12818 94 50       208 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  94         161  
  94         170  
12819 94         154 my $_itempos = $_[5];
12820 94 50       221 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
12821 94         225 my $text;
12822             my $lastsep;
12823 94         0 my $current_match;
12824 94         256 my $expectation = new Parse::RecDescent::Expectation(q{TEXT});
12825 94         663 $expectation->at($_[1]);
12826            
12827 94         379 my $thisline;
12828 94         669 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
12829              
12830            
12831              
12832 94   33     936 while (!$_matched && !$commit)
12833             {
12834            
12835 94 50       223 Parse::RecDescent::_trace(q{Trying production: [TEXT basicfields textlines bodyMD5 bodydisp bodylang bodyextra bodyextensions]},
12836             Parse::RecDescent::_tracefirst($_[1]),
12837             q{textmessage},
12838             $tracelevel)
12839             if defined $::RD_TRACE;
12840 94         186 my $thisprod = $thisrule->{"prods"}[0];
12841 94         183 $text = $_[1];
12842 94         213 my $_savetext;
12843 94         178 @item = (q{textmessage});
12844 94         181 %item = (__RULE__ => q{textmessage});
12845 94         137 my $repcount = 0;
12846              
12847              
12848 94 50       207 Parse::RecDescent::_trace(q{Trying subrule: [TEXT]},
12849             Parse::RecDescent::_tracefirst($text),
12850             q{textmessage},
12851             $tracelevel)
12852             if defined $::RD_TRACE;
12853 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         471  
  94         134  
12854 94         231 $expectation->is(q{})->at($text);
12855 94 100   94   851 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::TEXT($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  94         235  
12856             {
12857            
12858 53 50       130 Parse::RecDescent::_trace(q{<>},
12859             Parse::RecDescent::_tracefirst($text),
12860             q{textmessage},
12861             $tracelevel)
12862             if defined $::RD_TRACE;
12863 53         209 $expectation->failed();
12864 53         189 last;
12865             }
12866 41 50       168 Parse::RecDescent::_trace(q{>>Matched subrule: [TEXT]<< (return value: [}
12867             . $_tok . q{]},
12868              
12869             Parse::RecDescent::_tracefirst($text),
12870             q{textmessage},
12871             $tracelevel)
12872             if defined $::RD_TRACE;
12873 41         111 $item{q{TEXT}} = $_tok;
12874 41         84 push @item, $_tok;
12875            
12876             }
12877              
12878            
12879              
12880 41 50       96 Parse::RecDescent::_trace(q{Trying directive: []},
12881             Parse::RecDescent::_tracefirst($text),
12882             q{textmessage},
12883             $tracelevel)
12884             if defined $::RD_TRACE;
12885 41         70 $_tok = do { $commit = 1 };
  41         75  
12886 41 50       109 if (defined($_tok))
12887             {
12888 41 50       97 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
12889             . $_tok . q{])},
12890             Parse::RecDescent::_tracefirst($text))
12891             if defined $::RD_TRACE;
12892             }
12893             else
12894             {
12895 0 0       0 Parse::RecDescent::_trace(q{<>},
12896             Parse::RecDescent::_tracefirst($text))
12897             if defined $::RD_TRACE;
12898             }
12899            
12900 41 50       86 last unless defined $_tok;
12901 41         96 push @item, $item{__DIRECTIVE1__}=$_tok;
12902            
12903              
12904 41 50       97 Parse::RecDescent::_trace(q{Trying subrule: [basicfields]},
12905             Parse::RecDescent::_tracefirst($text),
12906             q{textmessage},
12907             $tracelevel)
12908             if defined $::RD_TRACE;
12909 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         1342  
  41         58  
12910 41         128 $expectation->is(q{basicfields})->at($text);
12911 41 50   41   495 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::basicfields($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  41         86  
12912             {
12913            
12914 0 0       0 Parse::RecDescent::_trace(q{<>},
12915             Parse::RecDescent::_tracefirst($text),
12916             q{textmessage},
12917             $tracelevel)
12918             if defined $::RD_TRACE;
12919 0         0 $expectation->failed();
12920 0         0 last;
12921             }
12922 41 50       154 Parse::RecDescent::_trace(q{>>Matched subrule: [basicfields]<< (return value: [}
12923             . $_tok . q{]},
12924              
12925             Parse::RecDescent::_tracefirst($text),
12926             q{textmessage},
12927             $tracelevel)
12928             if defined $::RD_TRACE;
12929 41         127 $item{q{basicfields}} = $_tok;
12930 41         97 push @item, $_tok;
12931            
12932             }
12933              
12934 41 50       90 Parse::RecDescent::_trace(q{Trying repeated subrule: [textlines]},
12935             Parse::RecDescent::_tracefirst($text),
12936             q{textmessage},
12937             $tracelevel)
12938             if defined $::RD_TRACE;
12939 41         140 $expectation->is(q{textlines})->at($text);
12940            
12941 41 50   41   476 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::textlines, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  41         100  
12942             {
12943 0 0       0 Parse::RecDescent::_trace(q{<>},
12944             Parse::RecDescent::_tracefirst($text),
12945             q{textmessage},
12946             $tracelevel)
12947             if defined $::RD_TRACE;
12948 0         0 last;
12949             }
12950 41 50       757 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [textlines]<< (}
12951             . @$_tok . q{ times)},
12952              
12953             Parse::RecDescent::_tracefirst($text),
12954             q{textmessage},
12955             $tracelevel)
12956             if defined $::RD_TRACE;
12957 41         100 $item{q{textlines(?)}} = $_tok;
12958 41         104 push @item, $_tok;
12959            
12960              
12961              
12962 41 50       101 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyMD5]},
12963             Parse::RecDescent::_tracefirst($text),
12964             q{textmessage},
12965             $tracelevel)
12966             if defined $::RD_TRACE;
12967 41         126 $expectation->is(q{bodyMD5})->at($text);
12968            
12969 41 50   41   479 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyMD5, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  41         92  
12970             {
12971 0 0       0 Parse::RecDescent::_trace(q{<>},
12972             Parse::RecDescent::_tracefirst($text),
12973             q{textmessage},
12974             $tracelevel)
12975             if defined $::RD_TRACE;
12976 0         0 last;
12977             }
12978 41 50       781 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyMD5]<< (}
12979             . @$_tok . q{ times)},
12980              
12981             Parse::RecDescent::_tracefirst($text),
12982             q{textmessage},
12983             $tracelevel)
12984             if defined $::RD_TRACE;
12985 41         96 $item{q{bodyMD5(?)}} = $_tok;
12986 41         90 push @item, $_tok;
12987            
12988              
12989              
12990 41 50       101 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodydisp]},
12991             Parse::RecDescent::_tracefirst($text),
12992             q{textmessage},
12993             $tracelevel)
12994             if defined $::RD_TRACE;
12995 41         124 $expectation->is(q{bodydisp})->at($text);
12996            
12997 41 50   41   459 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydisp, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  41         85  
12998             {
12999 0 0       0 Parse::RecDescent::_trace(q{<>},
13000             Parse::RecDescent::_tracefirst($text),
13001             q{textmessage},
13002             $tracelevel)
13003             if defined $::RD_TRACE;
13004 0         0 last;
13005             }
13006 41 50       688 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodydisp]<< (}
13007             . @$_tok . q{ times)},
13008              
13009             Parse::RecDescent::_tracefirst($text),
13010             q{textmessage},
13011             $tracelevel)
13012             if defined $::RD_TRACE;
13013 41         103 $item{q{bodydisp(?)}} = $_tok;
13014 41         84 push @item, $_tok;
13015            
13016              
13017              
13018 41 50       91 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodylang]},
13019             Parse::RecDescent::_tracefirst($text),
13020             q{textmessage},
13021             $tracelevel)
13022             if defined $::RD_TRACE;
13023 41         132 $expectation->is(q{bodylang})->at($text);
13024            
13025 41 50   41   467 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodylang, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  41         84  
13026             {
13027 0 0       0 Parse::RecDescent::_trace(q{<>},
13028             Parse::RecDescent::_tracefirst($text),
13029             q{textmessage},
13030             $tracelevel)
13031             if defined $::RD_TRACE;
13032 0         0 last;
13033             }
13034 41 50       662 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodylang]<< (}
13035             . @$_tok . q{ times)},
13036              
13037             Parse::RecDescent::_tracefirst($text),
13038             q{textmessage},
13039             $tracelevel)
13040             if defined $::RD_TRACE;
13041 41         107 $item{q{bodylang(?)}} = $_tok;
13042 41         81 push @item, $_tok;
13043            
13044              
13045              
13046 41 50       90 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyextra]},
13047             Parse::RecDescent::_tracefirst($text),
13048             q{textmessage},
13049             $tracelevel)
13050             if defined $::RD_TRACE;
13051 41         113 $expectation->is(q{bodyextra})->at($text);
13052            
13053 41 50   41   457 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextra, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
  41         83  
13054             {
13055 0 0       0 Parse::RecDescent::_trace(q{<>},
13056             Parse::RecDescent::_tracefirst($text),
13057             q{textmessage},
13058             $tracelevel)
13059             if defined $::RD_TRACE;
13060 0         0 last;
13061             }
13062 41 50       694 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyextra]<< (}
13063             . @$_tok . q{ times)},
13064              
13065             Parse::RecDescent::_tracefirst($text),
13066             q{textmessage},
13067             $tracelevel)
13068             if defined $::RD_TRACE;
13069 41         105 $item{q{bodyextra(?)}} = $_tok;
13070 41         78 push @item, $_tok;
13071            
13072              
13073              
13074 41 50       115 Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyextensions]},
13075             Parse::RecDescent::_tracefirst($text),
13076             q{textmessage},
13077             $tracelevel)
13078             if defined $::RD_TRACE;
13079 41         116 $expectation->is(q{bodyextensions})->at($text);
13080            
13081 41 50   45   507 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextensions, 0, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
  45         97  
13082             {
13083 0 0       0 Parse::RecDescent::_trace(q{<>},
13084             Parse::RecDescent::_tracefirst($text),
13085             q{textmessage},
13086             $tracelevel)
13087             if defined $::RD_TRACE;
13088 0         0 last;
13089             }
13090 41 50       583 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyextensions]<< (}
13091             . @$_tok . q{ times)},
13092              
13093             Parse::RecDescent::_tracefirst($text),
13094             q{textmessage},
13095             $tracelevel)
13096             if defined $::RD_TRACE;
13097 41         116 $item{q{bodyextensions(s?)}} = $_tok;
13098 41         83 push @item, $_tok;
13099            
13100              
13101              
13102 41 50       86 Parse::RecDescent::_trace(q{Trying action},
13103             Parse::RecDescent::_tracefirst($text),
13104             q{textmessage},
13105             $tracelevel)
13106             if defined $::RD_TRACE;
13107            
13108              
13109 41 50       88 $_tok = ($_noactions) ? 0 : do {
13110 41   50     130 $return = $item{basicfields} || {};
13111 41         108 $return->{bodytype} = 'TEXT';
13112 41         129 take_optional_items($return, \%item
13113             , qw/textlines bodyMD5 bodydisp bodylang bodyextra/);
13114 41         112 1;
13115             };
13116 41 50       120 unless (defined $_tok)
13117             {
13118 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
13119             if defined $::RD_TRACE;
13120 0         0 last;
13121             }
13122 41 50       106 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
13123             . $_tok . q{])},
13124             Parse::RecDescent::_tracefirst($text))
13125             if defined $::RD_TRACE;
13126 41         88 push @item, $_tok;
13127 41         81 $item{__ACTION1__}=$_tok;
13128            
13129              
13130 41 50       87 Parse::RecDescent::_trace(q{>>Matched production: [TEXT basicfields textlines bodyMD5 bodydisp bodylang bodyextra bodyextensions]<<},
13131             Parse::RecDescent::_tracefirst($text),
13132             q{textmessage},
13133             $tracelevel)
13134             if defined $::RD_TRACE;
13135              
13136              
13137              
13138 41         65 $_matched = 1;
13139 41         78 last;
13140             }
13141              
13142             splice
13143 94 100       291 @{$thisparser->{deferred}}, $def_at unless $_matched;
  53         160  
13144            
13145 94 100 66     292 unless ( $_matched || defined($score) )
13146             {
13147 53         91 splice @{$thisparser->{deferred}}, $def_at;
  53         94  
13148            
13149              
13150 53         87 $_[1] = $text; # NOT SURE THIS IS NEEDED
13151 53 50       116 Parse::RecDescent::_trace(q{<>},
13152             Parse::RecDescent::_tracefirst($_[1]),
13153             q{textmessage},
13154             $tracelevel)
13155             if defined $::RD_TRACE;
13156 53         262 return undef;
13157             }
13158 41 50 33     140 if (!defined($return) && defined($score))
13159             {
13160 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
13161             q{textmessage},
13162             $tracelevel)
13163             if defined $::RD_TRACE;
13164 0         0 $return = $score_return;
13165             }
13166 41         74 splice @{$thisparser->{errors}}, $err_at;
  41         92  
13167 41 50       102 $return = $item[$#item] unless defined $return;
13168 41 50       111 if (defined $::RD_TRACE)
13169             {
13170 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
13171             $return . q{])}, "",
13172             q{textmessage},
13173             $tracelevel);
13174 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
13175             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
13176             Parse::RecDescent::_tracefirst($text),
13177             , q{textmessage},
13178             $tracelevel)
13179             }
13180 41         80 $_[1] = $text;
13181 41         331 return $return;
13182             }
13183              
13184             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
13185             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::to
13186             {
13187 24     24   51 my $thisparser = $_[0];
13188 1     1   9 use vars q{$tracelevel};
  1         3  
  1         363  
13189 24   50     74 local $tracelevel = ($tracelevel||0)+1;
13190 24         43 $ERRORS = 0;
13191 24         68 my $thisrule = $thisparser->{"rules"}{"to"};
13192              
13193 24 50       57 Parse::RecDescent::_trace(q{Trying rule: [to]},
13194             Parse::RecDescent::_tracefirst($_[1]),
13195             q{to},
13196             $tracelevel)
13197             if defined $::RD_TRACE;
13198              
13199 24         45 my $def_at = @{$thisparser->{deferred}};
  24         64  
13200 24         69 my $err_at = @{$thisparser->{errors}};
  24         70  
13201              
13202 24         73 my $score;
13203             my $score_return;
13204 24         0 my $_tok;
13205 24         48 my $return = undef;
13206 24         36 my $_matched=0;
13207 24         47 my $commit=0;
13208 24         50 my @item = ();
13209 24         59 my %item = ();
13210 24         44 my $repeating = $_[2];
13211 24         43 my $_noactions = $_[3];
13212 24 50       56 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  24         39  
  24         48  
13213 24         43 my $_itempos = $_[5];
13214 24 50       78 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
13215 24         77 my $text;
13216             my $lastsep;
13217 24         0 my $current_match;
13218 24         67 my $expectation = new Parse::RecDescent::Expectation(q{ADDRESSES});
13219 24         171 $expectation->at($_[1]);
13220            
13221 24         107 my $thisline;
13222 24         96 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
13223              
13224            
13225              
13226 24   33     228 while (!$_matched && !$commit)
13227             {
13228            
13229 24 50       65 Parse::RecDescent::_trace(q{Trying production: [ADDRESSES]},
13230             Parse::RecDescent::_tracefirst($_[1]),
13231             q{to},
13232             $tracelevel)
13233             if defined $::RD_TRACE;
13234 24         78 my $thisprod = $thisrule->{"prods"}[0];
13235 24         47 $text = $_[1];
13236 24         42 my $_savetext;
13237 24         50 @item = (q{to});
13238 24         61 %item = (__RULE__ => q{to});
13239 24         46 my $repcount = 0;
13240              
13241              
13242 24 50       77 Parse::RecDescent::_trace(q{Trying subrule: [ADDRESSES]},
13243             Parse::RecDescent::_tracefirst($text),
13244             q{to},
13245             $tracelevel)
13246             if defined $::RD_TRACE;
13247 1     1   8 if (1) { no strict qw{refs};
  1         17  
  1         442  
  24         36  
13248 24         72 $expectation->is(q{})->at($text);
13249 24 50   24   258 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  24         80  
13250             {
13251            
13252 0 0       0 Parse::RecDescent::_trace(q{<>},
13253             Parse::RecDescent::_tracefirst($text),
13254             q{to},
13255             $tracelevel)
13256             if defined $::RD_TRACE;
13257 0         0 $expectation->failed();
13258 0         0 last;
13259             }
13260 24 50       110 Parse::RecDescent::_trace(q{>>Matched subrule: [ADDRESSES]<< (return value: [}
13261             . $_tok . q{]},
13262              
13263             Parse::RecDescent::_tracefirst($text),
13264             q{to},
13265             $tracelevel)
13266             if defined $::RD_TRACE;
13267 24         59 $item{q{ADDRESSES}} = $_tok;
13268 24         53 push @item, $_tok;
13269            
13270             }
13271              
13272 24 50       60 Parse::RecDescent::_trace(q{>>Matched production: [ADDRESSES]<<},
13273             Parse::RecDescent::_tracefirst($text),
13274             q{to},
13275             $tracelevel)
13276             if defined $::RD_TRACE;
13277              
13278              
13279              
13280 24         41 $_matched = 1;
13281 24         42 last;
13282             }
13283              
13284             splice
13285 24 50       68 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
13286            
13287 24 50 33     78 unless ( $_matched || defined($score) )
13288             {
13289 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
13290            
13291              
13292 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
13293 0 0       0 Parse::RecDescent::_trace(q{<>},
13294             Parse::RecDescent::_tracefirst($_[1]),
13295             q{to},
13296             $tracelevel)
13297             if defined $::RD_TRACE;
13298 0         0 return undef;
13299             }
13300 24 50 33     104 if (!defined($return) && defined($score))
13301             {
13302 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
13303             q{to},
13304             $tracelevel)
13305             if defined $::RD_TRACE;
13306 0         0 $return = $score_return;
13307             }
13308 24         47 splice @{$thisparser->{errors}}, $err_at;
  24         66  
13309 24 50       79 $return = $item[$#item] unless defined $return;
13310 24 50       60 if (defined $::RD_TRACE)
13311             {
13312 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
13313             $return . q{])}, "",
13314             q{to},
13315             $tracelevel);
13316 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
13317             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
13318             Parse::RecDescent::_tracefirst($text),
13319             , q{to},
13320             $tracelevel)
13321             }
13322 24         62 $_[1] = $text;
13323 24         134 return $return;
13324             }
13325              
13326             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
13327             sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::value
13328             {
13329 132     132   223 my $thisparser = $_[0];
13330 1     1   9 use vars q{$tracelevel};
  1         2  
  1         359  
13331 132   50     336 local $tracelevel = ($tracelevel||0)+1;
13332 132         193 $ERRORS = 0;
13333 132         259 my $thisrule = $thisparser->{"rules"}{"value"};
13334              
13335 132 50       338 Parse::RecDescent::_trace(q{Trying rule: [value]},
13336             Parse::RecDescent::_tracefirst($_[1]),
13337             q{value},
13338             $tracelevel)
13339             if defined $::RD_TRACE;
13340              
13341 132         182 my $def_at = @{$thisparser->{deferred}};
  132         267  
13342 132         192 my $err_at = @{$thisparser->{errors}};
  132         221  
13343              
13344 132         328 my $score;
13345             my $score_return;
13346 132         0 my $_tok;
13347 132         227 my $return = undef;
13348 132         200 my $_matched=0;
13349 132         193 my $commit=0;
13350 132         241 my @item = ();
13351 132         195 my %item = ();
13352 132         239 my $repeating = $_[2];
13353 132         193 my $_noactions = $_[3];
13354 132 50       286 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  132         214  
  132         260  
13355 132         230 my $_itempos = $_[5];
13356 132 50       326 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
13357 132         306 my $text;
13358             my $lastsep;
13359 132         0 my $current_match;
13360 132         375 my $expectation = new Parse::RecDescent::Expectation(q{NIL, or NUMBER, or STRING, or KVPAIRS});
13361 132         1038 $expectation->at($_[1]);
13362            
13363 132         535 my $thisline;
13364 132         487 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
13365              
13366            
13367              
13368 132   33     1071 while (!$_matched && !$commit)
13369             {
13370            
13371 132 50       302 Parse::RecDescent::_trace(q{Trying production: [NIL]},
13372             Parse::RecDescent::_tracefirst($_[1]),
13373             q{value},
13374             $tracelevel)
13375             if defined $::RD_TRACE;
13376 132         278 my $thisprod = $thisrule->{"prods"}[0];
13377 132         227 $text = $_[1];
13378 132         211 my $_savetext;
13379 132         248 @item = (q{value});
13380 132         258 %item = (__RULE__ => q{value});
13381 132         203 my $repcount = 0;
13382              
13383              
13384 132 50       271 Parse::RecDescent::_trace(q{Trying subrule: [NIL]},
13385             Parse::RecDescent::_tracefirst($text),
13386             q{value},
13387             $tracelevel)
13388             if defined $::RD_TRACE;
13389 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         286  
  132         180  
13390 132         306 $expectation->is(q{})->at($text);
13391 132 100   132   1223 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  132         231  
13392             {
13393            
13394 120 50       242 Parse::RecDescent::_trace(q{<>},
13395             Parse::RecDescent::_tracefirst($text),
13396             q{value},
13397             $tracelevel)
13398             if defined $::RD_TRACE;
13399 120         339 $expectation->failed();
13400 120         416 last;
13401             }
13402 12 50       49 Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [}
13403             . $_tok . q{]},
13404              
13405             Parse::RecDescent::_tracefirst($text),
13406             q{value},
13407             $tracelevel)
13408             if defined $::RD_TRACE;
13409 12         33 $item{q{NIL}} = $_tok;
13410 12         31 push @item, $_tok;
13411            
13412             }
13413              
13414 12 50       36 Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<},
13415             Parse::RecDescent::_tracefirst($text),
13416             q{value},
13417             $tracelevel)
13418             if defined $::RD_TRACE;
13419              
13420              
13421              
13422 12         22 $_matched = 1;
13423 12         22 last;
13424             }
13425              
13426             splice
13427 132 100       440 @{$thisparser->{deferred}}, $def_at unless $_matched;
  120         246  
13428            
13429 132   66     594 while (!$_matched && !$commit)
13430             {
13431            
13432 120 50       267 Parse::RecDescent::_trace(q{Trying production: [NUMBER]},
13433             Parse::RecDescent::_tracefirst($_[1]),
13434             q{value},
13435             $tracelevel)
13436             if defined $::RD_TRACE;
13437 120         237 my $thisprod = $thisrule->{"prods"}[1];
13438 120         216 $text = $_[1];
13439 120         172 my $_savetext;
13440 120         296 @item = (q{value});
13441 120         274 %item = (__RULE__ => q{value});
13442 120         180 my $repcount = 0;
13443              
13444              
13445 120 50       337 Parse::RecDescent::_trace(q{Trying subrule: [NUMBER]},
13446             Parse::RecDescent::_tracefirst($text),
13447             q{value},
13448             $tracelevel)
13449             if defined $::RD_TRACE;
13450 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         316  
  120         226  
13451 120         305 $expectation->is(q{})->at($text);
13452 120 50   120   1166 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NUMBER($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  120         223  
13453             {
13454            
13455 120 50       265 Parse::RecDescent::_trace(q{<>},
13456             Parse::RecDescent::_tracefirst($text),
13457             q{value},
13458             $tracelevel)
13459             if defined $::RD_TRACE;
13460 120         429 $expectation->failed();
13461 120         416 last;
13462             }
13463 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [NUMBER]<< (return value: [}
13464             . $_tok . q{]},
13465              
13466             Parse::RecDescent::_tracefirst($text),
13467             q{value},
13468             $tracelevel)
13469             if defined $::RD_TRACE;
13470 0         0 $item{q{NUMBER}} = $_tok;
13471 0         0 push @item, $_tok;
13472            
13473             }
13474              
13475 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [NUMBER]<<},
13476             Parse::RecDescent::_tracefirst($text),
13477             q{value},
13478             $tracelevel)
13479             if defined $::RD_TRACE;
13480              
13481              
13482              
13483 0         0 $_matched = 1;
13484 0         0 last;
13485             }
13486              
13487             splice
13488 132 100       496 @{$thisparser->{deferred}}, $def_at unless $_matched;
  120         260  
13489            
13490 132   66     468 while (!$_matched && !$commit)
13491             {
13492            
13493 120 50       254 Parse::RecDescent::_trace(q{Trying production: [STRING]},
13494             Parse::RecDescent::_tracefirst($_[1]),
13495             q{value},
13496             $tracelevel)
13497             if defined $::RD_TRACE;
13498 120         204 my $thisprod = $thisrule->{"prods"}[2];
13499 120         227 $text = $_[1];
13500 120         193 my $_savetext;
13501 120         275 @item = (q{value});
13502 120         275 %item = (__RULE__ => q{value});
13503 120         181 my $repcount = 0;
13504              
13505              
13506 120 50       557 Parse::RecDescent::_trace(q{Trying subrule: [STRING]},
13507             Parse::RecDescent::_tracefirst($text),
13508             q{value},
13509             $tracelevel)
13510             if defined $::RD_TRACE;
13511 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         301  
  120         166  
13512 120         275 $expectation->is(q{})->at($text);
13513 120 100   120   1209 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  120         257  
13514             {
13515            
13516 16 50       56 Parse::RecDescent::_trace(q{<>},
13517             Parse::RecDescent::_tracefirst($text),
13518             q{value},
13519             $tracelevel)
13520             if defined $::RD_TRACE;
13521 16         54 $expectation->failed();
13522 16         60 last;
13523             }
13524 104 50       375 Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [}
13525             . $_tok . q{]},
13526              
13527             Parse::RecDescent::_tracefirst($text),
13528             q{value},
13529             $tracelevel)
13530             if defined $::RD_TRACE;
13531 104         222 $item{q{STRING}} = $_tok;
13532 104         184 push @item, $_tok;
13533            
13534             }
13535              
13536 104 50       213 Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<},
13537             Parse::RecDescent::_tracefirst($text),
13538             q{value},
13539             $tracelevel)
13540             if defined $::RD_TRACE;
13541              
13542              
13543              
13544 104         155 $_matched = 1;
13545 104         171 last;
13546             }
13547              
13548             splice
13549 132 100       273 @{$thisparser->{deferred}}, $def_at unless $_matched;
  16         37  
13550            
13551 132   66     307 while (!$_matched && !$commit)
13552             {
13553            
13554 16 50       44 Parse::RecDescent::_trace(q{Trying production: [KVPAIRS]},
13555             Parse::RecDescent::_tracefirst($_[1]),
13556             q{value},
13557             $tracelevel)
13558             if defined $::RD_TRACE;
13559 16         35 my $thisprod = $thisrule->{"prods"}[3];
13560 16         37 $text = $_[1];
13561 16         25 my $_savetext;
13562 16         41 @item = (q{value});
13563 16         40 %item = (__RULE__ => q{value});
13564 16         32 my $repcount = 0;
13565              
13566              
13567 16 50       42 Parse::RecDescent::_trace(q{Trying subrule: [KVPAIRS]},
13568             Parse::RecDescent::_tracefirst($text),
13569             q{value},
13570             $tracelevel)
13571             if defined $::RD_TRACE;
13572 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         8731  
  16         28  
13573 16         39 $expectation->is(q{})->at($text);
13574 16 50   16   193 unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::KVPAIRS($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  16         35  
13575             {
13576            
13577 0 0       0 Parse::RecDescent::_trace(q{<>},
13578             Parse::RecDescent::_tracefirst($text),
13579             q{value},
13580             $tracelevel)
13581             if defined $::RD_TRACE;
13582 0         0 $expectation->failed();
13583 0         0 last;
13584             }
13585 16 50       65 Parse::RecDescent::_trace(q{>>Matched subrule: [KVPAIRS]<< (return value: [}
13586             . $_tok . q{]},
13587              
13588             Parse::RecDescent::_tracefirst($text),
13589             q{value},
13590             $tracelevel)
13591             if defined $::RD_TRACE;
13592 16         41 $item{q{KVPAIRS}} = $_tok;
13593 16         35 push @item, $_tok;
13594            
13595             }
13596              
13597 16 50       50 Parse::RecDescent::_trace(q{>>Matched production: [KVPAIRS]<<},
13598             Parse::RecDescent::_tracefirst($text),
13599             q{value},
13600             $tracelevel)
13601             if defined $::RD_TRACE;
13602              
13603              
13604              
13605 16         29 $_matched = 1;
13606 16         29 last;
13607             }
13608              
13609             splice
13610 132 50       301 @{$thisparser->{deferred}}, $def_at unless $_matched;
  0         0  
13611            
13612 132 50 33     275 unless ( $_matched || defined($score) )
13613             {
13614 0         0 splice @{$thisparser->{deferred}}, $def_at;
  0         0  
13615            
13616              
13617 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
13618 0 0       0 Parse::RecDescent::_trace(q{<>},
13619             Parse::RecDescent::_tracefirst($_[1]),
13620             q{value},
13621             $tracelevel)
13622             if defined $::RD_TRACE;
13623 0         0 return undef;
13624             }
13625 132 50 33     456 if (!defined($return) && defined($score))
13626             {
13627 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
13628             q{value},
13629             $tracelevel)
13630             if defined $::RD_TRACE;
13631 0         0 $return = $score_return;
13632             }
13633 132         225 splice @{$thisparser->{errors}}, $err_at;
  132         243  
13634 132 50       337 $return = $item[$#item] unless defined $return;
13635 132 50       258 if (defined $::RD_TRACE)
13636             {
13637 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
13638             $return . q{])}, "",
13639             q{value},
13640             $tracelevel);
13641 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
13642             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
13643             Parse::RecDescent::_tracefirst($text),
13644             , q{value},
13645             $tracelevel)
13646             }
13647 132         300 $_[1] = $text;
13648 132         664 return $return;
13649             }
13650             }
13651 1     1 0 1021 package Mail::IMAPClient::BodyStructure::Parse; sub new { my $self = bless( {
13652             '_AUTOACTION' => undef,
13653             '_AUTOTREE' => undef,
13654             '_check' => {
13655             'itempos' => '',
13656             'prevcolumn' => '',
13657             'prevline' => '',
13658             'prevoffset' => '',
13659             'thiscolumn' => '',
13660             'thisoffset' => ''
13661             },
13662             'deferrable' => 1,
13663             'localvars' => '',
13664             'namespace' => 'Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse',
13665             'rules' => {
13666             'ADDRESSES' => bless( {
13667             'calls' => [
13668             'NIL',
13669             'RFCNONCOMPLY',
13670             'addressstruct'
13671             ],
13672             'changed' => 0,
13673             'impcount' => 0,
13674             'line' => 96,
13675             'name' => 'ADDRESSES',
13676             'opcount' => 0,
13677             'prods' => [
13678             bless( {
13679             'actcount' => 0,
13680             'dircount' => 0,
13681             'error' => undef,
13682             'items' => [
13683             bless( {
13684             'argcode' => undef,
13685             'implicit' => undef,
13686             'line' => 96,
13687             'lookahead' => 0,
13688             'matchrule' => 0,
13689             'subrule' => 'NIL'
13690             }, 'Parse::RecDescent::Subrule' )
13691             ],
13692             'line' => undef,
13693             'number' => 0,
13694             'patcount' => 0,
13695             'strcount' => 0,
13696             'uncommit' => undef
13697             }, 'Parse::RecDescent::Production' ),
13698             bless( {
13699             'actcount' => 0,
13700             'dircount' => 0,
13701             'error' => undef,
13702             'items' => [
13703             bless( {
13704             'argcode' => undef,
13705             'implicit' => undef,
13706             'line' => 96,
13707             'lookahead' => 0,
13708             'matchrule' => 0,
13709             'subrule' => 'RFCNONCOMPLY'
13710             }, 'Parse::RecDescent::Subrule' )
13711             ],
13712             'line' => 96,
13713             'number' => 1,
13714             'patcount' => 0,
13715             'strcount' => 0,
13716             'uncommit' => undef
13717             }, 'Parse::RecDescent::Production' ),
13718             bless( {
13719             'actcount' => 1,
13720             'dircount' => 0,
13721             'error' => undef,
13722             'items' => [
13723             bless( {
13724             'description' => '\'(\'',
13725             'hashname' => '__STRING1__',
13726             'line' => 97,
13727             'lookahead' => 0,
13728             'pattern' => '('
13729             }, 'Parse::RecDescent::InterpLit' ),
13730             bless( {
13731             'argcode' => undef,
13732             'expected' => undef,
13733             'line' => 97,
13734             'lookahead' => 0,
13735             'matchrule' => 0,
13736             'max' => 100000000,
13737             'min' => 1,
13738             'repspec' => 's',
13739             'subrule' => 'addressstruct'
13740             }, 'Parse::RecDescent::Repetition' ),
13741             bless( {
13742             'description' => '\')\'',
13743             'hashname' => '__STRING2__',
13744             'line' => 97,
13745             'lookahead' => 0,
13746             'pattern' => ')'
13747             }, 'Parse::RecDescent::InterpLit' ),
13748             bless( {
13749             'code' => '{ $return = $item{\'addressstruct(s)\'} }',
13750             'hashname' => '__ACTION1__',
13751             'line' => 97,
13752             'lookahead' => 0
13753             }, 'Parse::RecDescent::Action' )
13754             ],
13755             'line' => 97,
13756             'number' => 2,
13757             'patcount' => 0,
13758             'strcount' => 2,
13759             'uncommit' => undef
13760             }, 'Parse::RecDescent::Production' )
13761             ],
13762             'vars' => ''
13763             }, 'Parse::RecDescent::Rule' ),
13764             'BARESTRING' => bless( {
13765             'calls' => [],
13766             'changed' => 0,
13767             'impcount' => 0,
13768             'line' => 43,
13769             'name' => 'BARESTRING',
13770             'opcount' => 0,
13771             'prods' => [
13772             bless( {
13773             'actcount' => 1,
13774             'dircount' => 0,
13775             'error' => undef,
13776             'items' => [
13777             bless( {
13778             'description' => '/^[)(\'"]/',
13779             'hashname' => '__PATTERN1__',
13780             'ldelim' => '/',
13781             'line' => 43,
13782             'lookahead' => -1,
13783             'mod' => '',
13784             'pattern' => '^[)(\'"]',
13785             'rdelim' => '/'
13786             }, 'Parse::RecDescent::Token' ),
13787             bless( {
13788             'description' => '/^(?!\\\\(|\\\\))(?:\\\\\\\\ |\\\\S)+/',
13789             'hashname' => '__PATTERN2__',
13790             'ldelim' => '/',
13791             'line' => 43,
13792             'lookahead' => 0,
13793             'mod' => '',
13794             'pattern' => '^(?!\\(|\\))(?:\\\\ |\\S)+',
13795             'rdelim' => '/'
13796             }, 'Parse::RecDescent::Token' ),
13797             bless( {
13798             'code' => '{ $return = $item{__PATTERN1__} }',
13799             'hashname' => '__ACTION1__',
13800             'line' => 44,
13801             'lookahead' => 0
13802             }, 'Parse::RecDescent::Action' )
13803             ],
13804             'line' => undef,
13805             'number' => 0,
13806             'patcount' => 2,
13807             'strcount' => 0,
13808             'uncommit' => undef
13809             }, 'Parse::RecDescent::Production' )
13810             ],
13811             'vars' => ''
13812             }, 'Parse::RecDescent::Rule' ),
13813             'DOUBLE_QUOTED_STRING' => bless( {
13814             'calls' => [],
13815             'changed' => 0,
13816             'impcount' => 0,
13817             'line' => 41,
13818             'name' => 'DOUBLE_QUOTED_STRING',
13819             'opcount' => 0,
13820             'prods' => [
13821             bless( {
13822             'actcount' => 1,
13823             'dircount' => 0,
13824             'error' => undef,
13825             'items' => [
13826             bless( {
13827             'description' => '\'"\'',
13828             'hashname' => '__STRING1__',
13829             'line' => 41,
13830             'lookahead' => 0,
13831             'pattern' => '"'
13832             }, 'Parse::RecDescent::Literal' ),
13833             bless( {
13834             'description' => '/(?:\\\\\\\\["\\\\\\\\]|[^"])*/',
13835             'hashname' => '__PATTERN1__',
13836             'ldelim' => '/',
13837             'line' => 41,
13838             'lookahead' => 0,
13839             'mod' => '',
13840             'pattern' => '(?:\\\\["\\\\]|[^"])*',
13841             'rdelim' => '/'
13842             }, 'Parse::RecDescent::Token' ),
13843             bless( {
13844             'description' => '\'"\'',
13845             'hashname' => '__STRING2__',
13846             'line' => 41,
13847             'lookahead' => 0,
13848             'pattern' => '"'
13849             }, 'Parse::RecDescent::Literal' ),
13850             bless( {
13851             'code' => '{ $return = $item{__PATTERN1__} }',
13852             'hashname' => '__ACTION1__',
13853             'line' => 41,
13854             'lookahead' => 0
13855             }, 'Parse::RecDescent::Action' )
13856             ],
13857             'line' => undef,
13858             'number' => 0,
13859             'patcount' => 1,
13860             'strcount' => 2,
13861             'uncommit' => undef
13862             }, 'Parse::RecDescent::Production' )
13863             ],
13864             'vars' => ''
13865             }, 'Parse::RecDescent::Rule' ),
13866             'HTML' => bless( {
13867             'calls' => [],
13868             'changed' => 0,
13869             'impcount' => 0,
13870             'line' => 31,
13871             'name' => 'HTML',
13872             'opcount' => 0,
13873             'prods' => [
13874             bless( {
13875             'actcount' => 1,
13876             'dircount' => 0,
13877             'error' => undef,
13878             'items' => [
13879             bless( {
13880             'description' => '/"HTML"|HTML/i',
13881             'hashname' => '__PATTERN1__',
13882             'ldelim' => '/',
13883             'line' => 31,
13884             'lookahead' => 0,
13885             'mod' => 'i',
13886             'pattern' => '"HTML"|HTML',
13887             'rdelim' => '/'
13888             }, 'Parse::RecDescent::Token' ),
13889             bless( {
13890             'code' => '{ $return = "HTML" }',
13891             'hashname' => '__ACTION1__',
13892             'line' => 31,
13893             'lookahead' => 0
13894             }, 'Parse::RecDescent::Action' )
13895             ],
13896             'line' => undef,
13897             'number' => 0,
13898             'patcount' => 1,
13899             'strcount' => 0,
13900             'uncommit' => undef
13901             }, 'Parse::RecDescent::Production' )
13902             ],
13903             'vars' => ''
13904             }, 'Parse::RecDescent::Rule' ),
13905             'KVPAIRS' => bless( {
13906             'calls' => [
13907             'kvpair'
13908             ],
13909             'changed' => 0,
13910             'impcount' => 0,
13911             'line' => 62,
13912             'name' => 'KVPAIRS',
13913             'opcount' => 0,
13914             'prods' => [
13915             bless( {
13916             'actcount' => 1,
13917             'dircount' => 0,
13918             'error' => undef,
13919             'items' => [
13920             bless( {
13921             'description' => '\'(\'',
13922             'hashname' => '__STRING1__',
13923             'line' => 62,
13924             'lookahead' => 0,
13925             'pattern' => '('
13926             }, 'Parse::RecDescent::InterpLit' ),
13927             bless( {
13928             'argcode' => undef,
13929             'expected' => undef,
13930             'line' => 62,
13931             'lookahead' => 0,
13932             'matchrule' => 0,
13933             'max' => 100000000,
13934             'min' => 1,
13935             'repspec' => 's',
13936             'subrule' => 'kvpair'
13937             }, 'Parse::RecDescent::Repetition' ),
13938             bless( {
13939             'description' => '\')\'',
13940             'hashname' => '__STRING2__',
13941             'line' => 62,
13942             'lookahead' => 0,
13943             'pattern' => ')'
13944             }, 'Parse::RecDescent::InterpLit' ),
13945             bless( {
13946             'code' => '{ $return = { map { (%$_) } @{$item{\'kvpair(s)\'}} } }',
13947             'hashname' => '__ACTION1__',
13948             'line' => 63,
13949             'lookahead' => 0
13950             }, 'Parse::RecDescent::Action' )
13951             ],
13952             'line' => undef,
13953             'number' => 0,
13954             'patcount' => 0,
13955             'strcount' => 2,
13956             'uncommit' => undef
13957             }, 'Parse::RecDescent::Production' )
13958             ],
13959             'vars' => ''
13960             }, 'Parse::RecDescent::Rule' ),
13961             'MESSAGE' => bless( {
13962             'calls' => [],
13963             'changed' => 0,
13964             'impcount' => 0,
13965             'line' => 32,
13966             'name' => 'MESSAGE',
13967             'opcount' => 0,
13968             'prods' => [
13969             bless( {
13970             'actcount' => 1,
13971             'dircount' => 0,
13972             'error' => undef,
13973             'items' => [
13974             bless( {
13975             'description' => '/^"MESSAGE"|^MESSAGE/i',
13976             'hashname' => '__PATTERN1__',
13977             'ldelim' => '/',
13978             'line' => 32,
13979             'lookahead' => 0,
13980             'mod' => 'i',
13981             'pattern' => '^"MESSAGE"|^MESSAGE',
13982             'rdelim' => '/'
13983             }, 'Parse::RecDescent::Token' ),
13984             bless( {
13985             'code' => '{ $return = "MESSAGE"}',
13986             'hashname' => '__ACTION1__',
13987             'line' => 32,
13988             'lookahead' => 0
13989             }, 'Parse::RecDescent::Action' )
13990             ],
13991             'line' => undef,
13992             'number' => 0,
13993             'patcount' => 1,
13994             'strcount' => 0,
13995             'uncommit' => undef
13996             }, 'Parse::RecDescent::Production' )
13997             ],
13998             'vars' => ''
13999             }, 'Parse::RecDescent::Rule' ),
14000             'NIL' => bless( {
14001             'calls' => [],
14002             'changed' => 0,
14003             'impcount' => 0,
14004             'line' => 34,
14005             'name' => 'NIL',
14006             'opcount' => 0,
14007             'prods' => [
14008             bless( {
14009             'actcount' => 1,
14010             'dircount' => 0,
14011             'error' => undef,
14012             'items' => [
14013             bless( {
14014             'description' => '/^NIL/i',
14015             'hashname' => '__PATTERN1__',
14016             'ldelim' => '/',
14017             'line' => 34,
14018             'lookahead' => 0,
14019             'mod' => 'i',
14020             'pattern' => '^NIL',
14021             'rdelim' => '/'
14022             }, 'Parse::RecDescent::Token' ),
14023             bless( {
14024             'code' => '{ $return = "NIL" }',
14025             'hashname' => '__ACTION1__',
14026             'line' => 34,
14027             'lookahead' => 0
14028             }, 'Parse::RecDescent::Action' )
14029             ],
14030             'line' => undef,
14031             'number' => 0,
14032             'patcount' => 1,
14033             'strcount' => 0,
14034             'uncommit' => undef
14035             }, 'Parse::RecDescent::Production' )
14036             ],
14037             'vars' => ''
14038             }, 'Parse::RecDescent::Rule' ),
14039             'NUMBER' => bless( {
14040             'calls' => [],
14041             'changed' => 0,
14042             'impcount' => 0,
14043             'line' => 36,
14044             'name' => 'NUMBER',
14045             'opcount' => 0,
14046             'prods' => [
14047             bless( {
14048             'actcount' => 1,
14049             'dircount' => 0,
14050             'error' => undef,
14051             'items' => [
14052             bless( {
14053             'description' => '/^(\\\\d+)/',
14054             'hashname' => '__PATTERN1__',
14055             'ldelim' => '/',
14056             'line' => 36,
14057             'lookahead' => 0,
14058             'mod' => '',
14059             'pattern' => '^(\\d+)',
14060             'rdelim' => '/'
14061             }, 'Parse::RecDescent::Token' ),
14062             bless( {
14063             'code' => '{ $return = $item[1] }',
14064             'hashname' => '__ACTION1__',
14065             'line' => 36,
14066             'lookahead' => 0
14067             }, 'Parse::RecDescent::Action' )
14068             ],
14069             'line' => undef,
14070             'number' => 0,
14071             'patcount' => 1,
14072             'strcount' => 0,
14073             'uncommit' => undef
14074             }, 'Parse::RecDescent::Production' )
14075             ],
14076             'vars' => ''
14077             }, 'Parse::RecDescent::Rule' ),
14078             'PLAIN' => bless( {
14079             'calls' => [],
14080             'changed' => 0,
14081             'impcount' => 0,
14082             'line' => 30,
14083             'name' => 'PLAIN',
14084             'opcount' => 0,
14085             'prods' => [
14086             bless( {
14087             'actcount' => 1,
14088             'dircount' => 0,
14089             'error' => undef,
14090             'items' => [
14091             bless( {
14092             'description' => '/^"PLAIN"|^PLAIN/i',
14093             'hashname' => '__PATTERN1__',
14094             'ldelim' => '/',
14095             'line' => 30,
14096             'lookahead' => 0,
14097             'mod' => 'i',
14098             'pattern' => '^"PLAIN"|^PLAIN',
14099             'rdelim' => '/'
14100             }, 'Parse::RecDescent::Token' ),
14101             bless( {
14102             'code' => '{ $return = "PLAIN" }',
14103             'hashname' => '__ACTION1__',
14104             'line' => 30,
14105             'lookahead' => 0
14106             }, 'Parse::RecDescent::Action' )
14107             ],
14108             'line' => undef,
14109             'number' => 0,
14110             'patcount' => 1,
14111             'strcount' => 0,
14112             'uncommit' => undef
14113             }, 'Parse::RecDescent::Production' )
14114             ],
14115             'vars' => ''
14116             }, 'Parse::RecDescent::Rule' ),
14117             'RFC822' => bless( {
14118             'calls' => [],
14119             'changed' => 0,
14120             'impcount' => 0,
14121             'line' => 33,
14122             'name' => 'RFC822',
14123             'opcount' => 0,
14124             'prods' => [
14125             bless( {
14126             'actcount' => 1,
14127             'dircount' => 0,
14128             'error' => undef,
14129             'items' => [
14130             bless( {
14131             'description' => '/^"RFC822"|^RFC822/i',
14132             'hashname' => '__PATTERN1__',
14133             'ldelim' => '/',
14134             'line' => 33,
14135             'lookahead' => 0,
14136             'mod' => 'i',
14137             'pattern' => '^"RFC822"|^RFC822',
14138             'rdelim' => '/'
14139             }, 'Parse::RecDescent::Token' ),
14140             bless( {
14141             'code' => '{ $return = "RFC822" }',
14142             'hashname' => '__ACTION1__',
14143             'line' => 33,
14144             'lookahead' => 0
14145             }, 'Parse::RecDescent::Action' )
14146             ],
14147             'line' => undef,
14148             'number' => 0,
14149             'patcount' => 1,
14150             'strcount' => 0,
14151             'uncommit' => undef
14152             }, 'Parse::RecDescent::Production' )
14153             ],
14154             'vars' => ''
14155             }, 'Parse::RecDescent::Rule' ),
14156             'RFCNONCOMPLY' => bless( {
14157             'calls' => [],
14158             'changed' => 0,
14159             'impcount' => 0,
14160             'line' => 35,
14161             'name' => 'RFCNONCOMPLY',
14162             'opcount' => 0,
14163             'prods' => [
14164             bless( {
14165             'actcount' => 1,
14166             'dircount' => 0,
14167             'error' => undef,
14168             'items' => [
14169             bless( {
14170             'description' => '/^\\\\(\\\\)/i',
14171             'hashname' => '__PATTERN1__',
14172             'ldelim' => '/',
14173             'line' => 35,
14174             'lookahead' => 0,
14175             'mod' => 'i',
14176             'pattern' => '^\\(\\)',
14177             'rdelim' => '/'
14178             }, 'Parse::RecDescent::Token' ),
14179             bless( {
14180             'code' => '{ $return = "NIL" }',
14181             'hashname' => '__ACTION1__',
14182             'line' => 35,
14183             'lookahead' => 0
14184             }, 'Parse::RecDescent::Action' )
14185             ],
14186             'line' => undef,
14187             'number' => 0,
14188             'patcount' => 1,
14189             'strcount' => 0,
14190             'uncommit' => undef
14191             }, 'Parse::RecDescent::Production' )
14192             ],
14193             'vars' => ''
14194             }, 'Parse::RecDescent::Rule' ),
14195             'SINGLE_QUOTED_STRING' => bless( {
14196             'calls' => [],
14197             'changed' => 0,
14198             'impcount' => 0,
14199             'line' => 38,
14200             'name' => 'SINGLE_QUOTED_STRING',
14201             'opcount' => 0,
14202             'prods' => [
14203             bless( {
14204             'actcount' => 1,
14205             'dircount' => 0,
14206             'error' => undef,
14207             'items' => [
14208             bless( {
14209             'description' => '\'\'\'',
14210             'hashname' => '__STRING1__',
14211             'line' => 40,
14212             'lookahead' => 0,
14213             'pattern' => '\''
14214             }, 'Parse::RecDescent::InterpLit' ),
14215             bless( {
14216             'description' => '/(?:\\\\\\\\[\'\\\\\\\\]|[^\'])*/',
14217             'hashname' => '__PATTERN1__',
14218             'ldelim' => '/',
14219             'line' => 40,
14220             'lookahead' => 0,
14221             'mod' => '',
14222             'pattern' => '(?:\\\\[\'\\\\]|[^\'])*',
14223             'rdelim' => '/'
14224             }, 'Parse::RecDescent::Token' ),
14225             bless( {
14226             'description' => '\'\'\'',
14227             'hashname' => '__STRING2__',
14228             'line' => 40,
14229             'lookahead' => 0,
14230             'pattern' => '\''
14231             }, 'Parse::RecDescent::InterpLit' ),
14232             bless( {
14233             'code' => '{ $return = $item{__PATTERN1__} }',
14234             'hashname' => '__ACTION1__',
14235             'line' => 40,
14236             'lookahead' => 0
14237             }, 'Parse::RecDescent::Action' )
14238             ],
14239             'line' => undef,
14240             'number' => 0,
14241             'patcount' => 1,
14242             'strcount' => 2,
14243             'uncommit' => undef
14244             }, 'Parse::RecDescent::Production' )
14245             ],
14246             'vars' => ''
14247             }, 'Parse::RecDescent::Rule' ),
14248             'STRING' => bless( {
14249             'calls' => [
14250             'DOUBLE_QUOTED_STRING',
14251             'SINGLE_QUOTED_STRING',
14252             'BARESTRING'
14253             ],
14254             'changed' => 0,
14255             'impcount' => 0,
14256             'line' => 46,
14257             'name' => 'STRING',
14258             'opcount' => 0,
14259             'prods' => [
14260             bless( {
14261             'actcount' => 0,
14262             'dircount' => 0,
14263             'error' => undef,
14264             'items' => [
14265             bless( {
14266             'argcode' => undef,
14267             'implicit' => undef,
14268             'line' => 46,
14269             'lookahead' => 0,
14270             'matchrule' => 0,
14271             'subrule' => 'DOUBLE_QUOTED_STRING'
14272             }, 'Parse::RecDescent::Subrule' )
14273             ],
14274             'line' => undef,
14275             'number' => 0,
14276             'patcount' => 0,
14277             'strcount' => 0,
14278             'uncommit' => undef
14279             }, 'Parse::RecDescent::Production' ),
14280             bless( {
14281             'actcount' => 0,
14282             'dircount' => 0,
14283             'error' => undef,
14284             'items' => [
14285             bless( {
14286             'argcode' => undef,
14287             'implicit' => undef,
14288             'line' => 46,
14289             'lookahead' => 0,
14290             'matchrule' => 0,
14291             'subrule' => 'SINGLE_QUOTED_STRING'
14292             }, 'Parse::RecDescent::Subrule' )
14293             ],
14294             'line' => 46,
14295             'number' => 1,
14296             'patcount' => 0,
14297             'strcount' => 0,
14298             'uncommit' => undef
14299             }, 'Parse::RecDescent::Production' ),
14300             bless( {
14301             'actcount' => 0,
14302             'dircount' => 0,
14303             'error' => undef,
14304             'items' => [
14305             bless( {
14306             'argcode' => undef,
14307             'implicit' => undef,
14308             'line' => 46,
14309             'lookahead' => 0,
14310             'matchrule' => 0,
14311             'subrule' => 'BARESTRING'
14312             }, 'Parse::RecDescent::Subrule' )
14313             ],
14314             'line' => 46,
14315             'number' => 2,
14316             'patcount' => 0,
14317             'strcount' => 0,
14318             'uncommit' => undef
14319             }, 'Parse::RecDescent::Production' )
14320             ],
14321             'vars' => ''
14322             }, 'Parse::RecDescent::Rule' ),
14323             'STRINGS' => bless( {
14324             'calls' => [
14325             'STRING'
14326             ],
14327             'changed' => 0,
14328             'impcount' => 0,
14329             'line' => 48,
14330             'name' => 'STRINGS',
14331             'opcount' => 0,
14332             'prods' => [
14333             bless( {
14334             'actcount' => 1,
14335             'dircount' => 0,
14336             'error' => undef,
14337             'items' => [
14338             bless( {
14339             'description' => '\'(\'',
14340             'hashname' => '__STRING1__',
14341             'line' => 48,
14342             'lookahead' => 0,
14343             'pattern' => '('
14344             }, 'Parse::RecDescent::InterpLit' ),
14345             bless( {
14346             'argcode' => undef,
14347             'expected' => undef,
14348             'line' => 48,
14349             'lookahead' => 0,
14350             'matchrule' => 0,
14351             'max' => 100000000,
14352             'min' => 1,
14353             'repspec' => 's',
14354             'subrule' => 'STRING'
14355             }, 'Parse::RecDescent::Repetition' ),
14356             bless( {
14357             'description' => '\')\'',
14358             'hashname' => '__STRING2__',
14359             'line' => 48,
14360             'lookahead' => 0,
14361             'pattern' => ')'
14362             }, 'Parse::RecDescent::InterpLit' ),
14363             bless( {
14364             'code' => '{ $return = $item{\'STRING(s)\'} }',
14365             'hashname' => '__ACTION1__',
14366             'line' => 48,
14367             'lookahead' => 0
14368             }, 'Parse::RecDescent::Action' )
14369             ],
14370             'line' => undef,
14371             'number' => 0,
14372             'patcount' => 0,
14373             'strcount' => 2,
14374             'uncommit' => undef
14375             }, 'Parse::RecDescent::Production' )
14376             ],
14377             'vars' => ''
14378             }, 'Parse::RecDescent::Rule' ),
14379             'TEXT' => bless( {
14380             'calls' => [],
14381             'changed' => 0,
14382             'impcount' => 0,
14383             'line' => 27,
14384             'name' => 'TEXT',
14385             'opcount' => 0,
14386             'prods' => [
14387             bless( {
14388             'actcount' => 1,
14389             'dircount' => 0,
14390             'error' => undef,
14391             'items' => [
14392             bless( {
14393             'description' => '/^"TEXT"|^TEXT/i',
14394             'hashname' => '__PATTERN1__',
14395             'ldelim' => '/',
14396             'line' => 29,
14397             'lookahead' => 0,
14398             'mod' => 'i',
14399             'pattern' => '^"TEXT"|^TEXT',
14400             'rdelim' => '/'
14401             }, 'Parse::RecDescent::Token' ),
14402             bless( {
14403             'code' => '{ $return = "TEXT" }',
14404             'hashname' => '__ACTION1__',
14405             'line' => 29,
14406             'lookahead' => 0
14407             }, 'Parse::RecDescent::Action' )
14408             ],
14409             'line' => undef,
14410             'number' => 0,
14411             'patcount' => 1,
14412             'strcount' => 0,
14413             'uncommit' => undef
14414             }, 'Parse::RecDescent::Production' )
14415             ],
14416             'vars' => ''
14417             }, 'Parse::RecDescent::Rule' ),
14418             'addressstruct' => bless( {
14419             'calls' => [
14420             'personalname',
14421             'sourceroute',
14422             'mailboxname',
14423             'hostname'
14424             ],
14425             'changed' => 0,
14426             'impcount' => 0,
14427             'line' => 83,
14428             'name' => 'addressstruct',
14429             'opcount' => 0,
14430             'prods' => [
14431             bless( {
14432             'actcount' => 1,
14433             'dircount' => 0,
14434             'error' => undef,
14435             'items' => [
14436             bless( {
14437             'description' => '\'(\'',
14438             'hashname' => '__STRING1__',
14439             'line' => 83,
14440             'lookahead' => 0,
14441             'pattern' => '('
14442             }, 'Parse::RecDescent::InterpLit' ),
14443             bless( {
14444             'argcode' => undef,
14445             'implicit' => undef,
14446             'line' => 83,
14447             'lookahead' => 0,
14448             'matchrule' => 0,
14449             'subrule' => 'personalname'
14450             }, 'Parse::RecDescent::Subrule' ),
14451             bless( {
14452             'argcode' => undef,
14453             'implicit' => undef,
14454             'line' => 83,
14455             'lookahead' => 0,
14456             'matchrule' => 0,
14457             'subrule' => 'sourceroute'
14458             }, 'Parse::RecDescent::Subrule' ),
14459             bless( {
14460             'argcode' => undef,
14461             'implicit' => undef,
14462             'line' => 83,
14463             'lookahead' => 0,
14464             'matchrule' => 0,
14465             'subrule' => 'mailboxname'
14466             }, 'Parse::RecDescent::Subrule' ),
14467             bless( {
14468             'argcode' => undef,
14469             'implicit' => undef,
14470             'line' => 83,
14471             'lookahead' => 0,
14472             'matchrule' => 0,
14473             'subrule' => 'hostname'
14474             }, 'Parse::RecDescent::Subrule' ),
14475             bless( {
14476             'description' => '\')\'',
14477             'hashname' => '__STRING2__',
14478             'line' => 83,
14479             'lookahead' => 0,
14480             'pattern' => ')'
14481             }, 'Parse::RecDescent::InterpLit' ),
14482             bless( {
14483             'code' => '{ bless { personalname => $item{personalname}
14484             , sourceroute => $item{sourceroute}
14485             , mailboxname => $item{mailboxname}
14486             , hostname => $item{hostname}
14487             }, \'Mail::IMAPClient::BodyStructure::Address\';
14488             }',
14489             'hashname' => '__ACTION1__',
14490             'line' => 84,
14491             'lookahead' => 0
14492             }, 'Parse::RecDescent::Action' )
14493             ],
14494             'line' => undef,
14495             'number' => 0,
14496             'patcount' => 0,
14497             'strcount' => 2,
14498             'uncommit' => undef
14499             }, 'Parse::RecDescent::Production' )
14500             ],
14501             'vars' => ''
14502             }, 'Parse::RecDescent::Rule' ),
14503             'basicfields' => bless( {
14504             'calls' => [
14505             'bodysubtype',
14506             'bodyparms',
14507             'bodyid',
14508             'bodydesc',
14509             'bodyenc',
14510             'bodysize'
14511             ],
14512             'changed' => 0,
14513             'impcount' => 0,
14514             'line' => 115,
14515             'name' => 'basicfields',
14516             'opcount' => 0,
14517             'prods' => [
14518             bless( {
14519             'actcount' => 1,
14520             'dircount' => 0,
14521             'error' => undef,
14522             'items' => [
14523             bless( {
14524             'argcode' => undef,
14525             'implicit' => undef,
14526             'line' => 115,
14527             'lookahead' => 0,
14528             'matchrule' => 0,
14529             'subrule' => 'bodysubtype'
14530             }, 'Parse::RecDescent::Subrule' ),
14531             bless( {
14532             'argcode' => undef,
14533             'expected' => undef,
14534             'line' => 115,
14535             'lookahead' => 0,
14536             'matchrule' => 0,
14537             'max' => 1,
14538             'min' => 0,
14539             'repspec' => '?',
14540             'subrule' => 'bodyparms'
14541             }, 'Parse::RecDescent::Repetition' ),
14542             bless( {
14543             'argcode' => undef,
14544             'expected' => undef,
14545             'line' => 115,
14546             'lookahead' => 0,
14547             'matchrule' => 0,
14548             'max' => 1,
14549             'min' => 0,
14550             'repspec' => '?',
14551             'subrule' => 'bodyid'
14552             }, 'Parse::RecDescent::Repetition' ),
14553             bless( {
14554             'argcode' => undef,
14555             'expected' => undef,
14556             'line' => 116,
14557             'lookahead' => 0,
14558             'matchrule' => 0,
14559             'max' => 1,
14560             'min' => 0,
14561             'repspec' => '?',
14562             'subrule' => 'bodydesc'
14563             }, 'Parse::RecDescent::Repetition' ),
14564             bless( {
14565             'argcode' => undef,
14566             'expected' => undef,
14567             'line' => 116,
14568             'lookahead' => 0,
14569             'matchrule' => 0,
14570             'max' => 1,
14571             'min' => 0,
14572             'repspec' => '?',
14573             'subrule' => 'bodyenc'
14574             }, 'Parse::RecDescent::Repetition' ),
14575             bless( {
14576             'argcode' => undef,
14577             'expected' => undef,
14578             'line' => 116,
14579             'lookahead' => 0,
14580             'matchrule' => 0,
14581             'max' => 1,
14582             'min' => 0,
14583             'repspec' => '?',
14584             'subrule' => 'bodysize'
14585             }, 'Parse::RecDescent::Repetition' ),
14586             bless( {
14587             'code' => '{ $return = { bodysubtype => $item{bodysubtype} };
14588             take_optional_items($return, \\%item,
14589             qw/bodyparms bodyid bodydesc bodyenc bodysize/);
14590             1;
14591             }',
14592             'hashname' => '__ACTION1__',
14593             'line' => 117,
14594             'lookahead' => 0
14595             }, 'Parse::RecDescent::Action' )
14596             ],
14597             'line' => undef,
14598             'number' => 0,
14599             'patcount' => 0,
14600             'strcount' => 0,
14601             'uncommit' => undef
14602             }, 'Parse::RecDescent::Production' )
14603             ],
14604             'vars' => ''
14605             }, 'Parse::RecDescent::Rule' ),
14606             'bcc' => bless( {
14607             'calls' => [
14608             'ADDRESSES'
14609             ],
14610             'changed' => 0,
14611             'impcount' => 0,
14612             'line' => 100,
14613             'name' => 'bcc',
14614             'opcount' => 0,
14615             'prods' => [
14616             bless( {
14617             'actcount' => 0,
14618             'dircount' => 0,
14619             'error' => undef,
14620             'items' => [
14621             bless( {
14622             'argcode' => undef,
14623             'implicit' => undef,
14624             'line' => 100,
14625             'lookahead' => 0,
14626             'matchrule' => 0,
14627             'subrule' => 'ADDRESSES'
14628             }, 'Parse::RecDescent::Subrule' )
14629             ],
14630             'line' => undef,
14631             'number' => 0,
14632             'patcount' => 0,
14633             'strcount' => 0,
14634             'uncommit' => undef
14635             }, 'Parse::RecDescent::Production' )
14636             ],
14637             'vars' => ''
14638             }, 'Parse::RecDescent::Rule' ),
14639             'bodyMD5' => bless( {
14640             'calls' => [
14641             'NIL',
14642             'STRING'
14643             ],
14644             'changed' => 0,
14645             'impcount' => 0,
14646             'line' => 72,
14647             'name' => 'bodyMD5',
14648             'opcount' => 0,
14649             'prods' => [
14650             bless( {
14651             'actcount' => 0,
14652             'dircount' => 0,
14653             'error' => undef,
14654             'items' => [
14655             bless( {
14656             'argcode' => undef,
14657             'implicit' => undef,
14658             'line' => 72,
14659             'lookahead' => 0,
14660             'matchrule' => 0,
14661             'subrule' => 'NIL'
14662             }, 'Parse::RecDescent::Subrule' )
14663             ],
14664             'line' => undef,
14665             'number' => 0,
14666             'patcount' => 0,
14667             'strcount' => 0,
14668             'uncommit' => undef
14669             }, 'Parse::RecDescent::Production' ),
14670             bless( {
14671             'actcount' => 0,
14672             'dircount' => 0,
14673             'error' => undef,
14674             'items' => [
14675             bless( {
14676             'argcode' => undef,
14677             'implicit' => undef,
14678             'line' => 72,
14679             'lookahead' => 0,
14680             'matchrule' => 0,
14681             'subrule' => 'STRING'
14682             }, 'Parse::RecDescent::Subrule' )
14683             ],
14684             'line' => 72,
14685             'number' => 1,
14686             'patcount' => 0,
14687             'strcount' => 0,
14688             'uncommit' => undef
14689             }, 'Parse::RecDescent::Production' )
14690             ],
14691             'vars' => ''
14692             }, 'Parse::RecDescent::Rule' ),
14693             'bodydesc' => bless( {
14694             'calls' => [
14695             'NIL',
14696             'STRING'
14697             ],
14698             'changed' => 0,
14699             'impcount' => 0,
14700             'line' => 69,
14701             'name' => 'bodydesc',
14702             'opcount' => 0,
14703             'prods' => [
14704             bless( {
14705             'actcount' => 0,
14706             'dircount' => 0,
14707             'error' => undef,
14708             'items' => [
14709             bless( {
14710             'description' => '/[()]/',
14711             'hashname' => '__PATTERN1__',
14712             'ldelim' => '/',
14713             'line' => 69,
14714             'lookahead' => -1,
14715             'mod' => '',
14716             'pattern' => '[()]',
14717             'rdelim' => '/'
14718             }, 'Parse::RecDescent::Token' ),
14719             bless( {
14720             'argcode' => undef,
14721             'implicit' => undef,
14722             'line' => 69,
14723             'lookahead' => 0,
14724             'matchrule' => 0,
14725             'subrule' => 'NIL'
14726             }, 'Parse::RecDescent::Subrule' )
14727             ],
14728             'line' => undef,
14729             'number' => 0,
14730             'patcount' => 1,
14731             'strcount' => 0,
14732             'uncommit' => undef
14733             }, 'Parse::RecDescent::Production' ),
14734             bless( {
14735             'actcount' => 0,
14736             'dircount' => 0,
14737             'error' => undef,
14738             'items' => [
14739             bless( {
14740             'argcode' => undef,
14741             'implicit' => undef,
14742             'line' => 69,
14743             'lookahead' => 0,
14744             'matchrule' => 0,
14745             'subrule' => 'STRING'
14746             }, 'Parse::RecDescent::Subrule' )
14747             ],
14748             'line' => 69,
14749             'number' => 1,
14750             'patcount' => 0,
14751             'strcount' => 0,
14752             'uncommit' => undef
14753             }, 'Parse::RecDescent::Production' )
14754             ],
14755             'vars' => ''
14756             }, 'Parse::RecDescent::Rule' ),
14757             'bodydisp' => bless( {
14758             'calls' => [
14759             'NIL',
14760             'KVPAIRS'
14761             ],
14762             'changed' => 0,
14763             'impcount' => 0,
14764             'line' => 67,
14765             'name' => 'bodydisp',
14766             'opcount' => 0,
14767             'prods' => [
14768             bless( {
14769             'actcount' => 0,
14770             'dircount' => 0,
14771             'error' => undef,
14772             'items' => [
14773             bless( {
14774             'argcode' => undef,
14775             'implicit' => undef,
14776             'line' => 67,
14777             'lookahead' => 0,
14778             'matchrule' => 0,
14779             'subrule' => 'NIL'
14780             }, 'Parse::RecDescent::Subrule' )
14781             ],
14782             'line' => undef,
14783             'number' => 0,
14784             'patcount' => 0,
14785             'strcount' => 0,
14786             'uncommit' => undef
14787             }, 'Parse::RecDescent::Production' ),
14788             bless( {
14789             'actcount' => 0,
14790             'dircount' => 0,
14791             'error' => undef,
14792             'items' => [
14793             bless( {
14794             'argcode' => undef,
14795             'implicit' => undef,
14796             'line' => 67,
14797             'lookahead' => 0,
14798             'matchrule' => 0,
14799             'subrule' => 'KVPAIRS'
14800             }, 'Parse::RecDescent::Subrule' )
14801             ],
14802             'line' => 67,
14803             'number' => 1,
14804             'patcount' => 0,
14805             'strcount' => 0,
14806             'uncommit' => undef
14807             }, 'Parse::RecDescent::Production' )
14808             ],
14809             'vars' => ''
14810             }, 'Parse::RecDescent::Rule' ),
14811             'bodyenc' => bless( {
14812             'calls' => [
14813             'NIL',
14814             'STRING',
14815             'KVPAIRS'
14816             ],
14817             'changed' => 0,
14818             'impcount' => 0,
14819             'line' => 71,
14820             'name' => 'bodyenc',
14821             'opcount' => 0,
14822             'prods' => [
14823             bless( {
14824             'actcount' => 0,
14825             'dircount' => 0,
14826             'error' => undef,
14827             'items' => [
14828             bless( {
14829             'argcode' => undef,
14830             'implicit' => undef,
14831             'line' => 71,
14832             'lookahead' => 0,
14833             'matchrule' => 0,
14834             'subrule' => 'NIL'
14835             }, 'Parse::RecDescent::Subrule' )
14836             ],
14837             'line' => undef,
14838             'number' => 0,
14839             'patcount' => 0,
14840             'strcount' => 0,
14841             'uncommit' => undef
14842             }, 'Parse::RecDescent::Production' ),
14843             bless( {
14844             'actcount' => 0,
14845             'dircount' => 0,
14846             'error' => undef,
14847             'items' => [
14848             bless( {
14849             'argcode' => undef,
14850             'implicit' => undef,
14851             'line' => 71,
14852             'lookahead' => 0,
14853             'matchrule' => 0,
14854             'subrule' => 'STRING'
14855             }, 'Parse::RecDescent::Subrule' )
14856             ],
14857             'line' => 71,
14858             'number' => 1,
14859             'patcount' => 0,
14860             'strcount' => 0,
14861             'uncommit' => undef
14862             }, 'Parse::RecDescent::Production' ),
14863             bless( {
14864             'actcount' => 0,
14865             'dircount' => 0,
14866             'error' => undef,
14867             'items' => [
14868             bless( {
14869             'argcode' => undef,
14870             'implicit' => undef,
14871             'line' => 71,
14872             'lookahead' => 0,
14873             'matchrule' => 0,
14874             'subrule' => 'KVPAIRS'
14875             }, 'Parse::RecDescent::Subrule' )
14876             ],
14877             'line' => 71,
14878             'number' => 2,
14879             'patcount' => 0,
14880             'strcount' => 0,
14881             'uncommit' => undef
14882             }, 'Parse::RecDescent::Production' )
14883             ],
14884             'vars' => ''
14885             }, 'Parse::RecDescent::Rule' ),
14886             'bodyextensions' => bless( {
14887             'calls' => [
14888             'NIL',
14889             'STRING'
14890             ],
14891             'changed' => 0,
14892             'impcount' => 0,
14893             'line' => 76,
14894             'name' => 'bodyextensions',
14895             'opcount' => 0,
14896             'prods' => [
14897             bless( {
14898             'actcount' => 0,
14899             'dircount' => 0,
14900             'error' => undef,
14901             'items' => [
14902             bless( {
14903             'argcode' => undef,
14904             'implicit' => undef,
14905             'line' => 76,
14906             'lookahead' => 0,
14907             'matchrule' => 0,
14908             'subrule' => 'NIL'
14909             }, 'Parse::RecDescent::Subrule' )
14910             ],
14911             'line' => undef,
14912             'number' => 0,
14913             'patcount' => 0,
14914             'strcount' => 0,
14915             'uncommit' => undef
14916             }, 'Parse::RecDescent::Production' ),
14917             bless( {
14918             'actcount' => 0,
14919             'dircount' => 0,
14920             'error' => undef,
14921             'items' => [
14922             bless( {
14923             'argcode' => undef,
14924             'implicit' => undef,
14925             'line' => 76,
14926             'lookahead' => 0,
14927             'matchrule' => 0,
14928             'subrule' => 'STRING'
14929             }, 'Parse::RecDescent::Subrule' )
14930             ],
14931             'line' => 76,
14932             'number' => 1,
14933             'patcount' => 0,
14934             'strcount' => 0,
14935             'uncommit' => undef
14936             }, 'Parse::RecDescent::Production' )
14937             ],
14938             'vars' => ''
14939             }, 'Parse::RecDescent::Rule' ),
14940             'bodyextra' => bless( {
14941             'calls' => [
14942             'NIL',
14943             'STRING',
14944             'STRINGS'
14945             ],
14946             'changed' => 0,
14947             'impcount' => 0,
14948             'line' => 74,
14949             'name' => 'bodyextra',
14950             'opcount' => 0,
14951             'prods' => [
14952             bless( {
14953             'actcount' => 0,
14954             'dircount' => 0,
14955             'error' => undef,
14956             'items' => [
14957             bless( {
14958             'argcode' => undef,
14959             'implicit' => undef,
14960             'line' => 74,
14961             'lookahead' => 0,
14962             'matchrule' => 0,
14963             'subrule' => 'NIL'
14964             }, 'Parse::RecDescent::Subrule' )
14965             ],
14966             'line' => undef,
14967             'number' => 0,
14968             'patcount' => 0,
14969             'strcount' => 0,
14970             'uncommit' => undef
14971             }, 'Parse::RecDescent::Production' ),
14972             bless( {
14973             'actcount' => 0,
14974             'dircount' => 0,
14975             'error' => undef,
14976             'items' => [
14977             bless( {
14978             'argcode' => undef,
14979             'implicit' => undef,
14980             'line' => 74,
14981             'lookahead' => 0,
14982             'matchrule' => 0,
14983             'subrule' => 'STRING'
14984             }, 'Parse::RecDescent::Subrule' )
14985             ],
14986             'line' => 74,
14987             'number' => 1,
14988             'patcount' => 0,
14989             'strcount' => 0,
14990             'uncommit' => undef
14991             }, 'Parse::RecDescent::Production' ),
14992             bless( {
14993             'actcount' => 0,
14994             'dircount' => 0,
14995             'error' => undef,
14996             'items' => [
14997             bless( {
14998             'argcode' => undef,
14999             'implicit' => undef,
15000             'line' => 74,
15001             'lookahead' => 0,
15002             'matchrule' => 0,
15003             'subrule' => 'STRINGS'
15004             }, 'Parse::RecDescent::Subrule' )
15005             ],
15006             'line' => 74,
15007             'number' => 2,
15008             'patcount' => 0,
15009             'strcount' => 0,
15010             'uncommit' => undef
15011             }, 'Parse::RecDescent::Production' )
15012             ],
15013             'vars' => ''
15014             }, 'Parse::RecDescent::Rule' ),
15015             'bodyid' => bless( {
15016             'calls' => [
15017             'NIL',
15018             'STRING'
15019             ],
15020             'changed' => 0,
15021             'impcount' => 0,
15022             'line' => 68,
15023             'name' => 'bodyid',
15024             'opcount' => 0,
15025             'prods' => [
15026             bless( {
15027             'actcount' => 0,
15028             'dircount' => 0,
15029             'error' => undef,
15030             'items' => [
15031             bless( {
15032             'description' => '/[()]/',
15033             'hashname' => '__PATTERN1__',
15034             'ldelim' => '/',
15035             'line' => 68,
15036             'lookahead' => -1,
15037             'mod' => '',
15038             'pattern' => '[()]',
15039             'rdelim' => '/'
15040             }, 'Parse::RecDescent::Token' ),
15041             bless( {
15042             'argcode' => undef,
15043             'implicit' => undef,
15044             'line' => 68,
15045             'lookahead' => 0,
15046             'matchrule' => 0,
15047             'subrule' => 'NIL'
15048             }, 'Parse::RecDescent::Subrule' )
15049             ],
15050             'line' => undef,
15051             'number' => 0,
15052             'patcount' => 1,
15053             'strcount' => 0,
15054             'uncommit' => undef
15055             }, 'Parse::RecDescent::Production' ),
15056             bless( {
15057             'actcount' => 0,
15058             'dircount' => 0,
15059             'error' => undef,
15060             'items' => [
15061             bless( {
15062             'argcode' => undef,
15063             'implicit' => undef,
15064             'line' => 68,
15065             'lookahead' => 0,
15066             'matchrule' => 0,
15067             'subrule' => 'STRING'
15068             }, 'Parse::RecDescent::Subrule' )
15069             ],
15070             'line' => 68,
15071             'number' => 1,
15072             'patcount' => 0,
15073             'strcount' => 0,
15074             'uncommit' => undef
15075             }, 'Parse::RecDescent::Production' )
15076             ],
15077             'vars' => ''
15078             }, 'Parse::RecDescent::Rule' ),
15079             'bodylang' => bless( {
15080             'calls' => [
15081             'NIL',
15082             'STRING',
15083             'STRINGS'
15084             ],
15085             'changed' => 0,
15086             'impcount' => 0,
15087             'line' => 73,
15088             'name' => 'bodylang',
15089             'opcount' => 0,
15090             'prods' => [
15091             bless( {
15092             'actcount' => 0,
15093             'dircount' => 0,
15094             'error' => undef,
15095             'items' => [
15096             bless( {
15097             'argcode' => undef,
15098             'implicit' => undef,
15099             'line' => 73,
15100             'lookahead' => 0,
15101             'matchrule' => 0,
15102             'subrule' => 'NIL'
15103             }, 'Parse::RecDescent::Subrule' )
15104             ],
15105             'line' => undef,
15106             'number' => 0,
15107             'patcount' => 0,
15108             'strcount' => 0,
15109             'uncommit' => undef
15110             }, 'Parse::RecDescent::Production' ),
15111             bless( {
15112             'actcount' => 0,
15113             'dircount' => 0,
15114             'error' => undef,
15115             'items' => [
15116             bless( {
15117             'argcode' => undef,
15118             'implicit' => undef,
15119             'line' => 73,
15120             'lookahead' => 0,
15121             'matchrule' => 0,
15122             'subrule' => 'STRING'
15123             }, 'Parse::RecDescent::Subrule' )
15124             ],
15125             'line' => 73,
15126             'number' => 1,
15127             'patcount' => 0,
15128             'strcount' => 0,
15129             'uncommit' => undef
15130             }, 'Parse::RecDescent::Production' ),
15131             bless( {
15132             'actcount' => 0,
15133             'dircount' => 0,
15134             'error' => undef,
15135             'items' => [
15136             bless( {
15137             'argcode' => undef,
15138             'implicit' => undef,
15139             'line' => 73,
15140             'lookahead' => 0,
15141             'matchrule' => 0,
15142             'subrule' => 'STRINGS'
15143             }, 'Parse::RecDescent::Subrule' )
15144             ],
15145             'line' => 73,
15146             'number' => 2,
15147             'patcount' => 0,
15148             'strcount' => 0,
15149             'uncommit' => undef
15150             }, 'Parse::RecDescent::Production' )
15151             ],
15152             'vars' => ''
15153             }, 'Parse::RecDescent::Rule' ),
15154             'bodyloc' => bless( {
15155             'calls' => [
15156             'NIL',
15157             'STRING'
15158             ],
15159             'changed' => 0,
15160             'impcount' => 0,
15161             'line' => 75,
15162             'name' => 'bodyloc',
15163             'opcount' => 0,
15164             'prods' => [
15165             bless( {
15166             'actcount' => 0,
15167             'dircount' => 0,
15168             'error' => undef,
15169             'items' => [
15170             bless( {
15171             'argcode' => undef,
15172             'implicit' => undef,
15173             'line' => 75,
15174             'lookahead' => 0,
15175             'matchrule' => 0,
15176             'subrule' => 'NIL'
15177             }, 'Parse::RecDescent::Subrule' )
15178             ],
15179             'line' => undef,
15180             'number' => 0,
15181             'patcount' => 0,
15182             'strcount' => 0,
15183             'uncommit' => undef
15184             }, 'Parse::RecDescent::Production' ),
15185             bless( {
15186             'actcount' => 0,
15187             'dircount' => 0,
15188             'error' => undef,
15189             'items' => [
15190             bless( {
15191             'argcode' => undef,
15192             'implicit' => undef,
15193             'line' => 75,
15194             'lookahead' => 0,
15195             'matchrule' => 0,
15196             'subrule' => 'STRING'
15197             }, 'Parse::RecDescent::Subrule' )
15198             ],
15199             'line' => 75,
15200             'number' => 1,
15201             'patcount' => 0,
15202             'strcount' => 0,
15203             'uncommit' => undef
15204             }, 'Parse::RecDescent::Production' )
15205             ],
15206             'vars' => ''
15207             }, 'Parse::RecDescent::Rule' ),
15208             'bodyparms' => bless( {
15209             'calls' => [
15210             'NIL',
15211             'KVPAIRS'
15212             ],
15213             'changed' => 0,
15214             'impcount' => 0,
15215             'line' => 66,
15216             'name' => 'bodyparms',
15217             'opcount' => 0,
15218             'prods' => [
15219             bless( {
15220             'actcount' => 0,
15221             'dircount' => 0,
15222             'error' => undef,
15223             'items' => [
15224             bless( {
15225             'argcode' => undef,
15226             'implicit' => undef,
15227             'line' => 66,
15228             'lookahead' => 0,
15229             'matchrule' => 0,
15230             'subrule' => 'NIL'
15231             }, 'Parse::RecDescent::Subrule' )
15232             ],
15233             'line' => undef,
15234             'number' => 0,
15235             'patcount' => 0,
15236             'strcount' => 0,
15237             'uncommit' => undef
15238             }, 'Parse::RecDescent::Production' ),
15239             bless( {
15240             'actcount' => 0,
15241             'dircount' => 0,
15242             'error' => undef,
15243             'items' => [
15244             bless( {
15245             'argcode' => undef,
15246             'implicit' => undef,
15247             'line' => 66,
15248             'lookahead' => 0,
15249             'matchrule' => 0,
15250             'subrule' => 'KVPAIRS'
15251             }, 'Parse::RecDescent::Subrule' )
15252             ],
15253             'line' => 66,
15254             'number' => 1,
15255             'patcount' => 0,
15256             'strcount' => 0,
15257             'uncommit' => undef
15258             }, 'Parse::RecDescent::Production' )
15259             ],
15260             'vars' => ''
15261             }, 'Parse::RecDescent::Rule' ),
15262             'bodysize' => bless( {
15263             'calls' => [
15264             'NIL',
15265             'NUMBER'
15266             ],
15267             'changed' => 0,
15268             'impcount' => 0,
15269             'line' => 70,
15270             'name' => 'bodysize',
15271             'opcount' => 0,
15272             'prods' => [
15273             bless( {
15274             'actcount' => 0,
15275             'dircount' => 0,
15276             'error' => undef,
15277             'items' => [
15278             bless( {
15279             'description' => '/[()]/',
15280             'hashname' => '__PATTERN1__',
15281             'ldelim' => '/',
15282             'line' => 70,
15283             'lookahead' => -1,
15284             'mod' => '',
15285             'pattern' => '[()]',
15286             'rdelim' => '/'
15287             }, 'Parse::RecDescent::Token' ),
15288             bless( {
15289             'argcode' => undef,
15290             'implicit' => undef,
15291             'line' => 70,
15292             'lookahead' => 0,
15293             'matchrule' => 0,
15294             'subrule' => 'NIL'
15295             }, 'Parse::RecDescent::Subrule' )
15296             ],
15297             'line' => undef,
15298             'number' => 0,
15299             'patcount' => 1,
15300             'strcount' => 0,
15301             'uncommit' => undef
15302             }, 'Parse::RecDescent::Production' ),
15303             bless( {
15304             'actcount' => 0,
15305             'dircount' => 0,
15306             'error' => undef,
15307             'items' => [
15308             bless( {
15309             'argcode' => undef,
15310             'implicit' => undef,
15311             'line' => 70,
15312             'lookahead' => 0,
15313             'matchrule' => 0,
15314             'subrule' => 'NUMBER'
15315             }, 'Parse::RecDescent::Subrule' )
15316             ],
15317             'line' => 70,
15318             'number' => 1,
15319             'patcount' => 0,
15320             'strcount' => 0,
15321             'uncommit' => undef
15322             }, 'Parse::RecDescent::Production' )
15323             ],
15324             'vars' => ''
15325             }, 'Parse::RecDescent::Rule' ),
15326             'bodystructure' => bless( {
15327             'calls' => [
15328             'part'
15329             ],
15330             'changed' => 0,
15331             'impcount' => 0,
15332             'line' => 183,
15333             'name' => 'bodystructure',
15334             'opcount' => 0,
15335             'prods' => [
15336             bless( {
15337             'actcount' => 1,
15338             'dircount' => 0,
15339             'error' => undef,
15340             'items' => [
15341             bless( {
15342             'description' => '\'(\'',
15343             'hashname' => '__STRING1__',
15344             'line' => 183,
15345             'lookahead' => 0,
15346             'pattern' => '('
15347             }, 'Parse::RecDescent::InterpLit' ),
15348             bless( {
15349             'argcode' => undef,
15350             'expected' => undef,
15351             'line' => 183,
15352             'lookahead' => 0,
15353             'matchrule' => 0,
15354             'max' => 100000000,
15355             'min' => 1,
15356             'repspec' => 's',
15357             'subrule' => 'part'
15358             }, 'Parse::RecDescent::Repetition' ),
15359             bless( {
15360             'description' => '\')\'',
15361             'hashname' => '__STRING2__',
15362             'line' => 183,
15363             'lookahead' => 0,
15364             'pattern' => ')'
15365             }, 'Parse::RecDescent::InterpLit' ),
15366             bless( {
15367             'code' => '{ $return = $item{\'part(s)\'} }',
15368             'hashname' => '__ACTION1__',
15369             'line' => 184,
15370             'lookahead' => 0
15371             }, 'Parse::RecDescent::Action' )
15372             ],
15373             'line' => undef,
15374             'number' => 0,
15375             'patcount' => 0,
15376             'strcount' => 2,
15377             'uncommit' => undef
15378             }, 'Parse::RecDescent::Production' )
15379             ],
15380             'vars' => ''
15381             }, 'Parse::RecDescent::Rule' ),
15382             'bodysubtype' => bless( {
15383             'calls' => [
15384             'PLAIN',
15385             'HTML',
15386             'NIL',
15387             'STRING'
15388             ],
15389             'changed' => 0,
15390             'impcount' => 0,
15391             'line' => 54,
15392             'name' => 'bodysubtype',
15393             'opcount' => 0,
15394             'prods' => [
15395             bless( {
15396             'actcount' => 0,
15397             'dircount' => 0,
15398             'error' => undef,
15399             'items' => [
15400             bless( {
15401             'argcode' => undef,
15402             'implicit' => undef,
15403             'line' => 54,
15404             'lookahead' => 0,
15405             'matchrule' => 0,
15406             'subrule' => 'PLAIN'
15407             }, 'Parse::RecDescent::Subrule' )
15408             ],
15409             'line' => undef,
15410             'number' => 0,
15411             'patcount' => 0,
15412             'strcount' => 0,
15413             'uncommit' => undef
15414             }, 'Parse::RecDescent::Production' ),
15415             bless( {
15416             'actcount' => 0,
15417             'dircount' => 0,
15418             'error' => undef,
15419             'items' => [
15420             bless( {
15421             'argcode' => undef,
15422             'implicit' => undef,
15423             'line' => 54,
15424             'lookahead' => 0,
15425             'matchrule' => 0,
15426             'subrule' => 'HTML'
15427             }, 'Parse::RecDescent::Subrule' )
15428             ],
15429             'line' => 54,
15430             'number' => 1,
15431             'patcount' => 0,
15432             'strcount' => 0,
15433             'uncommit' => undef
15434             }, 'Parse::RecDescent::Production' ),
15435             bless( {
15436             'actcount' => 0,
15437             'dircount' => 0,
15438             'error' => undef,
15439             'items' => [
15440             bless( {
15441             'argcode' => undef,
15442             'implicit' => undef,
15443             'line' => 54,
15444             'lookahead' => 0,
15445             'matchrule' => 0,
15446             'subrule' => 'NIL'
15447             }, 'Parse::RecDescent::Subrule' )
15448             ],
15449             'line' => 54,
15450             'number' => 2,
15451             'patcount' => 0,
15452             'strcount' => 0,
15453             'uncommit' => undef
15454             }, 'Parse::RecDescent::Production' ),
15455             bless( {
15456             'actcount' => 0,
15457             'dircount' => 0,
15458             'error' => undef,
15459             'items' => [
15460             bless( {
15461             'argcode' => undef,
15462             'implicit' => undef,
15463             'line' => 54,
15464             'lookahead' => 0,
15465             'matchrule' => 0,
15466             'subrule' => 'STRING'
15467             }, 'Parse::RecDescent::Subrule' )
15468             ],
15469             'line' => 54,
15470             'number' => 3,
15471             'patcount' => 0,
15472             'strcount' => 0,
15473             'uncommit' => undef
15474             }, 'Parse::RecDescent::Production' )
15475             ],
15476             'vars' => ''
15477             }, 'Parse::RecDescent::Rule' ),
15478             'bodytype' => bless( {
15479             'calls' => [
15480             'STRING'
15481             ],
15482             'changed' => 0,
15483             'impcount' => 0,
15484             'line' => 65,
15485             'name' => 'bodytype',
15486             'opcount' => 0,
15487             'prods' => [
15488             bless( {
15489             'actcount' => 0,
15490             'dircount' => 0,
15491             'error' => undef,
15492             'items' => [
15493             bless( {
15494             'argcode' => undef,
15495             'implicit' => undef,
15496             'line' => 65,
15497             'lookahead' => 0,
15498             'matchrule' => 0,
15499             'subrule' => 'STRING'
15500             }, 'Parse::RecDescent::Subrule' )
15501             ],
15502             'line' => undef,
15503             'number' => 0,
15504             'patcount' => 0,
15505             'strcount' => 0,
15506             'uncommit' => undef
15507             }, 'Parse::RecDescent::Production' )
15508             ],
15509             'vars' => ''
15510             }, 'Parse::RecDescent::Rule' ),
15511             'cc' => bless( {
15512             'calls' => [
15513             'ADDRESSES'
15514             ],
15515             'changed' => 0,
15516             'impcount' => 0,
15517             'line' => 99,
15518             'name' => 'cc',
15519             'opcount' => 0,
15520             'prods' => [
15521             bless( {
15522             'actcount' => 0,
15523             'dircount' => 0,
15524             'error' => undef,
15525             'items' => [
15526             bless( {
15527             'argcode' => undef,
15528             'implicit' => undef,
15529             'line' => 99,
15530             'lookahead' => 0,
15531             'matchrule' => 0,
15532             'subrule' => 'ADDRESSES'
15533             }, 'Parse::RecDescent::Subrule' )
15534             ],
15535             'line' => undef,
15536             'number' => 0,
15537             'patcount' => 0,
15538             'strcount' => 0,
15539             'uncommit' => undef
15540             }, 'Parse::RecDescent::Production' )
15541             ],
15542             'vars' => ''
15543             }, 'Parse::RecDescent::Rule' ),
15544             'date' => bless( {
15545             'calls' => [
15546             'NIL',
15547             'STRING'
15548             ],
15549             'changed' => 0,
15550             'impcount' => 0,
15551             'line' => 94,
15552             'name' => 'date',
15553             'opcount' => 0,
15554             'prods' => [
15555             bless( {
15556             'actcount' => 0,
15557             'dircount' => 0,
15558             'error' => undef,
15559             'items' => [
15560             bless( {
15561             'argcode' => undef,
15562             'implicit' => undef,
15563             'line' => 94,
15564             'lookahead' => 0,
15565             'matchrule' => 0,
15566             'subrule' => 'NIL'
15567             }, 'Parse::RecDescent::Subrule' )
15568             ],
15569             'line' => undef,
15570             'number' => 0,
15571             'patcount' => 0,
15572             'strcount' => 0,
15573             'uncommit' => undef
15574             }, 'Parse::RecDescent::Production' ),
15575             bless( {
15576             'actcount' => 0,
15577             'dircount' => 0,
15578             'error' => undef,
15579             'items' => [
15580             bless( {
15581             'argcode' => undef,
15582             'implicit' => undef,
15583             'line' => 94,
15584             'lookahead' => 0,
15585             'matchrule' => 0,
15586             'subrule' => 'STRING'
15587             }, 'Parse::RecDescent::Subrule' )
15588             ],
15589             'line' => 94,
15590             'number' => 1,
15591             'patcount' => 0,
15592             'strcount' => 0,
15593             'uncommit' => undef
15594             }, 'Parse::RecDescent::Production' )
15595             ],
15596             'vars' => ''
15597             }, 'Parse::RecDescent::Rule' ),
15598             'envelope' => bless( {
15599             'calls' => [
15600             'envelopestruct'
15601             ],
15602             'changed' => 0,
15603             'impcount' => 0,
15604             'line' => 189,
15605             'name' => 'envelope',
15606             'opcount' => 0,
15607             'prods' => [
15608             bless( {
15609             'actcount' => 1,
15610             'dircount' => 0,
15611             'error' => undef,
15612             'items' => [
15613             bless( {
15614             'description' => '/.*?\\\\(.*?ENVELOPE/',
15615             'hashname' => '__PATTERN1__',
15616             'ldelim' => '/',
15617             'line' => 189,
15618             'lookahead' => 0,
15619             'mod' => '',
15620             'pattern' => '.*?\\(.*?ENVELOPE',
15621             'rdelim' => '/'
15622             }, 'Parse::RecDescent::Token' ),
15623             bless( {
15624             'argcode' => undef,
15625             'implicit' => undef,
15626             'line' => 189,
15627             'lookahead' => 0,
15628             'matchrule' => 0,
15629             'subrule' => 'envelopestruct'
15630             }, 'Parse::RecDescent::Subrule' ),
15631             bless( {
15632             'description' => '/.*\\\\)/',
15633             'hashname' => '__PATTERN2__',
15634             'ldelim' => '/',
15635             'line' => 189,
15636             'lookahead' => 0,
15637             'mod' => '',
15638             'pattern' => '.*\\)',
15639             'rdelim' => '/'
15640             }, 'Parse::RecDescent::Token' ),
15641             bless( {
15642             'code' => '{ $return = $item{envelopestruct} }',
15643             'hashname' => '__ACTION1__',
15644             'line' => 190,
15645             'lookahead' => 0
15646             }, 'Parse::RecDescent::Action' )
15647             ],
15648             'line' => undef,
15649             'number' => 0,
15650             'patcount' => 2,
15651             'strcount' => 0,
15652             'uncommit' => undef
15653             }, 'Parse::RecDescent::Production' )
15654             ],
15655             'vars' => ''
15656             }, 'Parse::RecDescent::Rule' ),
15657             'envelopestruct' => bless( {
15658             'calls' => [
15659             'date',
15660             'subject',
15661             'from',
15662             'sender',
15663             'replyto',
15664             'to',
15665             'cc',
15666             'bcc',
15667             'inreplyto',
15668             'messageid'
15669             ],
15670             'changed' => 0,
15671             'impcount' => 0,
15672             'line' => 106,
15673             'name' => 'envelopestruct',
15674             'opcount' => 0,
15675             'prods' => [
15676             bless( {
15677             'actcount' => 1,
15678             'dircount' => 0,
15679             'error' => undef,
15680             'items' => [
15681             bless( {
15682             'description' => '\'(\'',
15683             'hashname' => '__STRING1__',
15684             'line' => 106,
15685             'lookahead' => 0,
15686             'pattern' => '('
15687             }, 'Parse::RecDescent::InterpLit' ),
15688             bless( {
15689             'argcode' => undef,
15690             'implicit' => undef,
15691             'line' => 106,
15692             'lookahead' => 0,
15693             'matchrule' => 0,
15694             'subrule' => 'date'
15695             }, 'Parse::RecDescent::Subrule' ),
15696             bless( {
15697             'argcode' => undef,
15698             'implicit' => undef,
15699             'line' => 106,
15700             'lookahead' => 0,
15701             'matchrule' => 0,
15702             'subrule' => 'subject'
15703             }, 'Parse::RecDescent::Subrule' ),
15704             bless( {
15705             'argcode' => undef,
15706             'implicit' => undef,
15707             'line' => 106,
15708             'lookahead' => 0,
15709             'matchrule' => 0,
15710             'subrule' => 'from'
15711             }, 'Parse::RecDescent::Subrule' ),
15712             bless( {
15713             'argcode' => undef,
15714             'implicit' => undef,
15715             'line' => 106,
15716             'lookahead' => 0,
15717             'matchrule' => 0,
15718             'subrule' => 'sender'
15719             }, 'Parse::RecDescent::Subrule' ),
15720             bless( {
15721             'argcode' => undef,
15722             'implicit' => undef,
15723             'line' => 106,
15724             'lookahead' => 0,
15725             'matchrule' => 0,
15726             'subrule' => 'replyto'
15727             }, 'Parse::RecDescent::Subrule' ),
15728             bless( {
15729             'argcode' => undef,
15730             'implicit' => undef,
15731             'line' => 106,
15732             'lookahead' => 0,
15733             'matchrule' => 0,
15734             'subrule' => 'to'
15735             }, 'Parse::RecDescent::Subrule' ),
15736             bless( {
15737             'argcode' => undef,
15738             'implicit' => undef,
15739             'line' => 106,
15740             'lookahead' => 0,
15741             'matchrule' => 0,
15742             'subrule' => 'cc'
15743             }, 'Parse::RecDescent::Subrule' ),
15744             bless( {
15745             'argcode' => undef,
15746             'implicit' => undef,
15747             'line' => 107,
15748             'lookahead' => 0,
15749             'matchrule' => 0,
15750             'subrule' => 'bcc'
15751             }, 'Parse::RecDescent::Subrule' ),
15752             bless( {
15753             'argcode' => undef,
15754             'implicit' => undef,
15755             'line' => 107,
15756             'lookahead' => 0,
15757             'matchrule' => 0,
15758             'subrule' => 'inreplyto'
15759             }, 'Parse::RecDescent::Subrule' ),
15760             bless( {
15761             'argcode' => undef,
15762             'implicit' => undef,
15763             'line' => 107,
15764             'lookahead' => 0,
15765             'matchrule' => 0,
15766             'subrule' => 'messageid'
15767             }, 'Parse::RecDescent::Subrule' ),
15768             bless( {
15769             'description' => '\')\'',
15770             'hashname' => '__STRING2__',
15771             'line' => 107,
15772             'lookahead' => 0,
15773             'pattern' => ')'
15774             }, 'Parse::RecDescent::InterpLit' ),
15775             bless( {
15776             'code' => '{ $return = bless {}, "Mail::IMAPClient::BodyStructure::Envelope";
15777             $return->{$_} = $item{$_}
15778             for qw/date subject from sender replyto to cc/
15779             , qw/bcc inreplyto messageid/;
15780             1;
15781             }',
15782             'hashname' => '__ACTION1__',
15783             'line' => 108,
15784             'lookahead' => 0
15785             }, 'Parse::RecDescent::Action' )
15786             ],
15787             'line' => undef,
15788             'number' => 0,
15789             'patcount' => 0,
15790             'strcount' => 2,
15791             'uncommit' => undef
15792             }, 'Parse::RecDescent::Production' )
15793             ],
15794             'vars' => ''
15795             }, 'Parse::RecDescent::Rule' ),
15796             'from' => bless( {
15797             'calls' => [
15798             'ADDRESSES'
15799             ],
15800             'changed' => 0,
15801             'impcount' => 0,
15802             'line' => 101,
15803             'name' => 'from',
15804             'opcount' => 0,
15805             'prods' => [
15806             bless( {
15807             'actcount' => 0,
15808             'dircount' => 0,
15809             'error' => undef,
15810             'items' => [
15811             bless( {
15812             'argcode' => undef,
15813             'implicit' => undef,
15814             'line' => 101,
15815             'lookahead' => 0,
15816             'matchrule' => 0,
15817             'subrule' => 'ADDRESSES'
15818             }, 'Parse::RecDescent::Subrule' )
15819             ],
15820             'line' => undef,
15821             'number' => 0,
15822             'patcount' => 0,
15823             'strcount' => 0,
15824             'uncommit' => undef
15825             }, 'Parse::RecDescent::Production' )
15826             ],
15827             'vars' => ''
15828             }, 'Parse::RecDescent::Rule' ),
15829             'hostname' => bless( {
15830             'calls' => [
15831             'NIL',
15832             'STRING'
15833             ],
15834             'changed' => 0,
15835             'impcount' => 0,
15836             'line' => 81,
15837             'name' => 'hostname',
15838             'opcount' => 0,
15839             'prods' => [
15840             bless( {
15841             'actcount' => 0,
15842             'dircount' => 0,
15843             'error' => undef,
15844             'items' => [
15845             bless( {
15846             'argcode' => undef,
15847             'implicit' => undef,
15848             'line' => 81,
15849             'lookahead' => 0,
15850             'matchrule' => 0,
15851             'subrule' => 'NIL'
15852             }, 'Parse::RecDescent::Subrule' )
15853             ],
15854             'line' => undef,
15855             'number' => 0,
15856             'patcount' => 0,
15857             'strcount' => 0,
15858             'uncommit' => undef
15859             }, 'Parse::RecDescent::Production' ),
15860             bless( {
15861             'actcount' => 0,
15862             'dircount' => 0,
15863             'error' => undef,
15864             'items' => [
15865             bless( {
15866             'argcode' => undef,
15867             'implicit' => undef,
15868             'line' => 81,
15869             'lookahead' => 0,
15870             'matchrule' => 0,
15871             'subrule' => 'STRING'
15872             }, 'Parse::RecDescent::Subrule' )
15873             ],
15874             'line' => 81,
15875             'number' => 1,
15876             'patcount' => 0,
15877             'strcount' => 0,
15878             'uncommit' => undef
15879             }, 'Parse::RecDescent::Production' )
15880             ],
15881             'vars' => ''
15882             }, 'Parse::RecDescent::Rule' ),
15883             'inreplyto' => bless( {
15884             'calls' => [
15885             'NIL',
15886             'STRING'
15887             ],
15888             'changed' => 0,
15889             'impcount' => 0,
15890             'line' => 92,
15891             'name' => 'inreplyto',
15892             'opcount' => 0,
15893             'prods' => [
15894             bless( {
15895             'actcount' => 0,
15896             'dircount' => 0,
15897             'error' => undef,
15898             'items' => [
15899             bless( {
15900             'argcode' => undef,
15901             'implicit' => undef,
15902             'line' => 92,
15903             'lookahead' => 0,
15904             'matchrule' => 0,
15905             'subrule' => 'NIL'
15906             }, 'Parse::RecDescent::Subrule' )
15907             ],
15908             'line' => undef,
15909             'number' => 0,
15910             'patcount' => 0,
15911             'strcount' => 0,
15912             'uncommit' => undef
15913             }, 'Parse::RecDescent::Production' ),
15914             bless( {
15915             'actcount' => 0,
15916             'dircount' => 0,
15917             'error' => undef,
15918             'items' => [
15919             bless( {
15920             'argcode' => undef,
15921             'implicit' => undef,
15922             'line' => 92,
15923             'lookahead' => 0,
15924             'matchrule' => 0,
15925             'subrule' => 'STRING'
15926             }, 'Parse::RecDescent::Subrule' )
15927             ],
15928             'line' => 92,
15929             'number' => 1,
15930             'patcount' => 0,
15931             'strcount' => 0,
15932             'uncommit' => undef
15933             }, 'Parse::RecDescent::Production' )
15934             ],
15935             'vars' => ''
15936             }, 'Parse::RecDescent::Rule' ),
15937             'key' => bless( {
15938             'calls' => [
15939             'STRING'
15940             ],
15941             'changed' => 0,
15942             'impcount' => 0,
15943             'line' => 56,
15944             'name' => 'key',
15945             'opcount' => 0,
15946             'prods' => [
15947             bless( {
15948             'actcount' => 0,
15949             'dircount' => 0,
15950             'error' => undef,
15951             'items' => [
15952             bless( {
15953             'argcode' => undef,
15954             'implicit' => undef,
15955             'line' => 56,
15956             'lookahead' => 0,
15957             'matchrule' => 0,
15958             'subrule' => 'STRING'
15959             }, 'Parse::RecDescent::Subrule' )
15960             ],
15961             'line' => undef,
15962             'number' => 0,
15963             'patcount' => 0,
15964             'strcount' => 0,
15965             'uncommit' => undef
15966             }, 'Parse::RecDescent::Production' )
15967             ],
15968             'vars' => ''
15969             }, 'Parse::RecDescent::Rule' ),
15970             'kvpair' => bless( {
15971             'calls' => [
15972             'key',
15973             'value'
15974             ],
15975             'changed' => 0,
15976             'impcount' => 0,
15977             'line' => 59,
15978             'name' => 'kvpair',
15979             'opcount' => 0,
15980             'prods' => [
15981             bless( {
15982             'actcount' => 1,
15983             'dircount' => 0,
15984             'error' => undef,
15985             'items' => [
15986             bless( {
15987             'description' => '\')\'',
15988             'hashname' => '__STRING1__',
15989             'line' => 59,
15990             'lookahead' => -1,
15991             'pattern' => ')'
15992             }, 'Parse::RecDescent::InterpLit' ),
15993             bless( {
15994             'argcode' => undef,
15995             'implicit' => undef,
15996             'line' => 59,
15997             'lookahead' => 0,
15998             'matchrule' => 0,
15999             'subrule' => 'key'
16000             }, 'Parse::RecDescent::Subrule' ),
16001             bless( {
16002             'argcode' => undef,
16003             'implicit' => undef,
16004             'line' => 59,
16005             'lookahead' => 0,
16006             'matchrule' => 0,
16007             'subrule' => 'value'
16008             }, 'Parse::RecDescent::Subrule' ),
16009             bless( {
16010             'code' => '{ $return = { $item{key} => $item{value} } }',
16011             'hashname' => '__ACTION1__',
16012             'line' => 60,
16013             'lookahead' => 0
16014             }, 'Parse::RecDescent::Action' )
16015             ],
16016             'line' => undef,
16017             'number' => 0,
16018             'patcount' => 0,
16019             'strcount' => 1,
16020             'uncommit' => undef
16021             }, 'Parse::RecDescent::Production' )
16022             ],
16023             'vars' => ''
16024             }, 'Parse::RecDescent::Rule' ),
16025             'mailboxname' => bless( {
16026             'calls' => [
16027             'NIL',
16028             'STRING'
16029             ],
16030             'changed' => 0,
16031             'impcount' => 0,
16032             'line' => 80,
16033             'name' => 'mailboxname',
16034             'opcount' => 0,
16035             'prods' => [
16036             bless( {
16037             'actcount' => 0,
16038             'dircount' => 0,
16039             'error' => undef,
16040             'items' => [
16041             bless( {
16042             'argcode' => undef,
16043             'implicit' => undef,
16044             'line' => 80,
16045             'lookahead' => 0,
16046             'matchrule' => 0,
16047             'subrule' => 'NIL'
16048             }, 'Parse::RecDescent::Subrule' )
16049             ],
16050             'line' => undef,
16051             'number' => 0,
16052             'patcount' => 0,
16053             'strcount' => 0,
16054             'uncommit' => undef
16055             }, 'Parse::RecDescent::Production' ),
16056             bless( {
16057             'actcount' => 0,
16058             'dircount' => 0,
16059             'error' => undef,
16060             'items' => [
16061             bless( {
16062             'argcode' => undef,
16063             'implicit' => undef,
16064             'line' => 80,
16065             'lookahead' => 0,
16066             'matchrule' => 0,
16067             'subrule' => 'STRING'
16068             }, 'Parse::RecDescent::Subrule' )
16069             ],
16070             'line' => 80,
16071             'number' => 1,
16072             'patcount' => 0,
16073             'strcount' => 0,
16074             'uncommit' => undef
16075             }, 'Parse::RecDescent::Production' )
16076             ],
16077             'vars' => ''
16078             }, 'Parse::RecDescent::Rule' ),
16079             'messageid' => bless( {
16080             'calls' => [
16081             'NIL',
16082             'STRING'
16083             ],
16084             'changed' => 0,
16085             'impcount' => 0,
16086             'line' => 93,
16087             'name' => 'messageid',
16088             'opcount' => 0,
16089             'prods' => [
16090             bless( {
16091             'actcount' => 0,
16092             'dircount' => 0,
16093             'error' => undef,
16094             'items' => [
16095             bless( {
16096             'argcode' => undef,
16097             'implicit' => undef,
16098             'line' => 93,
16099             'lookahead' => 0,
16100             'matchrule' => 0,
16101             'subrule' => 'NIL'
16102             }, 'Parse::RecDescent::Subrule' )
16103             ],
16104             'line' => undef,
16105             'number' => 0,
16106             'patcount' => 0,
16107             'strcount' => 0,
16108             'uncommit' => undef
16109             }, 'Parse::RecDescent::Production' ),
16110             bless( {
16111             'actcount' => 0,
16112             'dircount' => 0,
16113             'error' => undef,
16114             'items' => [
16115             bless( {
16116             'argcode' => undef,
16117             'implicit' => undef,
16118             'line' => 93,
16119             'lookahead' => 0,
16120             'matchrule' => 0,
16121             'subrule' => 'STRING'
16122             }, 'Parse::RecDescent::Subrule' )
16123             ],
16124             'line' => 93,
16125             'number' => 1,
16126             'patcount' => 0,
16127             'strcount' => 0,
16128             'uncommit' => undef
16129             }, 'Parse::RecDescent::Production' )
16130             ],
16131             'vars' => ''
16132             }, 'Parse::RecDescent::Rule' ),
16133             'multipart' => bless( {
16134             'calls' => [
16135             'subpart',
16136             'bodysubtype',
16137             'bodyparms',
16138             'bodydisp',
16139             'bodylang',
16140             'bodyloc',
16141             'bodyextra',
16142             'bodyextensions'
16143             ],
16144             'changed' => 0,
16145             'impcount' => 0,
16146             'line' => 163,
16147             'name' => 'multipart',
16148             'opcount' => 0,
16149             'prods' => [
16150             bless( {
16151             'actcount' => 1,
16152             'dircount' => 2,
16153             'error' => undef,
16154             'items' => [
16155             bless( {
16156             'argcode' => undef,
16157             'expected' => undef,
16158             'line' => 163,
16159             'lookahead' => 0,
16160             'matchrule' => 0,
16161             'max' => 100000000,
16162             'min' => 1,
16163             'repspec' => 's',
16164             'subrule' => 'subpart'
16165             }, 'Parse::RecDescent::Repetition' ),
16166             bless( {
16167             'code' => '$commit = 1',
16168             'hashname' => '__DIRECTIVE1__',
16169             'line' => 163,
16170             'lookahead' => 0,
16171             'name' => ''
16172             }, 'Parse::RecDescent::Directive' ),
16173             bless( {
16174             'argcode' => undef,
16175             'implicit' => undef,
16176             'line' => 163,
16177             'lookahead' => 0,
16178             'matchrule' => 0,
16179             'subrule' => 'bodysubtype'
16180             }, 'Parse::RecDescent::Subrule' ),
16181             bless( {
16182             'argcode' => undef,
16183             'expected' => undef,
16184             'line' => 164,
16185             'lookahead' => 0,
16186             'matchrule' => 0,
16187             'max' => 1,
16188             'min' => 0,
16189             'repspec' => '?',
16190             'subrule' => 'bodyparms'
16191             }, 'Parse::RecDescent::Repetition' ),
16192             bless( {
16193             'argcode' => undef,
16194             'expected' => undef,
16195             'line' => 164,
16196             'lookahead' => 0,
16197             'matchrule' => 0,
16198             'max' => 1,
16199             'min' => 0,
16200             'repspec' => '?',
16201             'subrule' => 'bodydisp'
16202             }, 'Parse::RecDescent::Repetition' ),
16203             bless( {
16204             'argcode' => undef,
16205             'expected' => undef,
16206             'line' => 164,
16207             'lookahead' => 0,
16208             'matchrule' => 0,
16209             'max' => 1,
16210             'min' => 0,
16211             'repspec' => '?',
16212             'subrule' => 'bodylang'
16213             }, 'Parse::RecDescent::Repetition' ),
16214             bless( {
16215             'argcode' => undef,
16216             'expected' => undef,
16217             'line' => 164,
16218             'lookahead' => 0,
16219             'matchrule' => 0,
16220             'max' => 1,
16221             'min' => 0,
16222             'repspec' => '?',
16223             'subrule' => 'bodyloc'
16224             }, 'Parse::RecDescent::Repetition' ),
16225             bless( {
16226             'argcode' => undef,
16227             'expected' => undef,
16228             'line' => 164,
16229             'lookahead' => 0,
16230             'matchrule' => 0,
16231             'max' => 1,
16232             'min' => 0,
16233             'repspec' => '?',
16234             'subrule' => 'bodyextra'
16235             }, 'Parse::RecDescent::Repetition' ),
16236             bless( {
16237             'argcode' => undef,
16238             'expected' => undef,
16239             'line' => 164,
16240             'lookahead' => 0,
16241             'matchrule' => 0,
16242             'max' => 100000000,
16243             'min' => 0,
16244             'repspec' => 's?',
16245             'subrule' => 'bodyextensions'
16246             }, 'Parse::RecDescent::Repetition' ),
16247             bless( {
16248             'code' => 'push @{$thisparser->{deferred}}, sub { $subpartCount = 0 };',
16249             'hashname' => '__DIRECTIVE2__',
16250             'line' => 165,
16251             'lookahead' => 0,
16252             'name' => ''
16253             }, 'Parse::RecDescent::Directive' ),
16254             bless( {
16255             'code' => '{ $return =
16256             { bodysubtype => $item{bodysubtype}
16257             , bodytype => \'MULTIPART\'
16258             , bodystructure => $item{\'subpart(s)\'}
16259             };
16260             take_optional_items($return, \\%item
16261             , qw/bodyparms bodydisp bodylang bodyloc bodyextra/);
16262             1;
16263             }',
16264             'hashname' => '__ACTION1__',
16265             'line' => 166,
16266             'lookahead' => 0
16267             }, 'Parse::RecDescent::Action' )
16268             ],
16269             'line' => undef,
16270             'number' => 0,
16271             'patcount' => 0,
16272             'strcount' => 0,
16273             'uncommit' => undef
16274             }, 'Parse::RecDescent::Production' )
16275             ],
16276             'vars' => ''
16277             }, 'Parse::RecDescent::Rule' ),
16278             'nestedmessage' => bless( {
16279             'calls' => [
16280             'rfc822message',
16281             'bodyparms',
16282             'bodyid',
16283             'bodydesc',
16284             'bodyenc',
16285             'bodysize',
16286             'envelopestruct',
16287             'bodystructure',
16288             'textlines',
16289             'bodyMD5',
16290             'bodydisp',
16291             'bodylang',
16292             'bodyextra'
16293             ],
16294             'changed' => 0,
16295             'impcount' => 0,
16296             'line' => 142,
16297             'name' => 'nestedmessage',
16298             'opcount' => 0,
16299             'prods' => [
16300             bless( {
16301             'actcount' => 1,
16302             'dircount' => 1,
16303             'error' => undef,
16304             'items' => [
16305             bless( {
16306             'argcode' => undef,
16307             'implicit' => undef,
16308             'line' => 142,
16309             'lookahead' => 0,
16310             'matchrule' => 0,
16311             'subrule' => 'rfc822message'
16312             }, 'Parse::RecDescent::Subrule' ),
16313             bless( {
16314             'code' => '$commit = 1',
16315             'hashname' => '__DIRECTIVE1__',
16316             'line' => 142,
16317             'lookahead' => 0,
16318             'name' => ''
16319             }, 'Parse::RecDescent::Directive' ),
16320             bless( {
16321             'argcode' => undef,
16322             'implicit' => undef,
16323             'line' => 142,
16324             'lookahead' => 0,
16325             'matchrule' => 0,
16326             'subrule' => 'bodyparms'
16327             }, 'Parse::RecDescent::Subrule' ),
16328             bless( {
16329             'argcode' => undef,
16330             'implicit' => undef,
16331             'line' => 142,
16332             'lookahead' => 0,
16333             'matchrule' => 0,
16334             'subrule' => 'bodyid'
16335             }, 'Parse::RecDescent::Subrule' ),
16336             bless( {
16337             'argcode' => undef,
16338             'implicit' => undef,
16339             'line' => 142,
16340             'lookahead' => 0,
16341             'matchrule' => 0,
16342             'subrule' => 'bodydesc'
16343             }, 'Parse::RecDescent::Subrule' ),
16344             bless( {
16345             'argcode' => undef,
16346             'implicit' => undef,
16347             'line' => 142,
16348             'lookahead' => 0,
16349             'matchrule' => 0,
16350             'subrule' => 'bodyenc'
16351             }, 'Parse::RecDescent::Subrule' ),
16352             bless( {
16353             'argcode' => undef,
16354             'implicit' => undef,
16355             'line' => 143,
16356             'lookahead' => 0,
16357             'matchrule' => 0,
16358             'subrule' => 'bodysize'
16359             }, 'Parse::RecDescent::Subrule' ),
16360             bless( {
16361             'argcode' => undef,
16362             'expected' => undef,
16363             'line' => 144,
16364             'lookahead' => 0,
16365             'matchrule' => 0,
16366             'max' => 1,
16367             'min' => 0,
16368             'repspec' => '?',
16369             'subrule' => 'envelopestruct'
16370             }, 'Parse::RecDescent::Repetition' ),
16371             bless( {
16372             'argcode' => undef,
16373             'expected' => undef,
16374             'line' => 144,
16375             'lookahead' => 0,
16376             'matchrule' => 0,
16377             'max' => 1,
16378             'min' => 0,
16379             'repspec' => '?',
16380             'subrule' => 'bodystructure'
16381             }, 'Parse::RecDescent::Repetition' ),
16382             bless( {
16383             'argcode' => undef,
16384             'expected' => undef,
16385             'line' => 144,
16386             'lookahead' => 0,
16387             'matchrule' => 0,
16388             'max' => 1,
16389             'min' => 0,
16390             'repspec' => '?',
16391             'subrule' => 'textlines'
16392             }, 'Parse::RecDescent::Repetition' ),
16393             bless( {
16394             'argcode' => undef,
16395             'expected' => undef,
16396             'line' => 145,
16397             'lookahead' => 0,
16398             'matchrule' => 0,
16399             'max' => 1,
16400             'min' => 0,
16401             'repspec' => '?',
16402             'subrule' => 'bodyMD5'
16403             }, 'Parse::RecDescent::Repetition' ),
16404             bless( {
16405             'argcode' => undef,
16406             'expected' => undef,
16407             'line' => 145,
16408             'lookahead' => 0,
16409             'matchrule' => 0,
16410             'max' => 1,
16411             'min' => 0,
16412             'repspec' => '?',
16413             'subrule' => 'bodydisp'
16414             }, 'Parse::RecDescent::Repetition' ),
16415             bless( {
16416             'argcode' => undef,
16417             'expected' => undef,
16418             'line' => 145,
16419             'lookahead' => 0,
16420             'matchrule' => 0,
16421             'max' => 1,
16422             'min' => 0,
16423             'repspec' => '?',
16424             'subrule' => 'bodylang'
16425             }, 'Parse::RecDescent::Repetition' ),
16426             bless( {
16427             'argcode' => undef,
16428             'expected' => undef,
16429             'line' => 145,
16430             'lookahead' => 0,
16431             'matchrule' => 0,
16432             'max' => 1,
16433             'min' => 0,
16434             'repspec' => '?',
16435             'subrule' => 'bodyextra'
16436             }, 'Parse::RecDescent::Repetition' ),
16437             bless( {
16438             'code' => '{
16439             $return = {};
16440             $return->{$_} = $item{$_}
16441             for qw/bodyparms bodyid bodydesc bodyenc bodysize/;
16442             # envelopestruct bodystructure textlines/;
16443              
16444             take_optional_items($return, \\%item
16445             , qw/envelopestruct bodystructure textlines/
16446             , qw/bodyMD5 bodydisp bodylang bodyextra/);
16447              
16448             merge_hash($return, $item{bodystructure}[0]);
16449             merge_hash($return, $item{basicfields});
16450             $return->{bodytype} = "MESSAGE" ;
16451             $return->{bodysubtype} = "RFC822" ;
16452             1;
16453             }',
16454             'hashname' => '__ACTION1__',
16455             'line' => 146,
16456             'lookahead' => 0
16457             }, 'Parse::RecDescent::Action' )
16458             ],
16459             'line' => undef,
16460             'number' => 0,
16461             'patcount' => 0,
16462             'strcount' => 0,
16463             'uncommit' => undef
16464             }, 'Parse::RecDescent::Production' )
16465             ],
16466             'vars' => ''
16467             }, 'Parse::RecDescent::Rule' ),
16468             'othertypemessage' => bless( {
16469             'calls' => [
16470             'bodytype',
16471             'basicfields',
16472             'bodyMD5',
16473             'bodydisp',
16474             'bodylang',
16475             'bodyextra'
16476             ],
16477             'changed' => 0,
16478             'impcount' => 0,
16479             'line' => 133,
16480             'name' => 'othertypemessage',
16481             'opcount' => 0,
16482             'prods' => [
16483             bless( {
16484             'actcount' => 1,
16485             'dircount' => 0,
16486             'error' => undef,
16487             'items' => [
16488             bless( {
16489             'argcode' => undef,
16490             'implicit' => undef,
16491             'line' => 133,
16492             'lookahead' => 0,
16493             'matchrule' => 0,
16494             'subrule' => 'bodytype'
16495             }, 'Parse::RecDescent::Subrule' ),
16496             bless( {
16497             'argcode' => undef,
16498             'implicit' => undef,
16499             'line' => 133,
16500             'lookahead' => 0,
16501             'matchrule' => 0,
16502             'subrule' => 'basicfields'
16503             }, 'Parse::RecDescent::Subrule' ),
16504             bless( {
16505             'argcode' => undef,
16506             'expected' => undef,
16507             'line' => 133,
16508             'lookahead' => 0,
16509             'matchrule' => 0,
16510             'max' => 1,
16511             'min' => 0,
16512             'repspec' => '?',
16513             'subrule' => 'bodyMD5'
16514             }, 'Parse::RecDescent::Repetition' ),
16515             bless( {
16516             'argcode' => undef,
16517             'expected' => undef,
16518             'line' => 133,
16519             'lookahead' => 0,
16520             'matchrule' => 0,
16521             'max' => 1,
16522             'min' => 0,
16523             'repspec' => '?',
16524             'subrule' => 'bodydisp'
16525             }, 'Parse::RecDescent::Repetition' ),
16526             bless( {
16527             'argcode' => undef,
16528             'expected' => undef,
16529             'line' => 134,
16530             'lookahead' => 0,
16531             'matchrule' => 0,
16532             'max' => 1,
16533             'min' => 0,
16534             'repspec' => '?',
16535             'subrule' => 'bodylang'
16536             }, 'Parse::RecDescent::Repetition' ),
16537             bless( {
16538             'argcode' => undef,
16539             'expected' => undef,
16540             'line' => 134,
16541             'lookahead' => 0,
16542             'matchrule' => 0,
16543             'max' => 1,
16544             'min' => 0,
16545             'repspec' => '?',
16546             'subrule' => 'bodyextra'
16547             }, 'Parse::RecDescent::Repetition' ),
16548             bless( {
16549             'code' => '{ $return = { bodytype => $item{bodytype} };
16550             take_optional_items($return, \\%item
16551             , qw/bodyMD5 bodydisp bodylang bodyextra/ );
16552             merge_hash($return, $item{basicfields});
16553             1;
16554             }',
16555             'hashname' => '__ACTION1__',
16556             'line' => 135,
16557             'lookahead' => 0
16558             }, 'Parse::RecDescent::Action' )
16559             ],
16560             'line' => undef,
16561             'number' => 0,
16562             'patcount' => 0,
16563             'strcount' => 0,
16564             'uncommit' => undef
16565             }, 'Parse::RecDescent::Production' )
16566             ],
16567             'vars' => ''
16568             }, 'Parse::RecDescent::Rule' ),
16569             'part' => bless( {
16570             'calls' => [
16571             'multipart',
16572             'textmessage',
16573             'nestedmessage',
16574             'othertypemessage'
16575             ],
16576             'changed' => 0,
16577             'impcount' => 0,
16578             'line' => 178,
16579             'name' => 'part',
16580             'opcount' => 0,
16581             'prods' => [
16582             bless( {
16583             'actcount' => 1,
16584             'dircount' => 0,
16585             'error' => undef,
16586             'items' => [
16587             bless( {
16588             'argcode' => undef,
16589             'implicit' => undef,
16590             'line' => 178,
16591             'lookahead' => 0,
16592             'matchrule' => 0,
16593             'subrule' => 'multipart'
16594             }, 'Parse::RecDescent::Subrule' ),
16595             bless( {
16596             'code' => '{ $return = bless $item{multipart}, $mibs }',
16597             'hashname' => '__ACTION1__',
16598             'line' => 178,
16599             'lookahead' => 0
16600             }, 'Parse::RecDescent::Action' )
16601             ],
16602             'line' => undef,
16603             'number' => 0,
16604             'patcount' => 0,
16605             'strcount' => 0,
16606             'uncommit' => undef
16607             }, 'Parse::RecDescent::Production' ),
16608             bless( {
16609             'actcount' => 1,
16610             'dircount' => 0,
16611             'error' => undef,
16612             'items' => [
16613             bless( {
16614             'argcode' => undef,
16615             'implicit' => undef,
16616             'line' => 179,
16617             'lookahead' => 0,
16618             'matchrule' => 0,
16619             'subrule' => 'textmessage'
16620             }, 'Parse::RecDescent::Subrule' ),
16621             bless( {
16622             'code' => '{ $return = bless $item{textmessage}, $mibs }',
16623             'hashname' => '__ACTION1__',
16624             'line' => 179,
16625             'lookahead' => 0
16626             }, 'Parse::RecDescent::Action' )
16627             ],
16628             'line' => 179,
16629             'number' => 1,
16630             'patcount' => 0,
16631             'strcount' => 0,
16632             'uncommit' => undef
16633             }, 'Parse::RecDescent::Production' ),
16634             bless( {
16635             'actcount' => 1,
16636             'dircount' => 0,
16637             'error' => undef,
16638             'items' => [
16639             bless( {
16640             'argcode' => undef,
16641             'implicit' => undef,
16642             'line' => 180,
16643             'lookahead' => 0,
16644             'matchrule' => 0,
16645             'subrule' => 'nestedmessage'
16646             }, 'Parse::RecDescent::Subrule' ),
16647             bless( {
16648             'code' => '{ $return = bless $item{nestedmessage}, $mibs }',
16649             'hashname' => '__ACTION1__',
16650             'line' => 180,
16651             'lookahead' => 0
16652             }, 'Parse::RecDescent::Action' )
16653             ],
16654             'line' => 180,
16655             'number' => 2,
16656             'patcount' => 0,
16657             'strcount' => 0,
16658             'uncommit' => undef
16659             }, 'Parse::RecDescent::Production' ),
16660             bless( {
16661             'actcount' => 1,
16662             'dircount' => 0,
16663             'error' => undef,
16664             'items' => [
16665             bless( {
16666             'argcode' => undef,
16667             'implicit' => undef,
16668             'line' => 181,
16669             'lookahead' => 0,
16670             'matchrule' => 0,
16671             'subrule' => 'othertypemessage'
16672             }, 'Parse::RecDescent::Subrule' ),
16673             bless( {
16674             'code' => '{ $return = bless $item{othertypemessage}, $mibs }',
16675             'hashname' => '__ACTION1__',
16676             'line' => 181,
16677             'lookahead' => 0
16678             }, 'Parse::RecDescent::Action' )
16679             ],
16680             'line' => 181,
16681             'number' => 3,
16682             'patcount' => 0,
16683             'strcount' => 0,
16684             'uncommit' => undef
16685             }, 'Parse::RecDescent::Production' )
16686             ],
16687             'vars' => ''
16688             }, 'Parse::RecDescent::Rule' ),
16689             'personalname' => bless( {
16690             'calls' => [
16691             'NIL',
16692             'STRING'
16693             ],
16694             'changed' => 0,
16695             'impcount' => 0,
16696             'line' => 78,
16697             'name' => 'personalname',
16698             'opcount' => 0,
16699             'prods' => [
16700             bless( {
16701             'actcount' => 0,
16702             'dircount' => 0,
16703             'error' => undef,
16704             'items' => [
16705             bless( {
16706             'argcode' => undef,
16707             'implicit' => undef,
16708             'line' => 78,
16709             'lookahead' => 0,
16710             'matchrule' => 0,
16711             'subrule' => 'NIL'
16712             }, 'Parse::RecDescent::Subrule' )
16713             ],
16714             'line' => undef,
16715             'number' => 0,
16716             'patcount' => 0,
16717             'strcount' => 0,
16718             'uncommit' => undef
16719             }, 'Parse::RecDescent::Production' ),
16720             bless( {
16721             'actcount' => 0,
16722             'dircount' => 0,
16723             'error' => undef,
16724             'items' => [
16725             bless( {
16726             'argcode' => undef,
16727             'implicit' => undef,
16728             'line' => 78,
16729             'lookahead' => 0,
16730             'matchrule' => 0,
16731             'subrule' => 'STRING'
16732             }, 'Parse::RecDescent::Subrule' )
16733             ],
16734             'line' => 78,
16735             'number' => 1,
16736             'patcount' => 0,
16737             'strcount' => 0,
16738             'uncommit' => undef
16739             }, 'Parse::RecDescent::Production' )
16740             ],
16741             'vars' => ''
16742             }, 'Parse::RecDescent::Rule' ),
16743             'replyto' => bless( {
16744             'calls' => [
16745             'ADDRESSES'
16746             ],
16747             'changed' => 0,
16748             'impcount' => 0,
16749             'line' => 102,
16750             'name' => 'replyto',
16751             'opcount' => 0,
16752             'prods' => [
16753             bless( {
16754             'actcount' => 0,
16755             'dircount' => 0,
16756             'error' => undef,
16757             'items' => [
16758             bless( {
16759             'argcode' => undef,
16760             'implicit' => undef,
16761             'line' => 102,
16762             'lookahead' => 0,
16763             'matchrule' => 0,
16764             'subrule' => 'ADDRESSES'
16765             }, 'Parse::RecDescent::Subrule' )
16766             ],
16767             'line' => undef,
16768             'number' => 0,
16769             'patcount' => 0,
16770             'strcount' => 0,
16771             'uncommit' => undef
16772             }, 'Parse::RecDescent::Production' )
16773             ],
16774             'vars' => ''
16775             }, 'Parse::RecDescent::Rule' ),
16776             'rfc822message' => bless( {
16777             'calls' => [
16778             'MESSAGE',
16779             'RFC822'
16780             ],
16781             'changed' => 0,
16782             'impcount' => 0,
16783             'line' => 52,
16784             'name' => 'rfc822message',
16785             'opcount' => 0,
16786             'prods' => [
16787             bless( {
16788             'actcount' => 1,
16789             'dircount' => 0,
16790             'error' => undef,
16791             'items' => [
16792             bless( {
16793             'argcode' => undef,
16794             'implicit' => undef,
16795             'line' => 52,
16796             'lookahead' => 0,
16797             'matchrule' => 0,
16798             'subrule' => 'MESSAGE'
16799             }, 'Parse::RecDescent::Subrule' ),
16800             bless( {
16801             'argcode' => undef,
16802             'implicit' => undef,
16803             'line' => 52,
16804             'lookahead' => 0,
16805             'matchrule' => 0,
16806             'subrule' => 'RFC822'
16807             }, 'Parse::RecDescent::Subrule' ),
16808             bless( {
16809             'code' => '{ $return = "MESSAGE RFC822" }',
16810             'hashname' => '__ACTION1__',
16811             'line' => 52,
16812             'lookahead' => 0
16813             }, 'Parse::RecDescent::Action' )
16814             ],
16815             'line' => undef,
16816             'number' => 0,
16817             'patcount' => 0,
16818             'strcount' => 0,
16819             'uncommit' => undef
16820             }, 'Parse::RecDescent::Production' )
16821             ],
16822             'vars' => ''
16823             }, 'Parse::RecDescent::Rule' ),
16824             'sender' => bless( {
16825             'calls' => [
16826             'ADDRESSES'
16827             ],
16828             'changed' => 0,
16829             'impcount' => 0,
16830             'line' => 103,
16831             'name' => 'sender',
16832             'opcount' => 0,
16833             'prods' => [
16834             bless( {
16835             'actcount' => 0,
16836             'dircount' => 0,
16837             'error' => undef,
16838             'items' => [
16839             bless( {
16840             'argcode' => undef,
16841             'implicit' => undef,
16842             'line' => 103,
16843             'lookahead' => 0,
16844             'matchrule' => 0,
16845             'subrule' => 'ADDRESSES'
16846             }, 'Parse::RecDescent::Subrule' )
16847             ],
16848             'line' => undef,
16849             'number' => 0,
16850             'patcount' => 0,
16851             'strcount' => 0,
16852             'uncommit' => undef
16853             }, 'Parse::RecDescent::Production' )
16854             ],
16855             'vars' => ''
16856             }, 'Parse::RecDescent::Rule' ),
16857             'sourceroute' => bless( {
16858             'calls' => [
16859             'NIL',
16860             'STRING'
16861             ],
16862             'changed' => 0,
16863             'impcount' => 0,
16864             'line' => 79,
16865             'name' => 'sourceroute',
16866             'opcount' => 0,
16867             'prods' => [
16868             bless( {
16869             'actcount' => 0,
16870             'dircount' => 0,
16871             'error' => undef,
16872             'items' => [
16873             bless( {
16874             'argcode' => undef,
16875             'implicit' => undef,
16876             'line' => 79,
16877             'lookahead' => 0,
16878             'matchrule' => 0,
16879             'subrule' => 'NIL'
16880             }, 'Parse::RecDescent::Subrule' )
16881             ],
16882             'line' => undef,
16883             'number' => 0,
16884             'patcount' => 0,
16885             'strcount' => 0,
16886             'uncommit' => undef
16887             }, 'Parse::RecDescent::Production' ),
16888             bless( {
16889             'actcount' => 0,
16890             'dircount' => 0,
16891             'error' => undef,
16892             'items' => [
16893             bless( {
16894             'argcode' => undef,
16895             'implicit' => undef,
16896             'line' => 79,
16897             'lookahead' => 0,
16898             'matchrule' => 0,
16899             'subrule' => 'STRING'
16900             }, 'Parse::RecDescent::Subrule' )
16901             ],
16902             'line' => 79,
16903             'number' => 1,
16904             'patcount' => 0,
16905             'strcount' => 0,
16906             'uncommit' => undef
16907             }, 'Parse::RecDescent::Production' )
16908             ],
16909             'vars' => ''
16910             }, 'Parse::RecDescent::Rule' ),
16911             'start' => bless( {
16912             'calls' => [
16913             'part'
16914             ],
16915             'changed' => 0,
16916             'impcount' => 0,
16917             'line' => 186,
16918             'name' => 'start',
16919             'opcount' => 0,
16920             'prods' => [
16921             bless( {
16922             'actcount' => 1,
16923             'dircount' => 0,
16924             'error' => undef,
16925             'items' => [
16926             bless( {
16927             'description' => '/.*?\\\\(.*?BODYSTRUCTURE \\\\(/i',
16928             'hashname' => '__PATTERN1__',
16929             'ldelim' => '/',
16930             'line' => 186,
16931             'lookahead' => 0,
16932             'mod' => 'i',
16933             'pattern' => '.*?\\(.*?BODYSTRUCTURE \\(',
16934             'rdelim' => '/'
16935             }, 'Parse::RecDescent::Token' ),
16936             bless( {
16937             'argcode' => undef,
16938             'expected' => undef,
16939             'line' => 186,
16940             'lookahead' => 0,
16941             'matchrule' => 0,
16942             'max' => 1,
16943             'min' => 1,
16944             'repspec' => '1',
16945             'subrule' => 'part'
16946             }, 'Parse::RecDescent::Repetition' ),
16947             bless( {
16948             'description' => '/\\\\).*\\\\)\\\\r?\\\\n?/',
16949             'hashname' => '__PATTERN2__',
16950             'ldelim' => '/',
16951             'line' => 186,
16952             'lookahead' => 0,
16953             'mod' => '',
16954             'pattern' => '\\).*\\)\\r?\\n?',
16955             'rdelim' => '/'
16956             }, 'Parse::RecDescent::Token' ),
16957             bless( {
16958             'code' => '{ $return = $item{\'part(1)\'}[0] }',
16959             'hashname' => '__ACTION1__',
16960             'line' => 187,
16961             'lookahead' => 0
16962             }, 'Parse::RecDescent::Action' )
16963             ],
16964             'line' => undef,
16965             'number' => 0,
16966             'patcount' => 2,
16967             'strcount' => 0,
16968             'uncommit' => undef
16969             }, 'Parse::RecDescent::Production' )
16970             ],
16971             'vars' => ''
16972             }, 'Parse::RecDescent::Rule' ),
16973             'subject' => bless( {
16974             'calls' => [
16975             'NIL',
16976             'STRING'
16977             ],
16978             'changed' => 0,
16979             'impcount' => 0,
16980             'line' => 91,
16981             'name' => 'subject',
16982             'opcount' => 0,
16983             'prods' => [
16984             bless( {
16985             'actcount' => 0,
16986             'dircount' => 0,
16987             'error' => undef,
16988             'items' => [
16989             bless( {
16990             'argcode' => undef,
16991             'implicit' => undef,
16992             'line' => 91,
16993             'lookahead' => 0,
16994             'matchrule' => 0,
16995             'subrule' => 'NIL'
16996             }, 'Parse::RecDescent::Subrule' )
16997             ],
16998             'line' => undef,
16999             'number' => 0,
17000             'patcount' => 0,
17001             'strcount' => 0,
17002             'uncommit' => undef
17003             }, 'Parse::RecDescent::Production' ),
17004             bless( {
17005             'actcount' => 0,
17006             'dircount' => 0,
17007             'error' => undef,
17008             'items' => [
17009             bless( {
17010             'argcode' => undef,
17011             'implicit' => undef,
17012             'line' => 91,
17013             'lookahead' => 0,
17014             'matchrule' => 0,
17015             'subrule' => 'STRING'
17016             }, 'Parse::RecDescent::Subrule' )
17017             ],
17018             'line' => 91,
17019             'number' => 1,
17020             'patcount' => 0,
17021             'strcount' => 0,
17022             'uncommit' => undef
17023             }, 'Parse::RecDescent::Production' )
17024             ],
17025             'vars' => ''
17026             }, 'Parse::RecDescent::Rule' ),
17027             'subpart' => bless( {
17028             'calls' => [
17029             'part'
17030             ],
17031             'changed' => 0,
17032             'impcount' => 0,
17033             'line' => 176,
17034             'name' => 'subpart',
17035             'opcount' => 0,
17036             'prods' => [
17037             bless( {
17038             'actcount' => 1,
17039             'dircount' => 1,
17040             'error' => undef,
17041             'items' => [
17042             bless( {
17043             'description' => '\'(\'',
17044             'hashname' => '__STRING1__',
17045             'line' => 176,
17046             'lookahead' => 0,
17047             'pattern' => '('
17048             }, 'Parse::RecDescent::InterpLit' ),
17049             bless( {
17050             'argcode' => undef,
17051             'implicit' => undef,
17052             'line' => 176,
17053             'lookahead' => 0,
17054             'matchrule' => 0,
17055             'subrule' => 'part'
17056             }, 'Parse::RecDescent::Subrule' ),
17057             bless( {
17058             'description' => '\')\'',
17059             'hashname' => '__STRING2__',
17060             'line' => 176,
17061             'lookahead' => 0,
17062             'pattern' => ')'
17063             }, 'Parse::RecDescent::InterpLit' ),
17064             bless( {
17065             'code' => '{$return = $item{part}}',
17066             'hashname' => '__ACTION1__',
17067             'line' => 176,
17068             'lookahead' => 0
17069             }, 'Parse::RecDescent::Action' ),
17070             bless( {
17071             'code' => 'push @{$thisparser->{deferred}}, sub { ++$subpartCount; };',
17072             'hashname' => '__DIRECTIVE1__',
17073             'line' => 176,
17074             'lookahead' => 0,
17075             'name' => ''
17076             }, 'Parse::RecDescent::Directive' )
17077             ],
17078             'line' => undef,
17079             'number' => 0,
17080             'patcount' => 0,
17081             'strcount' => 2,
17082             'uncommit' => undef
17083             }, 'Parse::RecDescent::Production' )
17084             ],
17085             'vars' => ''
17086             }, 'Parse::RecDescent::Rule' ),
17087             'textlines' => bless( {
17088             'calls' => [
17089             'NIL',
17090             'NUMBER'
17091             ],
17092             'changed' => 0,
17093             'impcount' => 0,
17094             'line' => 50,
17095             'name' => 'textlines',
17096             'opcount' => 0,
17097             'prods' => [
17098             bless( {
17099             'actcount' => 0,
17100             'dircount' => 0,
17101             'error' => undef,
17102             'items' => [
17103             bless( {
17104             'argcode' => undef,
17105             'implicit' => undef,
17106             'line' => 50,
17107             'lookahead' => 0,
17108             'matchrule' => 0,
17109             'subrule' => 'NIL'
17110             }, 'Parse::RecDescent::Subrule' )
17111             ],
17112             'line' => undef,
17113             'number' => 0,
17114             'patcount' => 0,
17115             'strcount' => 0,
17116             'uncommit' => undef
17117             }, 'Parse::RecDescent::Production' ),
17118             bless( {
17119             'actcount' => 0,
17120             'dircount' => 0,
17121             'error' => undef,
17122             'items' => [
17123             bless( {
17124             'argcode' => undef,
17125             'implicit' => undef,
17126             'line' => 50,
17127             'lookahead' => 0,
17128             'matchrule' => 0,
17129             'subrule' => 'NUMBER'
17130             }, 'Parse::RecDescent::Subrule' )
17131             ],
17132             'line' => 50,
17133             'number' => 1,
17134             'patcount' => 0,
17135             'strcount' => 0,
17136             'uncommit' => undef
17137             }, 'Parse::RecDescent::Production' )
17138             ],
17139             'vars' => ''
17140             }, 'Parse::RecDescent::Rule' ),
17141             'textmessage' => bless( {
17142             'calls' => [
17143             'TEXT',
17144             'basicfields',
17145             'textlines',
17146             'bodyMD5',
17147             'bodydisp',
17148             'bodylang',
17149             'bodyextra',
17150             'bodyextensions'
17151             ],
17152             'changed' => 0,
17153             'impcount' => 0,
17154             'line' => 123,
17155             'name' => 'textmessage',
17156             'opcount' => 0,
17157             'prods' => [
17158             bless( {
17159             'actcount' => 1,
17160             'dircount' => 1,
17161             'error' => undef,
17162             'items' => [
17163             bless( {
17164             'argcode' => undef,
17165             'implicit' => undef,
17166             'line' => 123,
17167             'lookahead' => 0,
17168             'matchrule' => 0,
17169             'subrule' => 'TEXT'
17170             }, 'Parse::RecDescent::Subrule' ),
17171             bless( {
17172             'code' => '$commit = 1',
17173             'hashname' => '__DIRECTIVE1__',
17174             'line' => 123,
17175             'lookahead' => 0,
17176             'name' => ''
17177             }, 'Parse::RecDescent::Directive' ),
17178             bless( {
17179             'argcode' => undef,
17180             'implicit' => undef,
17181             'line' => 123,
17182             'lookahead' => 0,
17183             'matchrule' => 0,
17184             'subrule' => 'basicfields'
17185             }, 'Parse::RecDescent::Subrule' ),
17186             bless( {
17187             'argcode' => undef,
17188             'expected' => undef,
17189             'line' => 123,
17190             'lookahead' => 0,
17191             'matchrule' => 0,
17192             'max' => 1,
17193             'min' => 0,
17194             'repspec' => '?',
17195             'subrule' => 'textlines'
17196             }, 'Parse::RecDescent::Repetition' ),
17197             bless( {
17198             'argcode' => undef,
17199             'expected' => undef,
17200             'line' => 123,
17201             'lookahead' => 0,
17202             'matchrule' => 0,
17203             'max' => 1,
17204             'min' => 0,
17205             'repspec' => '?',
17206             'subrule' => 'bodyMD5'
17207             }, 'Parse::RecDescent::Repetition' ),
17208             bless( {
17209             'argcode' => undef,
17210             'expected' => undef,
17211             'line' => 124,
17212             'lookahead' => 0,
17213             'matchrule' => 0,
17214             'max' => 1,
17215             'min' => 0,
17216             'repspec' => '?',
17217             'subrule' => 'bodydisp'
17218             }, 'Parse::RecDescent::Repetition' ),
17219             bless( {
17220             'argcode' => undef,
17221             'expected' => undef,
17222             'line' => 124,
17223             'lookahead' => 0,
17224             'matchrule' => 0,
17225             'max' => 1,
17226             'min' => 0,
17227             'repspec' => '?',
17228             'subrule' => 'bodylang'
17229             }, 'Parse::RecDescent::Repetition' ),
17230             bless( {
17231             'argcode' => undef,
17232             'expected' => undef,
17233             'line' => 124,
17234             'lookahead' => 0,
17235             'matchrule' => 0,
17236             'max' => 1,
17237             'min' => 0,
17238             'repspec' => '?',
17239             'subrule' => 'bodyextra'
17240             }, 'Parse::RecDescent::Repetition' ),
17241             bless( {
17242             'argcode' => undef,
17243             'expected' => undef,
17244             'line' => 124,
17245             'lookahead' => 0,
17246             'matchrule' => 0,
17247             'max' => 100000000,
17248             'min' => 0,
17249             'repspec' => 's?',
17250             'subrule' => 'bodyextensions'
17251             }, 'Parse::RecDescent::Repetition' ),
17252             bless( {
17253             'code' => '{
17254             $return = $item{basicfields} || {};
17255             $return->{bodytype} = \'TEXT\';
17256             take_optional_items($return, \\%item
17257             , qw/textlines bodyMD5 bodydisp bodylang bodyextra/);
17258             1;
17259             }',
17260             'hashname' => '__ACTION1__',
17261             'line' => 125,
17262             'lookahead' => 0
17263             }, 'Parse::RecDescent::Action' )
17264             ],
17265             'line' => undef,
17266             'number' => 0,
17267             'patcount' => 0,
17268             'strcount' => 0,
17269             'uncommit' => undef
17270             }, 'Parse::RecDescent::Production' )
17271             ],
17272             'vars' => ''
17273             }, 'Parse::RecDescent::Rule' ),
17274             'to' => bless( {
17275             'calls' => [
17276             'ADDRESSES'
17277             ],
17278             'changed' => 0,
17279             'impcount' => 0,
17280             'line' => 104,
17281             'name' => 'to',
17282             'opcount' => 0,
17283             'prods' => [
17284             bless( {
17285             'actcount' => 0,
17286             'dircount' => 0,
17287             'error' => undef,
17288             'items' => [
17289             bless( {
17290             'argcode' => undef,
17291             'implicit' => undef,
17292             'line' => 104,
17293             'lookahead' => 0,
17294             'matchrule' => 0,
17295             'subrule' => 'ADDRESSES'
17296             }, 'Parse::RecDescent::Subrule' )
17297             ],
17298             'line' => undef,
17299             'number' => 0,
17300             'patcount' => 0,
17301             'strcount' => 0,
17302             'uncommit' => undef
17303             }, 'Parse::RecDescent::Production' )
17304             ],
17305             'vars' => ''
17306             }, 'Parse::RecDescent::Rule' ),
17307             'value' => bless( {
17308             'calls' => [
17309             'NIL',
17310             'NUMBER',
17311             'STRING',
17312             'KVPAIRS'
17313             ],
17314             'changed' => 0,
17315             'impcount' => 0,
17316             'line' => 57,
17317             'name' => 'value',
17318             'opcount' => 0,
17319             'prods' => [
17320             bless( {
17321             'actcount' => 0,
17322             'dircount' => 0,
17323             'error' => undef,
17324             'items' => [
17325             bless( {
17326             'argcode' => undef,
17327             'implicit' => undef,
17328             'line' => 57,
17329             'lookahead' => 0,
17330             'matchrule' => 0,
17331             'subrule' => 'NIL'
17332             }, 'Parse::RecDescent::Subrule' )
17333             ],
17334             'line' => undef,
17335             'number' => 0,
17336             'patcount' => 0,
17337             'strcount' => 0,
17338             'uncommit' => undef
17339             }, 'Parse::RecDescent::Production' ),
17340             bless( {
17341             'actcount' => 0,
17342             'dircount' => 0,
17343             'error' => undef,
17344             'items' => [
17345             bless( {
17346             'argcode' => undef,
17347             'implicit' => undef,
17348             'line' => 57,
17349             'lookahead' => 0,
17350             'matchrule' => 0,
17351             'subrule' => 'NUMBER'
17352             }, 'Parse::RecDescent::Subrule' )
17353             ],
17354             'line' => 57,
17355             'number' => 1,
17356             'patcount' => 0,
17357             'strcount' => 0,
17358             'uncommit' => undef
17359             }, 'Parse::RecDescent::Production' ),
17360             bless( {
17361             'actcount' => 0,
17362             'dircount' => 0,
17363             'error' => undef,
17364             'items' => [
17365             bless( {
17366             'argcode' => undef,
17367             'implicit' => undef,
17368             'line' => 57,
17369             'lookahead' => 0,
17370             'matchrule' => 0,
17371             'subrule' => 'STRING'
17372             }, 'Parse::RecDescent::Subrule' )
17373             ],
17374             'line' => 57,
17375             'number' => 2,
17376             'patcount' => 0,
17377             'strcount' => 0,
17378             'uncommit' => undef
17379             }, 'Parse::RecDescent::Production' ),
17380             bless( {
17381             'actcount' => 0,
17382             'dircount' => 0,
17383             'error' => undef,
17384             'items' => [
17385             bless( {
17386             'argcode' => undef,
17387             'implicit' => undef,
17388             'line' => 57,
17389             'lookahead' => 0,
17390             'matchrule' => 0,
17391             'subrule' => 'KVPAIRS'
17392             }, 'Parse::RecDescent::Subrule' )
17393             ],
17394             'line' => 57,
17395             'number' => 3,
17396             'patcount' => 0,
17397             'strcount' => 0,
17398             'uncommit' => undef
17399             }, 'Parse::RecDescent::Production' )
17400             ],
17401             'vars' => ''
17402             }, 'Parse::RecDescent::Rule' )
17403             },
17404             'startcode' => ''
17405             }, 'Parse::RecDescent' );
17406             }