File Coverage

blib/lib/CSS/Prepare/Property/Values.pm
Criterion Covered Total %
statement 6 140 4.2
branch 0 4 0.0
condition 0 3 0.0
subroutine 2 68 2.9
pod 0 66 0.0
total 8 281 2.8


line stmt bran cond sub pod time code
1             package CSS::Prepare::Property::Values;
2              
3 59     59   38022 use Modern::Perl;
  59         104  
  59         336  
4 59     59   6789 use Exporter;
  59         103  
  59         1537055  
5              
6             our @ISA = qw( Exporter );
7             our @EXPORT = qw(
8             is_length_value
9             is_percentage_value
10             is_string_value
11             is_url_value
12            
13             is_background_attachment_value
14             is_background_colour_value
15             is_background_image_value
16             is_background_position_value
17             is_background_repeat_value
18             is_border_collapse_value
19             is_border_colour_value
20             is_border_radius_corner_value
21             is_border_radius_value
22             is_border_spacing_value
23             is_border_style_value
24             is_border_width_value
25             is_caption_side_value
26             is_clear_value
27             is_clip_value
28             is_colour_value
29             is_content_value
30             is_counter_increment_value
31             is_counter_reset_value
32             is_cursor_value
33             is_direction_value
34             is_display_value
35             is_empty_cells_value
36             is_float_value
37             is_font_family_value
38             is_font_size_line_height_value
39             is_font_size_value
40             is_font_style_value
41             is_font_variant_value
42             is_font_weight_value
43             is_height_value
44             is_letter_spacing_value
45             is_line_height_value
46             is_list_style_image_value
47             is_list_style_position_value
48             is_list_style_type_value
49             is_margin_width_value
50             is_max_height_value
51             is_max_width_value
52             is_min_height_value
53             is_min_width_value
54             is_offset_value
55             is_opacity_value
56             is_outline_colour_value
57             is_outline_style_value
58             is_outline_width_value
59             is_overflow_value
60             is_padding_width_value
61             is_position_value
62             is_quotes_value
63             is_table_layout_value
64             is_text_align_value
65             is_text_decoration_value
66             is_text_indent_value
67             is_text_transform_value
68             is_unicode_bidi_value
69             is_vertical_align_value
70             is_visibility_value
71             is_white_space_value
72             is_width_value
73             is_word_spacing_value
74             is_z_index_value
75            
76             @standard_directions
77             @standard_corners
78            
79             $background_attachment_value
80             $background_colour_value
81             $background_image_value
82             $background_repeat_value
83             $background_position_value
84             $border_colour_value
85             $individual_border_radius_value
86             $border_radius_corner_value
87             $border_radius_value
88             $border_style_value
89             $border_width_value
90             $colour_value
91             $font_family
92             $font_family_value
93             $font_style_value
94             $font_size_value
95             $font_style_value
96             $font_variant_value
97             $font_weight_value
98             $length_value
99             $line_height_value
100             $list_style_type_value
101             $list_style_image_value
102             $list_style_position_value
103             $margin_width_value
104             $media_types_value
105             $outline_colour_value
106             $outline_style_value
107             $outline_width_value
108             $padding_width_value
109             $positive_length_value
110             $positive_percentage_value
111             $string_value
112             $url_value
113            
114             $concise_format
115             $pretty_format
116             $concise_separator
117             $pretty_separator
118             );
119              
120              
121             # shorthands
122             our @standard_directions = qw( top right bottom left );
123             our @standard_corners = qw( top-left top-right bottom-right bottom-left );
124              
125             # primitive types
126             my $integer_value = qr{ [+-]? [0-9]+ }x;
127             my $positive_integer_value = qr{ [+]? [0-9]+ }x;
128             my $identifier_value = qr{ [a-z][a-zA-z0-9_-]* }ix;
129             my $number_value = qr{
130             (?:
131             (?: $integer_value )
132             |
133             (?: $integer_value )?
134             \. [0-9]+
135             )
136             }x;
137             my $positive_number_value = qr{
138             (?:
139             (?: $positive_integer_value )
140             |
141             (?: $positive_integer_value )?
142             \. [0-9]+
143             )
144             }x;
145             our $length_value = qr{
146             (?:
147             $number_value
148             (?: px | em | ex | in | cm | mm | pt | pc )
149             |
150             0
151             )
152             }x;
153             our $positive_length_value = qr{
154             (?:
155             $positive_number_value
156             (?: px | em | ex | in | cm | mm | pt | pc )
157             |
158             0
159             )
160             }x;
161             my $percentage_value = qr{ $number_value % }x;
162             our $positive_percentage_value = qr{ $positive_number_value % }x;
163             our $colour_value = qr{
164             (?:
165             aqua | black | blue | fuchsia | gray | green
166             | lime | maroon | navy | olive | orange | purple
167             | red | silver | teal | white | yellow
168             |
169             \# [0-9a-fA-F]{6}
170             |
171             \# [0-9a-fA-F]{3}
172             |
173             rgb\(
174             (?:
175             (?: (?: $number_value | $percentage_value ) , \s* ){2}
176             (?: $number_value | $percentage_value )
177             )
178             \)
179             )
180             }x;
181             our $string_value = qr{
182             (?:
183             \' (?: \\ \' | [^'] )* \' # single-quoted
184             | # or
185             \" (?: \\ \" | [^"] )* \" # double-quoted
186             )
187             }x;
188             our $url_value = qr{
189             url \( \s*
190             (?:
191             $string_value \s* \) # either a string
192             |
193             [^'"\)] .*? # or text not including a right paren
194             (?
195             )
196             }x;
197             my $media_types = qr{
198             (?:
199             all | braille | embossed | handheld | print
200             | projection | screen | speech | tty | tv
201             )
202             }x;
203             our $media_types_value = qr{
204             $media_types
205             (?: \, \s* $media_types )*
206             }x;
207              
208             # descriptive value types
209             our $background_attachment_value = qr{ (?: scroll | fixed | inherit ) }x;
210             our $background_colour_value
211             = qr{ (?: transparent | inherit | $colour_value ) }x;
212             our $background_image_value = qr{ (?: none | inherit | $url_value ) }x;
213             our $background_repeat_value
214             = qr{ (?: repeat | repeat-x | repeat-y | no-repeat | inherit ) }x;
215             my $background_positions_horizontal
216             = qr{ (?: left | center | centre | right ) }x;
217             my $background_positions_vertical
218             = qr{ (?: top | center | centre | bottom ) }x;
219             our $background_position_value = qr{
220             (?:
221             (?:
222             (?:
223             $percentage_value
224             | $length_value
225             | $background_positions_horizontal
226             )
227             (?:
228             \s+
229             (?:
230             $percentage_value
231             | $length_value
232             | $background_positions_vertical
233             )
234             )?
235             )
236             |
237             (?:
238             $background_positions_horizontal \s+
239             $background_positions_vertical
240             )
241             |
242             (?:
243             $background_positions_vertical \s+
244             $background_positions_horizontal
245             )
246             |
247             (?: $background_positions_vertical )
248             |
249             inherit
250             )
251             }x;
252              
253             my $border_collapse_value = qr{ (?: collapse | separate | inherit ) }x;
254             our $border_colour_value = qr{ (?: transparent | inherit | $colour_value ) }x;
255             our $individual_border_radius_value
256             = qr{ (?: $positive_length_value | $positive_percentage_value ) }x;
257             our $border_radius_corner_value = qr{
258             $individual_border_radius_value
259             (?: \s+ $individual_border_radius_value )?
260             }x;
261             our $border_radius_value = qr{
262             $individual_border_radius_value
263             (?: \s+ $individual_border_radius_value ){0,3}
264             (?:
265             \s* / \s*
266             $individual_border_radius_value
267             (?: \s+ $individual_border_radius_value ){0,3}
268             )?
269             }x;
270             my $border_spacing_value = qr{
271             (?:
272             $length_value
273             | $length_value \s+ $length_value
274             | inherit
275             )
276             }x;
277             our $border_style_value = qr{
278             (?:
279             dashed | dotted | double | groove | hidden
280             | inset | outset | ridge | solid
281              
282             | none | inherit
283             )
284             }x;
285             our $border_width_value
286             = qr{ (?: thin | medium | thick | $positive_length_value | inherit ) }x;
287              
288             my $caption_side_value = qr{ (?: top | bottom | inherit ) }x;
289             my $clear_value = qr{ (?: left | right | both | none | inherit ) }x;
290             my $shape_value = qr{
291             (?:
292             rect \( \s*
293             (?: $length_value | auto )
294             (?: \s* \, \s* (?: $length_value | auto ) ){3}
295             \s* \)
296             )
297             }x;
298             my $clip_value = qr{ (?: $shape_value | auto | inherit ) }x;
299             my $content_repeatable = qr{
300             (?:
301             open-quote | close-quote | no-open-quote | no-close-quote
302             | attr \( $identifier_value \)
303             | $string_value | $url_value | $identifier_value
304             )
305             }x;
306             my $content_value = qr{
307             (?:
308             normal | none | inherit
309             | $content_repeatable
310             | (?:
311             $content_repeatable
312             (?: \s+ $content_repeatable )+
313             )
314             )
315             }x;
316             my $counter_value = qr{
317             (?:
318             $identifier_value
319             | $identifier_value \s+ $integer_value
320             )
321             }x;
322             my $counter_value_content = qr{
323             (?:
324             $counter_value
325             | $counter_value
326             (?: \s+ $counter_value )+
327             | none
328             | inherit
329             )
330             }x;
331             my $counter_reset_value = qr{ $counter_value_content }x;
332             my $counter_increment_value = qr{ $counter_value_content }x;
333             my $cursor_value = qr{
334             (?:
335             (?: $url_value \s+ )*
336             (?:
337             auto | crosshair | default | e-resize | help
338             | move | n-resize | ne-resize | nw-resize | pointer
339             | progress | s-resize | se-resize | sw-resize | text
340             | w-resize | wait
341             )
342             | inherit
343             )
344             }x;
345              
346             my $direction_value = qr{ (?: ltr | rtl | inherit ) }x;
347             my $display_value = qr{
348             (?:
349             block | inline | inline-block
350             | inline-table | list-item | none
351             | run-in | table | table-caption
352             | table-cell | table-column | table-column-group
353             | table-footer-group | table-header-group | table-row
354             | table-row-group
355            
356             | none | inherit
357             )
358             }x;
359             my $empty_cells_value = qr{ (?: show | hide | inherit ) }x;
360              
361             my $float_value = qr{ (?: left | right | none | inherit ) }x;
362             our $font_family = qr{
363             (?:
364             serif | sans-serif | cursive | fantasy | monospace
365             | $identifier_value
366             | $string_value
367             | inherit
368             )
369             }x;
370             our $font_family_value = qr{
371             (?:
372             $font_family
373             |
374             (?: $font_family (?: \s* \, \s* $font_family )+ )
375             )
376             }x;
377             our $line_height_value = qr{
378             (?: normal
379             | $number_value | $length_value | $percentage_value
380             | inherit
381             )
382             }x;
383             our $font_size_value = qr{
384             (?:
385             xx-small | x-small | small | medium | large | x-large
386             | xx-large | smaller | larger | inherit
387             | $length_value | $percentage_value
388             )
389             }x;
390             my $font_size_line_height_value
391             = qr{ $font_size_value / $line_height_value }x;
392             our $font_style_value = qr{ (?: italic | oblique | normal | inherit ) }x;
393             our $font_variant_value = qr{ (?: normal | small-caps | inherit ) }x;
394             our $font_weight_value = qr{
395             (?:
396             normal | bold | bolder | lighter
397             | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
398             | inherit
399             )
400             }x;
401              
402             my $height_value
403             = qr{ (?: $length_value | $percentage_value | auto | inherit ) }x;
404             my $letter_spacing_value = qr{ (?: normal | $length_value | inherit ) }x;
405             our $list_style_image_value = qr{ (?: $url_value | none | inherit ) }x;
406             our $list_style_position_value = qr{ (?: inside | outside | inherit ) }x;
407             our $list_style_type_value = qr{
408             (?:
409             armenian | circle | decimal | decimal-leading-zero
410             | disc | georgian | lower-alpha | lower-greek
411             | lower-latin | lower-roman | upper-alpha | upper-latin
412             | upper-roman
413            
414             | none | inherit
415             )
416             }x;
417              
418             our $margin_width_value
419             = qr{ (?: $length_value | $percentage_value | auto | inherit ) }x;
420             my $max_height_value
421             = qr{ (?: $length_value | $percentage_value | none | inherit ) }x;
422             my $max_width_value
423             = qr{ (?: $length_value | $percentage_value | none | inherit ) }x;
424             my $min_height_value
425             = qr{ (?: $length_value | $percentage_value | inherit ) }x;
426             my $min_width_value
427             = qr{ (?: $length_value | $percentage_value | inherit ) }x;
428              
429             my $offset_value
430             = qr{ (?: $length_value | $percentage_value | auto | inherit ) }x;
431             my $opacity_value = qr{ (?: $number_value | inherit ) }x;
432             our $outline_colour_value = qr{ (?: invert | inherit | $colour_value ) }x;
433             our $outline_style_value = qr{ (?: $border_style_value ) }x;
434             our $outline_width_value = qr{ (?: $border_width_value ) }x;
435             my $overflow_value = qr{ (?: visible | hidden | scroll | auto | inherit ) }x;
436             our $padding_width_value = qr{
437             (?: $positive_length_value | $positive_percentage_value | inherit )
438             }x;
439             my $position_value
440             = qr{ (?: absolute | fixed | relative | static | inherit ) }x;
441             my $quotes_value = qr{
442             (?:
443             (?:
444             (?: $string_value \s+ $string_value )
445             (?: \s+ $string_value \s+ $string_value )*
446             )
447             | none | inherit
448             )
449             }x;
450              
451             my $table_layout_value = qr{ (?: auto | fixed | inherit ) }x;
452             my $text_align_value
453             = qr{ (?: left | right | center | justify | inherit ) }x;
454             my $text_decoration_value = qr{
455             (?: none | underline | overline | line-through | blink | inherit )
456             }x;
457             my $text_indent_value
458             = qr{ (?: $length_value | $percentage_value | inherit ) }x;
459             my $text_transform_value
460             = qr{ (?: capitalize | uppercase | lowercase | none | inherit ) }x;
461              
462             my $unicode_bidi_value
463             = qr{ (?: normal | embed | bidi-override | inherit ) }x;
464             my $vertical_align_value = qr{
465             (?:
466             baseline | sub | super | top
467             | text-top | middle | bottom | text-bottom
468             | $length_value | $percentage_value
469             | inherit
470             )
471             }x;
472             my $visibility_value = qr{ (?: visible | hidden | collapse | inherit ) }x;
473             my $white_space_value
474             = qr{ (?: normal | pre | nowrap | pre-wrap | pre-line | inherit ) }x;
475             my $width_value
476             = qr{ (?: $length_value | $percentage_value | auto | inherit ) }x;
477             my $word_spacing_value = qr{ (?: normal | $length_value | inherit ) }x;
478             my $z_index_value = qr{ (?: $integer_value | auto | inherit ) }x;
479              
480              
481              
482             our $concise_format = "%s%s;";
483             our $pretty_format = " %-23s %s;\n";
484             our $concise_separator = ' ';
485             our $pretty_separator = "\n" . ( ' ' x 28 );
486              
487              
488             sub is_length_value {
489 0     0 0   my $value = shift;
490 0           return $value =~ m{^ $length_value $}x;
491             }
492             sub is_percentage_value {
493 0     0 0   my $value = shift;
494 0           return $value =~ m{^ $percentage_value $}x;
495             }
496             sub is_string_value {
497 0     0 0   my $value = shift;
498 0           return $value =~ m{^ $string_value $}x;
499             }
500             sub is_url_value {
501 0     0 0   my $value = shift;
502 0           return $value =~ m{^ $url_value $}x;
503             }
504              
505             sub is_background_attachment_value {
506 0     0 0   my $value = shift;
507 0           return $value =~ m{^ $background_attachment_value $}x;
508             }
509             sub is_background_colour_value {
510 0     0 0   my $value = shift;
511 0           return $value =~ m{^ $background_colour_value $}x;
512             }
513             sub is_background_image_value {
514 0     0 0   my $value = shift;
515 0           return $value =~ m{^ $background_image_value $}x;
516             }
517             sub is_background_position_value {
518 0     0 0   my $value = shift;
519 0           return $value =~ m{^ $background_position_value $}x;
520             }
521             sub is_background_repeat_value {
522 0     0 0   my $value = shift;
523 0           return $value =~ m{^ $background_repeat_value $}x;
524             }
525             sub is_border_collapse_value {
526 0     0 0   my $value = shift;
527 0           return $value =~ m{^ $border_collapse_value $}x;
528             }
529             sub is_border_colour_value {
530 0     0 0   my $value = shift;
531 0           return $value =~ m{^ $border_colour_value $}x;
532             }
533             sub is_border_radius_corner_value {
534 0     0 0   my $value = shift;
535 0           return $value =~ m{^ $border_radius_corner_value $}x;
536             }
537             sub is_border_radius_value {
538 0     0 0   my $value = shift;
539 0           return $value =~ m{^ $border_radius_value $}x;
540             }
541             sub is_border_spacing_value {
542 0     0 0   my $value = shift;
543 0           return $value =~ m{^ $border_spacing_value $}x;
544             }
545             sub is_border_style_value {
546 0     0 0   my $value = shift;
547 0           return $value =~ m{^ $border_style_value $}x;
548             }
549             sub is_border_width_value {
550 0     0 0   my $value = shift;
551 0           return $value =~ m{^ $border_width_value $}x;
552             }
553             sub is_caption_side_value {
554 0     0 0   my $value = shift;
555 0           return $value =~ m{^ $caption_side_value $}x;
556             }
557             sub is_clear_value {
558 0     0 0   my $value = shift;
559 0           return $value =~ m{^ $clear_value $}x;
560             }
561             sub is_clip_value {
562 0     0 0   my $value = shift;
563 0           return $value =~ m{^ $clip_value $}x;
564             }
565             sub is_colour_value {
566 0     0 0   my $value = shift;
567 0           return $value =~ m{^ $colour_value $}x;
568             }
569             sub is_content_value {
570 0     0 0   my $value = shift;
571 0           return $value =~ m{^ $content_value $}x;
572             }
573             sub is_counter_increment_value {
574 0     0 0   my $value = shift;
575 0           return $value =~ m{^ $counter_increment_value $}x;
576             }
577             sub is_counter_reset_value {
578 0     0 0   my $value = shift;
579 0           return $value =~ m{^ $counter_reset_value $}x;
580             }
581             sub is_cursor_value {
582 0     0 0   my $value = shift;
583 0           return $value =~ m{^ $cursor_value $}x;
584             }
585             sub is_direction_value {
586 0     0 0   my $value = shift;
587 0           return $value =~ m{^ $direction_value $}x;
588             }
589             sub is_display_value {
590 0     0 0   my $value = shift;
591 0           return $value =~ m{^ $display_value $}x;
592             }
593             sub is_empty_cells_value {
594 0     0 0   my $value = shift;
595 0           return $value =~ m{^ $empty_cells_value $}x;
596             }
597             sub is_float_value {
598 0     0 0   my $value = shift;
599 0           return $value =~ m{^ $float_value $}x;
600             }
601             sub is_font_family_value {
602 0     0 0   my $value = shift;
603 0           return $value =~ m{^ $font_family_value $}x;
604             }
605             sub is_font_size_line_height_value {
606 0     0 0   my $value = shift;
607 0           return $value =~ m{^ $font_size_line_height_value $}x;
608             }
609             sub is_font_size_value {
610 0     0 0   my $value = shift;
611 0           return $value =~ m{^ $font_size_value $}x;
612             }
613             sub is_font_style_value {
614 0     0 0   my $value = shift;
615 0           return $value =~ m{^ $font_style_value $}x;
616             }
617             sub is_font_variant_value {
618 0     0 0   my $value = shift;
619 0           return $value =~ m{^ $font_variant_value $}x;
620             }
621             sub is_font_weight_value {
622 0     0 0   my $value = shift;
623 0           return $value =~ m{^ $font_weight_value $}x;
624             }
625             sub is_height_value {
626 0     0 0   my $value = shift;
627 0           return $value =~ m{^ $height_value $}x;
628             }
629             sub is_letter_spacing_value {
630 0     0 0   my $value = shift;
631 0           return $value =~ m{^ $letter_spacing_value $}x;
632             }
633             sub is_line_height_value {
634 0     0 0   my $value = shift;
635 0           return $value =~ m{^ $line_height_value $}x;
636             }
637             sub is_list_style_image_value {
638 0     0 0   my $value = shift;
639 0           return $value =~ m{$list_style_image_value}x;
640             }
641             sub is_list_style_position_value {
642 0     0 0   my $value = shift;
643 0           return $value =~ m{$list_style_position_value}x;
644             }
645             sub is_list_style_type_value {
646 0     0 0   my $value = shift;
647 0           return $value =~ m{$list_style_type_value}x;
648             }
649             sub is_margin_width_value {
650 0     0 0   my $value = shift;
651 0           return $value =~ m{^ $margin_width_value $}x;
652             }
653             sub is_max_height_value {
654 0     0 0   my $value = shift;
655 0           return $value =~ m{^ $max_height_value $}x;
656             }
657             sub is_max_width_value {
658 0     0 0   my $value = shift;
659 0           return $value =~ m{^ $max_width_value $}x;
660             }
661             sub is_min_height_value {
662 0     0 0   my $value = shift;
663 0           return $value =~ m{^ $min_height_value $}x;
664             }
665             sub is_min_width_value {
666 0     0 0   my $value = shift;
667 0           return $value =~ m{^ $min_width_value $}x;
668             }
669             sub is_offset_value {
670 0     0 0   my $value = shift;
671 0           return $value =~ m{^ $offset_value $}x;
672             }
673             sub is_opacity_value {
674 0     0 0   my $value = shift;
675            
676 0 0         if ( $value =~ m{^ $opacity_value $}x ) {
677 0 0 0       return 1
678             if ( 0 <= $value && 1 >= $value );
679             }
680            
681 0           return 0;
682             }
683             sub is_outline_colour_value {
684 0     0 0   my $value = shift;
685 0           return $value =~ m{^ $outline_colour_value $}x;
686             }
687             sub is_outline_style_value {
688 0     0 0   my $value = shift;
689 0           return $value =~ m{^ $outline_style_value $}x;
690             }
691             sub is_outline_width_value {
692 0     0 0   my $value = shift;
693 0           return $value =~ m{^ $outline_width_value $}x;
694             }
695             sub is_overflow_value {
696 0     0 0   my $value = shift;
697 0           return $value =~ m{^ $overflow_value $}x;
698             }
699             sub is_padding_width_value {
700 0     0 0   my $value = shift;
701 0           return $value =~ m{^ $padding_width_value $}x;
702             }
703             sub is_position_value {
704 0     0 0   my $value = shift;
705 0           return $value =~ m{^ $position_value $}x;
706             }
707             sub is_quotes_value {
708 0     0 0   my $value = shift;
709 0           return $value =~ m{^ $quotes_value $}x;
710             }
711             sub is_table_layout_value {
712 0     0 0   my $value = shift;
713 0           return $value =~ m{^ $table_layout_value $}x;
714             }
715             sub is_text_align_value {
716 0     0 0   my $value = shift;
717 0           return $value =~ m{^ $text_align_value $}x;
718             }
719             sub is_text_decoration_value {
720 0     0 0   my $value = shift;
721 0           return $value =~ m{^ $text_decoration_value $}x;
722             }
723             sub is_text_indent_value {
724 0     0 0   my $value = shift;
725 0           return $value =~ m{^ $text_indent_value $}x;
726             }
727             sub is_text_transform_value {
728 0     0 0   my $value = shift;
729 0           return $value =~ m{^ $text_transform_value $}x;
730             }
731             sub is_unicode_bidi_value {
732 0     0 0   my $value = shift;
733 0           return $value =~ m{^ $unicode_bidi_value $}x;
734             }
735             sub is_vertical_align_value {
736 0     0 0   my $value = shift;
737 0           return $value =~ m{^ $vertical_align_value $}x;
738             }
739             sub is_visibility_value {
740 0     0 0   my $value = shift;
741 0           return $value =~ m{^ $visibility_value $}x;
742             }
743             sub is_white_space_value {
744 0     0 0   my $value = shift;
745 0           return $value =~ m{^ $white_space_value $}x;
746             }
747             sub is_width_value {
748 0     0 0   my $value = shift;
749 0           return $value =~ m{^ $width_value $}x;
750             }
751             sub is_word_spacing_value {
752 0     0 0   my $value = shift;
753 0           return $value =~ m{^ $word_spacing_value $}x;
754             }
755             sub is_z_index_value {
756 0     0 0   my $value = shift;
757 0           return $value =~ m{^ $z_index_value $}x;
758             }
759              
760             1;