1use crate::targets::Browsers;
4
5#[allow(dead_code)]
6#[derive(Clone, Copy, PartialEq)]
7pub enum Feature {
8 AbsFunction,
9 AccentSystemColor,
10 AfarListStyleType,
11 AmharicAbegedeListStyleType,
12 AmharicListStyleType,
13 AnchorSizeSize,
14 AnimationTimelineShorthand,
15 AnyLink,
16 AnyPseudo,
17 ArabicIndicListStyleType,
18 ArmenianListStyleType,
19 AsterisksListStyleType,
20 AutoSize,
21 Autofill,
22 BengaliListStyleType,
23 BinaryListStyleType,
24 BorderImageRepeatRound,
25 BorderImageRepeatSpace,
26 CalcFunction,
27 CambodianListStyleType,
28 CapUnit,
29 CaseInsensitive,
30 ChUnit,
31 Checkmark,
32 CircleListStyleType,
33 CjkDecimalListStyleType,
34 CjkEarthlyBranchListStyleType,
35 CjkHeavenlyStemListStyleType,
36 ClampFunction,
37 ColorFunction,
38 ConicGradient,
39 ContainerQueryLengthUnits,
40 Cue,
41 CueFunction,
42 CustomMediaQueries,
43 DecimalLeadingZeroListStyleType,
44 DecimalListStyleType,
45 DefaultPseudo,
46 DetailsContent,
47 DevanagariListStyleType,
48 Dialog,
49 DirSelector,
50 DiscListStyleType,
51 DisclosureClosedListStyleType,
52 DisclosureOpenListStyleType,
53 DoublePositionGradients,
54 EmUnit,
55 EthiopicAbegedeAmEtListStyleType,
56 EthiopicAbegedeGezListStyleType,
57 EthiopicAbegedeListStyleType,
58 EthiopicAbegedeTiErListStyleType,
59 EthiopicAbegedeTiEtListStyleType,
60 EthiopicHalehameAaErListStyleType,
61 EthiopicHalehameAaEtListStyleType,
62 EthiopicHalehameAmEtListStyleType,
63 EthiopicHalehameGezListStyleType,
64 EthiopicHalehameOmEtListStyleType,
65 EthiopicHalehameSidEtListStyleType,
66 EthiopicHalehameSoEtListStyleType,
67 EthiopicHalehameTigListStyleType,
68 EthiopicListStyleType,
69 EthiopicNumericListStyleType,
70 ExUnit,
71 ExtendedSystemFonts,
72 FirstLetter,
73 FirstLine,
74 FitContentFunctionSize,
75 FitContentSize,
76 FocusVisible,
77 FocusWithin,
78 FontFamilySystemUi,
79 FontSizeRem,
80 FontSizeXXXLarge,
81 FontStretchPercentage,
82 FontStyleObliqueAngle,
83 FontWeightNumber,
84 FootnotesListStyleType,
85 FormValidation,
86 Fullscreen,
87 Gencontent,
88 GeorgianListStyleType,
89 GradientInterpolationHints,
90 GrammarError,
91 GujaratiListStyleType,
92 GurmukhiListStyleType,
93 HasSelector,
94 HebrewListStyleType,
95 HexAlphaColors,
96 HiraganaIrohaListStyleType,
97 HiraganaListStyleType,
98 HypotFunction,
99 IcUnit,
100 ImageSet,
101 InOutOfRange,
102 IndeterminatePseudo,
103 IsAnimatableSize,
104 IsSelector,
105 JapaneseFormalListStyleType,
106 JapaneseInformalListStyleType,
107 KannadaListStyleType,
108 KatakanaIrohaListStyleType,
109 KatakanaListStyleType,
110 KhmerListStyleType,
111 KoreanHangulFormalListStyleType,
112 KoreanHanjaFormalListStyleType,
113 KoreanHanjaInformalListStyleType,
114 LabColors,
115 LangSelectorList,
116 LaoListStyleType,
117 LhUnit,
118 LightDark,
119 LinearGradient,
120 LogicalBorderRadius,
121 LogicalBorderShorthand,
122 LogicalBorders,
123 LogicalInset,
124 LogicalMargin,
125 LogicalMarginShorthand,
126 LogicalPadding,
127 LogicalPaddingShorthand,
128 LogicalSize,
129 LogicalTextAlign,
130 LowerAlphaListStyleType,
131 LowerArmenianListStyleType,
132 LowerGreekListStyleType,
133 LowerHexadecimalListStyleType,
134 LowerLatinListStyleType,
135 LowerNorwegianListStyleType,
136 LowerRomanListStyleType,
137 MalayalamListStyleType,
138 MarkerPseudo,
139 MaxContentSize,
140 MaxFunction,
141 MediaIntervalSyntax,
142 MediaRangeSyntax,
143 MinContentSize,
144 MinFunction,
145 ModFunction,
146 MongolianListStyleType,
147 MozAvailableSize,
148 MyanmarListStyleType,
149 Namespaces,
150 Nesting,
151 NoneListStyleType,
152 NotSelectorList,
153 NthChildOf,
154 OctalListStyleType,
155 OklabColors,
156 OptionalPseudo,
157 OriyaListStyleType,
158 OromoListStyleType,
159 OverflowShorthand,
160 P3Colors,
161 PartPseudo,
162 PersianListStyleType,
163 Picker,
164 PickerIcon,
165 PlaceContent,
166 PlaceItems,
167 PlaceSelf,
168 Placeholder,
169 PlaceholderShown,
170 QUnit,
171 RadialGradient,
172 RcapUnit,
173 RchUnit,
174 ReadOnlyWrite,
175 RemFunction,
176 RemUnit,
177 RepeatingConicGradient,
178 RepeatingLinearGradient,
179 RepeatingRadialGradient,
180 RexUnit,
181 RicUnit,
182 RlhUnit,
183 RoundFunction,
184 Selection,
185 Selectors2,
186 Selectors3,
187 Shadowdomv1,
188 SidamaListStyleType,
189 SignFunction,
190 SimpChineseFormalListStyleType,
191 SimpChineseInformalListStyleType,
192 SomaliListStyleType,
193 SpaceSeparatedColorNotation,
194 SpellingError,
195 SquareListStyleType,
196 StretchSize,
197 StringListStyleType,
198 SymbolsListStyleType,
199 TamilListStyleType,
200 TargetText,
201 TeluguListStyleType,
202 TextDecorationThicknessPercent,
203 TextDecorationThicknessShorthand,
204 ThaiListStyleType,
205 TibetanListStyleType,
206 TigreListStyleType,
207 TigrinyaErAbegedeListStyleType,
208 TigrinyaErListStyleType,
209 TigrinyaEtAbegedeListStyleType,
210 TigrinyaEtListStyleType,
211 TradChineseFormalListStyleType,
212 TradChineseInformalListStyleType,
213 UpperAlphaListStyleType,
214 UpperArmenianListStyleType,
215 UpperHexadecimalListStyleType,
216 UpperLatinListStyleType,
217 UpperNorwegianListStyleType,
218 UpperRomanListStyleType,
219 VbUnit,
220 VhUnit,
221 ViUnit,
222 ViewTransition,
223 ViewportPercentageUnitsDynamic,
224 ViewportPercentageUnitsLarge,
225 ViewportPercentageUnitsSmall,
226 VmaxUnit,
227 VminUnit,
228 VwUnit,
229 WebkitFillAvailableSize,
230 XResolutionUnit,
231}
232
233impl Feature {
234 pub fn is_compatible(&self, browsers: Browsers) -> bool {
235 match self {
236 Feature::Selectors2 => {
237 if let Some(version) = browsers.ie {
238 if version < 458752 {
239 return false;
240 }
241 }
242 if let Some(version) = browsers.edge {
243 if version < 786432 {
244 return false;
245 }
246 }
247 if let Some(version) = browsers.firefox {
248 if version < 131072 {
249 return false;
250 }
251 }
252 if let Some(version) = browsers.chrome {
253 if version < 262144 {
254 return false;
255 }
256 }
257 if let Some(version) = browsers.safari {
258 if version < 196864 {
259 return false;
260 }
261 }
262 if let Some(version) = browsers.opera {
263 if version < 589824 {
264 return false;
265 }
266 }
267 if let Some(version) = browsers.ios_saf {
268 if version < 197120 {
269 return false;
270 }
271 }
272 if let Some(version) = browsers.android {
273 if version < 131328 {
274 return false;
275 }
276 }
277 if let Some(version) = browsers.samsung {
278 if version < 262144 {
279 return false;
280 }
281 }
282 }
283 Feature::Selectors3 => {
284 if let Some(version) = browsers.ie {
285 if version < 589824 {
286 return false;
287 }
288 }
289 if let Some(version) = browsers.edge {
290 if version < 786432 {
291 return false;
292 }
293 }
294 if let Some(version) = browsers.firefox {
295 if version < 197888 {
296 return false;
297 }
298 }
299 if let Some(version) = browsers.chrome {
300 if version < 262144 {
301 return false;
302 }
303 }
304 if let Some(version) = browsers.safari {
305 if version < 197120 {
306 return false;
307 }
308 }
309 if let Some(version) = browsers.opera {
310 if version < 591104 {
311 return false;
312 }
313 }
314 if let Some(version) = browsers.ios_saf {
315 if version < 197120 {
316 return false;
317 }
318 }
319 if let Some(version) = browsers.android {
320 if version < 131328 {
321 return false;
322 }
323 }
324 if let Some(version) = browsers.samsung {
325 if version < 262144 {
326 return false;
327 }
328 }
329 }
330 Feature::Gencontent | Feature::FirstLine => {
331 if let Some(version) = browsers.ie {
332 if version < 589824 {
333 return false;
334 }
335 }
336 if let Some(version) = browsers.edge {
337 if version < 786432 {
338 return false;
339 }
340 }
341 if let Some(version) = browsers.firefox {
342 if version < 131072 {
343 return false;
344 }
345 }
346 if let Some(version) = browsers.chrome {
347 if version < 262144 {
348 return false;
349 }
350 }
351 if let Some(version) = browsers.safari {
352 if version < 196864 {
353 return false;
354 }
355 }
356 if let Some(version) = browsers.opera {
357 if version < 589824 {
358 return false;
359 }
360 }
361 if let Some(version) = browsers.ios_saf {
362 if version < 197120 {
363 return false;
364 }
365 }
366 if let Some(version) = browsers.android {
367 if version < 131328 {
368 return false;
369 }
370 }
371 if let Some(version) = browsers.samsung {
372 if version < 262144 {
373 return false;
374 }
375 }
376 }
377 Feature::FirstLetter => {
378 if let Some(version) = browsers.ie {
379 if version < 589824 {
380 return false;
381 }
382 }
383 if let Some(version) = browsers.edge {
384 if version < 786432 {
385 return false;
386 }
387 }
388 if let Some(version) = browsers.firefox {
389 if version < 197888 {
390 return false;
391 }
392 }
393 if let Some(version) = browsers.chrome {
394 if version < 589824 {
395 return false;
396 }
397 }
398 if let Some(version) = browsers.safari {
399 if version < 327936 {
400 return false;
401 }
402 }
403 if let Some(version) = browsers.opera {
404 if version < 722432 {
405 return false;
406 }
407 }
408 if let Some(version) = browsers.ios_saf {
409 if version < 327680 {
410 return false;
411 }
412 }
413 if let Some(version) = browsers.android {
414 if version < 196608 {
415 return false;
416 }
417 }
418 if let Some(version) = browsers.samsung {
419 if version < 262144 {
420 return false;
421 }
422 }
423 }
424 Feature::InOutOfRange => {
425 if let Some(version) = browsers.edge {
426 if version < 5177344 {
427 return false;
428 }
429 }
430 if let Some(version) = browsers.firefox {
431 if version < 3276800 {
432 return false;
433 }
434 }
435 if let Some(version) = browsers.chrome {
436 if version < 3473408 {
437 return false;
438 }
439 }
440 if let Some(version) = browsers.safari {
441 if version < 655616 {
442 return false;
443 }
444 }
445 if let Some(version) = browsers.opera {
446 if version < 2621440 {
447 return false;
448 }
449 }
450 if let Some(version) = browsers.ios_saf {
451 if version < 656128 {
452 return false;
453 }
454 }
455 if let Some(version) = browsers.android {
456 if version < 9175040 {
457 return false;
458 }
459 }
460 if let Some(version) = browsers.samsung {
461 if version < 327680 {
462 return false;
463 }
464 }
465 if browsers.ie.is_some() {
466 return false;
467 }
468 }
469 Feature::FormValidation => {
470 if let Some(version) = browsers.ie {
471 if version < 655360 {
472 return false;
473 }
474 }
475 if let Some(version) = browsers.edge {
476 if version < 786432 {
477 return false;
478 }
479 }
480 if let Some(version) = browsers.firefox {
481 if version < 262144 {
482 return false;
483 }
484 }
485 if let Some(version) = browsers.chrome {
486 if version < 655360 {
487 return false;
488 }
489 }
490 if let Some(version) = browsers.safari {
491 if version < 655616 {
492 return false;
493 }
494 }
495 if let Some(version) = browsers.opera {
496 if version < 655360 {
497 return false;
498 }
499 }
500 if let Some(version) = browsers.ios_saf {
501 if version < 656128 {
502 return false;
503 }
504 }
505 if let Some(version) = browsers.android {
506 if version < 263171 {
507 return false;
508 }
509 }
510 if let Some(version) = browsers.samsung {
511 if version < 262144 {
512 return false;
513 }
514 }
515 }
516 Feature::AnyLink => {
517 if let Some(version) = browsers.edge {
518 if version < 5177344 {
519 return false;
520 }
521 }
522 if let Some(version) = browsers.firefox {
523 if version < 3276800 {
524 return false;
525 }
526 }
527 if let Some(version) = browsers.chrome {
528 if version < 4259840 {
529 return false;
530 }
531 }
532 if let Some(version) = browsers.safari {
533 if version < 589824 {
534 return false;
535 }
536 }
537 if let Some(version) = browsers.opera {
538 if version < 3407872 {
539 return false;
540 }
541 }
542 if let Some(version) = browsers.ios_saf {
543 if version < 589824 {
544 return false;
545 }
546 }
547 if let Some(version) = browsers.android {
548 if version < 9175040 {
549 return false;
550 }
551 }
552 if let Some(version) = browsers.samsung {
553 if version < 590336 {
554 return false;
555 }
556 }
557 if browsers.ie.is_some() {
558 return false;
559 }
560 }
561 Feature::DefaultPseudo => {
562 if let Some(version) = browsers.edge {
563 if version < 5177344 {
564 return false;
565 }
566 }
567 if let Some(version) = browsers.firefox {
568 if version < 262144 {
569 return false;
570 }
571 }
572 if let Some(version) = browsers.chrome {
573 if version < 3342336 {
574 return false;
575 }
576 }
577 if let Some(version) = browsers.safari {
578 if version < 655616 {
579 return false;
580 }
581 }
582 if let Some(version) = browsers.opera {
583 if version < 2490368 {
584 return false;
585 }
586 }
587 if let Some(version) = browsers.ios_saf {
588 if version < 656128 {
589 return false;
590 }
591 }
592 if let Some(version) = browsers.android {
593 if version < 9175040 {
594 return false;
595 }
596 }
597 if let Some(version) = browsers.samsung {
598 if version < 327680 {
599 return false;
600 }
601 }
602 if browsers.ie.is_some() {
603 return false;
604 }
605 }
606 Feature::DirSelector => {
607 if let Some(version) = browsers.edge {
608 if version < 7864320 {
609 return false;
610 }
611 }
612 if let Some(version) = browsers.firefox {
613 if version < 3211264 {
614 return false;
615 }
616 }
617 if let Some(version) = browsers.chrome {
618 if version < 7864320 {
619 return false;
620 }
621 }
622 if let Some(version) = browsers.safari {
623 if version < 1049600 {
624 return false;
625 }
626 }
627 if let Some(version) = browsers.opera {
628 if version < 6946816 {
629 return false;
630 }
631 }
632 if let Some(version) = browsers.ios_saf {
633 if version < 1049600 {
634 return false;
635 }
636 }
637 if let Some(version) = browsers.android {
638 if version < 9175040 {
639 return false;
640 }
641 }
642 if let Some(version) = browsers.samsung {
643 if version < 1638400 {
644 return false;
645 }
646 }
647 if browsers.ie.is_some() {
648 return false;
649 }
650 }
651 Feature::FocusWithin => {
652 if let Some(version) = browsers.edge {
653 if version < 5177344 {
654 return false;
655 }
656 }
657 if let Some(version) = browsers.firefox {
658 if version < 3407872 {
659 return false;
660 }
661 }
662 if let Some(version) = browsers.chrome {
663 if version < 3932160 {
664 return false;
665 }
666 }
667 if let Some(version) = browsers.safari {
668 if version < 655616 {
669 return false;
670 }
671 }
672 if let Some(version) = browsers.opera {
673 if version < 3080192 {
674 return false;
675 }
676 }
677 if let Some(version) = browsers.ios_saf {
678 if version < 656128 {
679 return false;
680 }
681 }
682 if let Some(version) = browsers.android {
683 if version < 9175040 {
684 return false;
685 }
686 }
687 if let Some(version) = browsers.samsung {
688 if version < 524800 {
689 return false;
690 }
691 }
692 if browsers.ie.is_some() {
693 return false;
694 }
695 }
696 Feature::FocusVisible => {
697 if let Some(version) = browsers.edge {
698 if version < 5636096 {
699 return false;
700 }
701 }
702 if let Some(version) = browsers.firefox {
703 if version < 5570560 {
704 return false;
705 }
706 }
707 if let Some(version) = browsers.chrome {
708 if version < 5636096 {
709 return false;
710 }
711 }
712 if let Some(version) = browsers.safari {
713 if version < 984064 {
714 return false;
715 }
716 }
717 if let Some(version) = browsers.opera {
718 if version < 4718592 {
719 return false;
720 }
721 }
722 if let Some(version) = browsers.ios_saf {
723 if version < 984064 {
724 return false;
725 }
726 }
727 if let Some(version) = browsers.android {
728 if version < 9175040 {
729 return false;
730 }
731 }
732 if let Some(version) = browsers.samsung {
733 if version < 917504 {
734 return false;
735 }
736 }
737 if browsers.ie.is_some() {
738 return false;
739 }
740 }
741 Feature::IndeterminatePseudo => {
742 if let Some(version) = browsers.edge {
743 if version < 5177344 {
744 return false;
745 }
746 }
747 if let Some(version) = browsers.firefox {
748 if version < 3342336 {
749 return false;
750 }
751 }
752 if let Some(version) = browsers.chrome {
753 if version < 2555904 {
754 return false;
755 }
756 }
757 if let Some(version) = browsers.safari {
758 if version < 655616 {
759 return false;
760 }
761 }
762 if let Some(version) = browsers.opera {
763 if version < 1703936 {
764 return false;
765 }
766 }
767 if let Some(version) = browsers.ios_saf {
768 if version < 656128 {
769 return false;
770 }
771 }
772 if let Some(version) = browsers.android {
773 if version < 9175040 {
774 return false;
775 }
776 }
777 if let Some(version) = browsers.samsung {
778 if version < 262144 {
779 return false;
780 }
781 }
782 if browsers.ie.is_some() {
783 return false;
784 }
785 }
786 Feature::IsSelector => {
787 if let Some(version) = browsers.edge {
788 if version < 5767168 {
789 return false;
790 }
791 }
792 if let Some(version) = browsers.firefox {
793 if version < 5111808 {
794 return false;
795 }
796 }
797 if let Some(version) = browsers.chrome {
798 if version < 5767168 {
799 return false;
800 }
801 }
802 if let Some(version) = browsers.safari {
803 if version < 917504 {
804 return false;
805 }
806 }
807 if let Some(version) = browsers.opera {
808 if version < 4915200 {
809 return false;
810 }
811 }
812 if let Some(version) = browsers.ios_saf {
813 if version < 917504 {
814 return false;
815 }
816 }
817 if let Some(version) = browsers.android {
818 if version < 9175040 {
819 return false;
820 }
821 }
822 if let Some(version) = browsers.samsung {
823 if version < 983040 {
824 return false;
825 }
826 }
827 if browsers.ie.is_some() {
828 return false;
829 }
830 }
831 Feature::OptionalPseudo => {
832 if let Some(version) = browsers.ie {
833 if version < 655360 {
834 return false;
835 }
836 }
837 if let Some(version) = browsers.edge {
838 if version < 786432 {
839 return false;
840 }
841 }
842 if let Some(version) = browsers.firefox {
843 if version < 262144 {
844 return false;
845 }
846 }
847 if let Some(version) = browsers.chrome {
848 if version < 983040 {
849 return false;
850 }
851 }
852 if let Some(version) = browsers.safari {
853 if version < 327680 {
854 return false;
855 }
856 }
857 if let Some(version) = browsers.opera {
858 if version < 983040 {
859 return false;
860 }
861 }
862 if let Some(version) = browsers.ios_saf {
863 if version < 327680 {
864 return false;
865 }
866 }
867 if let Some(version) = browsers.android {
868 if version < 131840 {
869 return false;
870 }
871 }
872 if let Some(version) = browsers.samsung {
873 if version < 262144 {
874 return false;
875 }
876 }
877 }
878 Feature::PlaceholderShown => {
879 if let Some(version) = browsers.edge {
880 if version < 5177344 {
881 return false;
882 }
883 }
884 if let Some(version) = browsers.firefox {
885 if version < 3342336 {
886 return false;
887 }
888 }
889 if let Some(version) = browsers.chrome {
890 if version < 3080192 {
891 return false;
892 }
893 }
894 if let Some(version) = browsers.safari {
895 if version < 589824 {
896 return false;
897 }
898 }
899 if let Some(version) = browsers.opera {
900 if version < 2228224 {
901 return false;
902 }
903 }
904 if let Some(version) = browsers.ios_saf {
905 if version < 589824 {
906 return false;
907 }
908 }
909 if let Some(version) = browsers.android {
910 if version < 9175040 {
911 return false;
912 }
913 }
914 if let Some(version) = browsers.samsung {
915 if version < 327680 {
916 return false;
917 }
918 }
919 if browsers.ie.is_some() {
920 return false;
921 }
922 }
923 Feature::Dialog => {
924 if let Some(version) = browsers.edge {
925 if version < 5177344 {
926 return false;
927 }
928 }
929 if let Some(version) = browsers.firefox {
930 if version < 6422528 {
931 return false;
932 }
933 }
934 if let Some(version) = browsers.chrome {
935 if version < 2424832 {
936 return false;
937 }
938 }
939 if let Some(version) = browsers.safari {
940 if version < 984064 {
941 return false;
942 }
943 }
944 if let Some(version) = browsers.opera {
945 if version < 1572864 {
946 return false;
947 }
948 }
949 if let Some(version) = browsers.ios_saf {
950 if version < 984064 {
951 return false;
952 }
953 }
954 if let Some(version) = browsers.android {
955 if version < 9175040 {
956 return false;
957 }
958 }
959 if let Some(version) = browsers.samsung {
960 if version < 262144 {
961 return false;
962 }
963 }
964 if browsers.ie.is_some() {
965 return false;
966 }
967 }
968 Feature::Fullscreen => {
969 if let Some(version) = browsers.edge {
970 if version < 5177344 {
971 return false;
972 }
973 }
974 if let Some(version) = browsers.firefox {
975 if version < 4194304 {
976 return false;
977 }
978 }
979 if let Some(version) = browsers.chrome {
980 if version < 4653056 {
981 return false;
982 }
983 }
984 if let Some(version) = browsers.safari {
985 if version < 1049600 {
986 return false;
987 }
988 }
989 if let Some(version) = browsers.opera {
990 if version < 786688 {
991 return false;
992 }
993 }
994 if let Some(version) = browsers.samsung {
995 if version < 655616 {
996 return false;
997 }
998 }
999 if browsers.android.is_some() || browsers.ie.is_some() || browsers.ios_saf.is_some() {
1000 return false;
1001 }
1002 }
1003 Feature::MarkerPseudo => {
1004 if let Some(version) = browsers.edge {
1005 if version < 5636096 {
1006 return false;
1007 }
1008 }
1009 if let Some(version) = browsers.firefox {
1010 if version < 4456448 {
1011 return false;
1012 }
1013 }
1014 if let Some(version) = browsers.chrome {
1015 if version < 5636096 {
1016 return false;
1017 }
1018 }
1019 if let Some(version) = browsers.opera {
1020 if version < 4718592 {
1021 return false;
1022 }
1023 }
1024 if let Some(version) = browsers.android {
1025 if version < 9175040 {
1026 return false;
1027 }
1028 }
1029 if let Some(version) = browsers.samsung {
1030 if version < 917504 {
1031 return false;
1032 }
1033 }
1034 if browsers.ie.is_some() || browsers.ios_saf.is_some() || browsers.safari.is_some() {
1035 return false;
1036 }
1037 }
1038 Feature::Placeholder => {
1039 if let Some(version) = browsers.edge {
1040 if version < 5177344 {
1041 return false;
1042 }
1043 }
1044 if let Some(version) = browsers.firefox {
1045 if version < 3342336 {
1046 return false;
1047 }
1048 }
1049 if let Some(version) = browsers.chrome {
1050 if version < 3735552 {
1051 return false;
1052 }
1053 }
1054 if let Some(version) = browsers.safari {
1055 if version < 655616 {
1056 return false;
1057 }
1058 }
1059 if let Some(version) = browsers.opera {
1060 if version < 2883584 {
1061 return false;
1062 }
1063 }
1064 if let Some(version) = browsers.ios_saf {
1065 if version < 656128 {
1066 return false;
1067 }
1068 }
1069 if let Some(version) = browsers.android {
1070 if version < 9175040 {
1071 return false;
1072 }
1073 }
1074 if let Some(version) = browsers.samsung {
1075 if version < 459264 {
1076 return false;
1077 }
1078 }
1079 if browsers.ie.is_some() {
1080 return false;
1081 }
1082 }
1083 Feature::Selection => {
1084 if let Some(version) = browsers.ie {
1085 if version < 589824 {
1086 return false;
1087 }
1088 }
1089 if let Some(version) = browsers.edge {
1090 if version < 786432 {
1091 return false;
1092 }
1093 }
1094 if let Some(version) = browsers.firefox {
1095 if version < 4063232 {
1096 return false;
1097 }
1098 }
1099 if let Some(version) = browsers.chrome {
1100 if version < 262144 {
1101 return false;
1102 }
1103 }
1104 if let Some(version) = browsers.safari {
1105 if version < 196864 {
1106 return false;
1107 }
1108 }
1109 if let Some(version) = browsers.opera {
1110 if version < 591104 {
1111 return false;
1112 }
1113 }
1114 if let Some(version) = browsers.android {
1115 if version < 263168 {
1116 return false;
1117 }
1118 }
1119 if let Some(version) = browsers.samsung {
1120 if version < 262144 {
1121 return false;
1122 }
1123 }
1124 if browsers.ios_saf.is_some() {
1125 return false;
1126 }
1127 }
1128 Feature::CaseInsensitive => {
1129 if let Some(version) = browsers.edge {
1130 if version < 5177344 {
1131 return false;
1132 }
1133 }
1134 if let Some(version) = browsers.firefox {
1135 if version < 3080192 {
1136 return false;
1137 }
1138 }
1139 if let Some(version) = browsers.chrome {
1140 if version < 3211264 {
1141 return false;
1142 }
1143 }
1144 if let Some(version) = browsers.safari {
1145 if version < 589824 {
1146 return false;
1147 }
1148 }
1149 if let Some(version) = browsers.opera {
1150 if version < 2359296 {
1151 return false;
1152 }
1153 }
1154 if let Some(version) = browsers.ios_saf {
1155 if version < 589824 {
1156 return false;
1157 }
1158 }
1159 if let Some(version) = browsers.android {
1160 if version < 9175040 {
1161 return false;
1162 }
1163 }
1164 if let Some(version) = browsers.samsung {
1165 if version < 327680 {
1166 return false;
1167 }
1168 }
1169 if browsers.ie.is_some() {
1170 return false;
1171 }
1172 }
1173 Feature::ReadOnlyWrite => {
1174 if let Some(version) = browsers.edge {
1175 if version < 851968 {
1176 return false;
1177 }
1178 }
1179 if let Some(version) = browsers.firefox {
1180 if version < 5111808 {
1181 return false;
1182 }
1183 }
1184 if let Some(version) = browsers.chrome {
1185 if version < 2359296 {
1186 return false;
1187 }
1188 }
1189 if let Some(version) = browsers.safari {
1190 if version < 589824 {
1191 return false;
1192 }
1193 }
1194 if let Some(version) = browsers.opera {
1195 if version < 1507328 {
1196 return false;
1197 }
1198 }
1199 if let Some(version) = browsers.ios_saf {
1200 if version < 589824 {
1201 return false;
1202 }
1203 }
1204 if let Some(version) = browsers.android {
1205 if version < 9175040 {
1206 return false;
1207 }
1208 }
1209 if let Some(version) = browsers.samsung {
1210 if version < 262144 {
1211 return false;
1212 }
1213 }
1214 if browsers.ie.is_some() {
1215 return false;
1216 }
1217 }
1218 Feature::Autofill => {
1219 if let Some(version) = browsers.chrome {
1220 if version < 7208960 {
1221 return false;
1222 }
1223 }
1224 if let Some(version) = browsers.edge {
1225 if version < 7208960 {
1226 return false;
1227 }
1228 }
1229 if let Some(version) = browsers.firefox {
1230 if version < 5636096 {
1231 return false;
1232 }
1233 }
1234 if let Some(version) = browsers.opera {
1235 if version < 6291456 {
1236 return false;
1237 }
1238 }
1239 if let Some(version) = browsers.safari {
1240 if version < 983040 {
1241 return false;
1242 }
1243 }
1244 if let Some(version) = browsers.ios_saf {
1245 if version < 983040 {
1246 return false;
1247 }
1248 }
1249 if let Some(version) = browsers.samsung {
1250 if version < 1376256 {
1251 return false;
1252 }
1253 }
1254 if let Some(version) = browsers.android {
1255 if version < 9175040 {
1256 return false;
1257 }
1258 }
1259 if browsers.ie.is_some() {
1260 return false;
1261 }
1262 }
1263 Feature::Namespaces => {
1264 if let Some(version) = browsers.ie {
1265 if version < 589824 {
1266 return false;
1267 }
1268 }
1269 if let Some(version) = browsers.edge {
1270 if version < 786432 {
1271 return false;
1272 }
1273 }
1274 if let Some(version) = browsers.firefox {
1275 if version < 131072 {
1276 return false;
1277 }
1278 }
1279 if let Some(version) = browsers.chrome {
1280 if version < 262144 {
1281 return false;
1282 }
1283 }
1284 if let Some(version) = browsers.safari {
1285 if version < 262144 {
1286 return false;
1287 }
1288 }
1289 if let Some(version) = browsers.opera {
1290 if version < 589824 {
1291 return false;
1292 }
1293 }
1294 if let Some(version) = browsers.ios_saf {
1295 if version < 262656 {
1296 return false;
1297 }
1298 }
1299 if let Some(version) = browsers.android {
1300 if version < 131328 {
1301 return false;
1302 }
1303 }
1304 if let Some(version) = browsers.samsung {
1305 if version < 262144 {
1306 return false;
1307 }
1308 }
1309 }
1310 Feature::Shadowdomv1 => {
1311 if let Some(version) = browsers.edge {
1312 if version < 5177344 {
1313 return false;
1314 }
1315 }
1316 if let Some(version) = browsers.firefox {
1317 if version < 4128768 {
1318 return false;
1319 }
1320 }
1321 if let Some(version) = browsers.chrome {
1322 if version < 3473408 {
1323 return false;
1324 }
1325 }
1326 if let Some(version) = browsers.safari {
1327 if version < 655360 {
1328 return false;
1329 }
1330 }
1331 if let Some(version) = browsers.opera {
1332 if version < 2621440 {
1333 return false;
1334 }
1335 }
1336 if let Some(version) = browsers.ios_saf {
1337 if version < 720896 {
1338 return false;
1339 }
1340 }
1341 if let Some(version) = browsers.android {
1342 if version < 9175040 {
1343 return false;
1344 }
1345 }
1346 if let Some(version) = browsers.samsung {
1347 if version < 393728 {
1348 return false;
1349 }
1350 }
1351 if browsers.ie.is_some() {
1352 return false;
1353 }
1354 }
1355 Feature::HexAlphaColors => {
1356 if let Some(version) = browsers.edge {
1357 if version < 5177344 {
1358 return false;
1359 }
1360 }
1361 if let Some(version) = browsers.firefox {
1362 if version < 3211264 {
1363 return false;
1364 }
1365 }
1366 if let Some(version) = browsers.chrome {
1367 if version < 4063232 {
1368 return false;
1369 }
1370 }
1371 if let Some(version) = browsers.safari {
1372 if version < 655360 {
1373 return false;
1374 }
1375 }
1376 if let Some(version) = browsers.opera {
1377 if version < 3407872 {
1378 return false;
1379 }
1380 }
1381 if let Some(version) = browsers.ios_saf {
1382 if version < 655360 {
1383 return false;
1384 }
1385 }
1386 if let Some(version) = browsers.android {
1387 if version < 9175040 {
1388 return false;
1389 }
1390 }
1391 if let Some(version) = browsers.samsung {
1392 if version < 524800 {
1393 return false;
1394 }
1395 }
1396 if browsers.ie.is_some() {
1397 return false;
1398 }
1399 }
1400 Feature::Nesting => {
1401 if let Some(version) = browsers.edge {
1402 if version < 7864320 {
1403 return false;
1404 }
1405 }
1406 if let Some(version) = browsers.firefox {
1407 if version < 7667712 {
1408 return false;
1409 }
1410 }
1411 if let Some(version) = browsers.chrome {
1412 if version < 7864320 {
1413 return false;
1414 }
1415 }
1416 if let Some(version) = browsers.safari {
1417 if version < 1114624 {
1418 return false;
1419 }
1420 }
1421 if let Some(version) = browsers.opera {
1422 if version < 6946816 {
1423 return false;
1424 }
1425 }
1426 if let Some(version) = browsers.ios_saf {
1427 if version < 1114624 {
1428 return false;
1429 }
1430 }
1431 if let Some(version) = browsers.android {
1432 if version < 9175040 {
1433 return false;
1434 }
1435 }
1436 if let Some(version) = browsers.samsung {
1437 if version < 1638400 {
1438 return false;
1439 }
1440 }
1441 if browsers.ie.is_some() {
1442 return false;
1443 }
1444 }
1445 Feature::NotSelectorList => {
1446 if let Some(version) = browsers.edge {
1447 if version < 5767168 {
1448 return false;
1449 }
1450 }
1451 if let Some(version) = browsers.firefox {
1452 if version < 5505024 {
1453 return false;
1454 }
1455 }
1456 if let Some(version) = browsers.chrome {
1457 if version < 5767168 {
1458 return false;
1459 }
1460 }
1461 if let Some(version) = browsers.safari {
1462 if version < 589824 {
1463 return false;
1464 }
1465 }
1466 if let Some(version) = browsers.opera {
1467 if version < 4915200 {
1468 return false;
1469 }
1470 }
1471 if let Some(version) = browsers.ios_saf {
1472 if version < 589824 {
1473 return false;
1474 }
1475 }
1476 if let Some(version) = browsers.android {
1477 if version < 9175040 {
1478 return false;
1479 }
1480 }
1481 if let Some(version) = browsers.samsung {
1482 if version < 983040 {
1483 return false;
1484 }
1485 }
1486 if browsers.ie.is_some() {
1487 return false;
1488 }
1489 }
1490 Feature::HasSelector => {
1491 if let Some(version) = browsers.edge {
1492 if version < 6881280 {
1493 return false;
1494 }
1495 }
1496 if let Some(version) = browsers.firefox {
1497 if version < 7929856 {
1498 return false;
1499 }
1500 }
1501 if let Some(version) = browsers.chrome {
1502 if version < 6881280 {
1503 return false;
1504 }
1505 }
1506 if let Some(version) = browsers.safari {
1507 if version < 984064 {
1508 return false;
1509 }
1510 }
1511 if let Some(version) = browsers.opera {
1512 if version < 5963776 {
1513 return false;
1514 }
1515 }
1516 if let Some(version) = browsers.ios_saf {
1517 if version < 984064 {
1518 return false;
1519 }
1520 }
1521 if let Some(version) = browsers.android {
1522 if version < 9175040 {
1523 return false;
1524 }
1525 }
1526 if let Some(version) = browsers.samsung {
1527 if version < 1310720 {
1528 return false;
1529 }
1530 }
1531 if browsers.ie.is_some() {
1532 return false;
1533 }
1534 }
1535 Feature::FontFamilySystemUi => {
1536 if let Some(version) = browsers.edge {
1537 if version < 5177344 {
1538 return false;
1539 }
1540 }
1541 if let Some(version) = browsers.firefox {
1542 if version < 6029312 {
1543 return false;
1544 }
1545 }
1546 if let Some(version) = browsers.chrome {
1547 if version < 3670016 {
1548 return false;
1549 }
1550 }
1551 if let Some(version) = browsers.safari {
1552 if version < 720896 {
1553 return false;
1554 }
1555 }
1556 if let Some(version) = browsers.opera {
1557 if version < 2818048 {
1558 return false;
1559 }
1560 }
1561 if let Some(version) = browsers.ios_saf {
1562 if version < 720896 {
1563 return false;
1564 }
1565 }
1566 if let Some(version) = browsers.android {
1567 if version < 9175040 {
1568 return false;
1569 }
1570 }
1571 if let Some(version) = browsers.samsung {
1572 if version < 393728 {
1573 return false;
1574 }
1575 }
1576 if browsers.ie.is_some() {
1577 return false;
1578 }
1579 }
1580 Feature::ExtendedSystemFonts => {
1581 if let Some(version) = browsers.safari {
1582 if version < 852224 {
1583 return false;
1584 }
1585 }
1586 if let Some(version) = browsers.ios_saf {
1587 if version < 852992 {
1588 return false;
1589 }
1590 }
1591 if browsers.android.is_some()
1592 || browsers.chrome.is_some()
1593 || browsers.edge.is_some()
1594 || browsers.firefox.is_some()
1595 || browsers.ie.is_some()
1596 || browsers.opera.is_some()
1597 || browsers.samsung.is_some()
1598 {
1599 return false;
1600 }
1601 }
1602 Feature::CalcFunction => {
1603 if let Some(version) = browsers.edge {
1604 if version < 786432 {
1605 return false;
1606 }
1607 }
1608 if let Some(version) = browsers.firefox {
1609 if version < 1048576 {
1610 return false;
1611 }
1612 }
1613 if let Some(version) = browsers.chrome {
1614 if version < 1703936 {
1615 return false;
1616 }
1617 }
1618 if let Some(version) = browsers.safari {
1619 if version < 393472 {
1620 return false;
1621 }
1622 }
1623 if let Some(version) = browsers.opera {
1624 if version < 983040 {
1625 return false;
1626 }
1627 }
1628 if let Some(version) = browsers.ios_saf {
1629 if version < 458752 {
1630 return false;
1631 }
1632 }
1633 if let Some(version) = browsers.android {
1634 if version < 9175040 {
1635 return false;
1636 }
1637 }
1638 if let Some(version) = browsers.samsung {
1639 if version < 262144 {
1640 return false;
1641 }
1642 }
1643 if browsers.ie.is_some() {
1644 return false;
1645 }
1646 }
1647 Feature::CustomMediaQueries | Feature::FitContentFunctionSize => return false,
1648 Feature::DoublePositionGradients => {
1649 if let Some(version) = browsers.chrome {
1650 if version < 4653056 {
1651 return false;
1652 }
1653 }
1654 if let Some(version) = browsers.edge {
1655 if version < 5177344 {
1656 return false;
1657 }
1658 }
1659 if let Some(version) = browsers.firefox {
1660 if version < 4194304 {
1661 return false;
1662 }
1663 }
1664 if let Some(version) = browsers.opera {
1665 if version < 3276800 {
1666 return false;
1667 }
1668 }
1669 if let Some(version) = browsers.safari {
1670 if version < 786688 {
1671 return false;
1672 }
1673 }
1674 if let Some(version) = browsers.ios_saf {
1675 if version < 786944 {
1676 return false;
1677 }
1678 }
1679 if let Some(version) = browsers.samsung {
1680 if version < 655360 {
1681 return false;
1682 }
1683 }
1684 if let Some(version) = browsers.android {
1685 if version < 4653056 {
1686 return false;
1687 }
1688 }
1689 if browsers.ie.is_some() {
1690 return false;
1691 }
1692 }
1693 Feature::ClampFunction => {
1694 if let Some(version) = browsers.chrome {
1695 if version < 5177344 {
1696 return false;
1697 }
1698 }
1699 if let Some(version) = browsers.edge {
1700 if version < 5177344 {
1701 return false;
1702 }
1703 }
1704 if let Some(version) = browsers.firefox {
1705 if version < 5177344 {
1706 return false;
1707 }
1708 }
1709 if let Some(version) = browsers.opera {
1710 if version < 3735552 {
1711 return false;
1712 }
1713 }
1714 if let Some(version) = browsers.safari {
1715 if version < 852224 {
1716 return false;
1717 }
1718 }
1719 if let Some(version) = browsers.ios_saf {
1720 if version < 852992 {
1721 return false;
1722 }
1723 }
1724 if let Some(version) = browsers.samsung {
1725 if version < 786432 {
1726 return false;
1727 }
1728 }
1729 if let Some(version) = browsers.android {
1730 if version < 5177344 {
1731 return false;
1732 }
1733 }
1734 if browsers.ie.is_some() {
1735 return false;
1736 }
1737 }
1738 Feature::PlaceSelf | Feature::PlaceItems => {
1739 if let Some(version) = browsers.chrome {
1740 if version < 3866624 {
1741 return false;
1742 }
1743 }
1744 if let Some(version) = browsers.edge {
1745 if version < 5177344 {
1746 return false;
1747 }
1748 }
1749 if let Some(version) = browsers.firefox {
1750 if version < 2949120 {
1751 return false;
1752 }
1753 }
1754 if let Some(version) = browsers.opera {
1755 if version < 2818048 {
1756 return false;
1757 }
1758 }
1759 if let Some(version) = browsers.safari {
1760 if version < 720896 {
1761 return false;
1762 }
1763 }
1764 if let Some(version) = browsers.ios_saf {
1765 if version < 720896 {
1766 return false;
1767 }
1768 }
1769 if let Some(version) = browsers.samsung {
1770 if version < 458752 {
1771 return false;
1772 }
1773 }
1774 if let Some(version) = browsers.android {
1775 if version < 3866624 {
1776 return false;
1777 }
1778 }
1779 if browsers.ie.is_some() {
1780 return false;
1781 }
1782 }
1783 Feature::PlaceContent => {
1784 if let Some(version) = browsers.chrome {
1785 if version < 3866624 {
1786 return false;
1787 }
1788 }
1789 if let Some(version) = browsers.edge {
1790 if version < 5177344 {
1791 return false;
1792 }
1793 }
1794 if let Some(version) = browsers.firefox {
1795 if version < 2949120 {
1796 return false;
1797 }
1798 }
1799 if let Some(version) = browsers.opera {
1800 if version < 2818048 {
1801 return false;
1802 }
1803 }
1804 if let Some(version) = browsers.safari {
1805 if version < 589824 {
1806 return false;
1807 }
1808 }
1809 if let Some(version) = browsers.ios_saf {
1810 if version < 589824 {
1811 return false;
1812 }
1813 }
1814 if let Some(version) = browsers.samsung {
1815 if version < 458752 {
1816 return false;
1817 }
1818 }
1819 if let Some(version) = browsers.android {
1820 if version < 3866624 {
1821 return false;
1822 }
1823 }
1824 if browsers.ie.is_some() {
1825 return false;
1826 }
1827 }
1828 Feature::OverflowShorthand => {
1829 if let Some(version) = browsers.chrome {
1830 if version < 4456448 {
1831 return false;
1832 }
1833 }
1834 if let Some(version) = browsers.edge {
1835 if version < 5177344 {
1836 return false;
1837 }
1838 }
1839 if let Some(version) = browsers.firefox {
1840 if version < 3997696 {
1841 return false;
1842 }
1843 }
1844 if let Some(version) = browsers.opera {
1845 if version < 3145728 {
1846 return false;
1847 }
1848 }
1849 if let Some(version) = browsers.safari {
1850 if version < 852224 {
1851 return false;
1852 }
1853 }
1854 if let Some(version) = browsers.ios_saf {
1855 if version < 852992 {
1856 return false;
1857 }
1858 }
1859 if let Some(version) = browsers.samsung {
1860 if version < 655360 {
1861 return false;
1862 }
1863 }
1864 if let Some(version) = browsers.android {
1865 if version < 4456448 {
1866 return false;
1867 }
1868 }
1869 if browsers.ie.is_some() {
1870 return false;
1871 }
1872 }
1873 Feature::MediaRangeSyntax => {
1874 if let Some(version) = browsers.chrome {
1875 if version < 6815744 {
1876 return false;
1877 }
1878 }
1879 if let Some(version) = browsers.edge {
1880 if version < 6815744 {
1881 return false;
1882 }
1883 }
1884 if let Some(version) = browsers.firefox {
1885 if version < 4128768 {
1886 return false;
1887 }
1888 }
1889 if let Some(version) = browsers.opera {
1890 if version < 4653056 {
1891 return false;
1892 }
1893 }
1894 if let Some(version) = browsers.safari {
1895 if version < 1049600 {
1896 return false;
1897 }
1898 }
1899 if let Some(version) = browsers.ios_saf {
1900 if version < 1049600 {
1901 return false;
1902 }
1903 }
1904 if let Some(version) = browsers.samsung {
1905 if version < 1310720 {
1906 return false;
1907 }
1908 }
1909 if let Some(version) = browsers.android {
1910 if version < 6815744 {
1911 return false;
1912 }
1913 }
1914 if browsers.ie.is_some() {
1915 return false;
1916 }
1917 }
1918 Feature::MediaIntervalSyntax => {
1919 if let Some(version) = browsers.chrome {
1920 if version < 6815744 {
1921 return false;
1922 }
1923 }
1924 if let Some(version) = browsers.edge {
1925 if version < 6815744 {
1926 return false;
1927 }
1928 }
1929 if let Some(version) = browsers.firefox {
1930 if version < 6684672 {
1931 return false;
1932 }
1933 }
1934 if let Some(version) = browsers.opera {
1935 if version < 4653056 {
1936 return false;
1937 }
1938 }
1939 if let Some(version) = browsers.safari {
1940 if version < 1049600 {
1941 return false;
1942 }
1943 }
1944 if let Some(version) = browsers.ios_saf {
1945 if version < 1049600 {
1946 return false;
1947 }
1948 }
1949 if let Some(version) = browsers.samsung {
1950 if version < 1310720 {
1951 return false;
1952 }
1953 }
1954 if let Some(version) = browsers.android {
1955 if version < 6815744 {
1956 return false;
1957 }
1958 }
1959 if browsers.ie.is_some() {
1960 return false;
1961 }
1962 }
1963 Feature::LogicalBorders => {
1964 if let Some(version) = browsers.chrome {
1965 if version < 4521984 {
1966 return false;
1967 }
1968 }
1969 if let Some(version) = browsers.edge {
1970 if version < 5177344 {
1971 return false;
1972 }
1973 }
1974 if let Some(version) = browsers.firefox {
1975 if version < 2686976 {
1976 return false;
1977 }
1978 }
1979 if let Some(version) = browsers.opera {
1980 if version < 3145728 {
1981 return false;
1982 }
1983 }
1984 if let Some(version) = browsers.safari {
1985 if version < 786688 {
1986 return false;
1987 }
1988 }
1989 if let Some(version) = browsers.ios_saf {
1990 if version < 786944 {
1991 return false;
1992 }
1993 }
1994 if let Some(version) = browsers.samsung {
1995 if version < 655360 {
1996 return false;
1997 }
1998 }
1999 if let Some(version) = browsers.android {
2000 if version < 4521984 {
2001 return false;
2002 }
2003 }
2004 if browsers.ie.is_some() {
2005 return false;
2006 }
2007 }
2008 Feature::LogicalBorderShorthand | Feature::LogicalMarginShorthand | Feature::LogicalPaddingShorthand => {
2009 if let Some(version) = browsers.chrome {
2010 if version < 5701632 {
2011 return false;
2012 }
2013 }
2014 if let Some(version) = browsers.edge {
2015 if version < 5701632 {
2016 return false;
2017 }
2018 }
2019 if let Some(version) = browsers.firefox {
2020 if version < 4325376 {
2021 return false;
2022 }
2023 }
2024 if let Some(version) = browsers.opera {
2025 if version < 4063232 {
2026 return false;
2027 }
2028 }
2029 if let Some(version) = browsers.safari {
2030 if version < 917760 {
2031 return false;
2032 }
2033 }
2034 if let Some(version) = browsers.ios_saf {
2035 if version < 918784 {
2036 return false;
2037 }
2038 }
2039 if let Some(version) = browsers.samsung {
2040 if version < 917504 {
2041 return false;
2042 }
2043 }
2044 if let Some(version) = browsers.android {
2045 if version < 5701632 {
2046 return false;
2047 }
2048 }
2049 if browsers.ie.is_some() {
2050 return false;
2051 }
2052 }
2053 Feature::LogicalBorderRadius => {
2054 if let Some(version) = browsers.chrome {
2055 if version < 5832704 {
2056 return false;
2057 }
2058 }
2059 if let Some(version) = browsers.edge {
2060 if version < 5832704 {
2061 return false;
2062 }
2063 }
2064 if let Some(version) = browsers.firefox {
2065 if version < 4325376 {
2066 return false;
2067 }
2068 }
2069 if let Some(version) = browsers.opera {
2070 if version < 4128768 {
2071 return false;
2072 }
2073 }
2074 if let Some(version) = browsers.safari {
2075 if version < 983040 {
2076 return false;
2077 }
2078 }
2079 if let Some(version) = browsers.ios_saf {
2080 if version < 983040 {
2081 return false;
2082 }
2083 }
2084 if let Some(version) = browsers.samsung {
2085 if version < 983040 {
2086 return false;
2087 }
2088 }
2089 if let Some(version) = browsers.android {
2090 if version < 5832704 {
2091 return false;
2092 }
2093 }
2094 if browsers.ie.is_some() {
2095 return false;
2096 }
2097 }
2098 Feature::LogicalMargin | Feature::LogicalPadding => {
2099 if let Some(version) = browsers.chrome {
2100 if version < 4521984 {
2101 return false;
2102 }
2103 }
2104 if let Some(version) = browsers.edge {
2105 if version < 5177344 {
2106 return false;
2107 }
2108 }
2109 if let Some(version) = browsers.firefox {
2110 if version < 2686976 {
2111 return false;
2112 }
2113 }
2114 if let Some(version) = browsers.opera {
2115 if version < 3145728 {
2116 return false;
2117 }
2118 }
2119 if let Some(version) = browsers.safari {
2120 if version < 786688 {
2121 return false;
2122 }
2123 }
2124 if let Some(version) = browsers.ios_saf {
2125 if version < 786944 {
2126 return false;
2127 }
2128 }
2129 if let Some(version) = browsers.samsung {
2130 if version < 655360 {
2131 return false;
2132 }
2133 }
2134 if let Some(version) = browsers.android {
2135 if version < 5701632 {
2136 return false;
2137 }
2138 }
2139 if browsers.ie.is_some() {
2140 return false;
2141 }
2142 }
2143 Feature::LogicalInset => {
2144 if let Some(version) = browsers.chrome {
2145 if version < 5701632 {
2146 return false;
2147 }
2148 }
2149 if let Some(version) = browsers.edge {
2150 if version < 5701632 {
2151 return false;
2152 }
2153 }
2154 if let Some(version) = browsers.firefox {
2155 if version < 4128768 {
2156 return false;
2157 }
2158 }
2159 if let Some(version) = browsers.opera {
2160 if version < 4063232 {
2161 return false;
2162 }
2163 }
2164 if let Some(version) = browsers.safari {
2165 if version < 917760 {
2166 return false;
2167 }
2168 }
2169 if let Some(version) = browsers.ios_saf {
2170 if version < 918784 {
2171 return false;
2172 }
2173 }
2174 if let Some(version) = browsers.samsung {
2175 if version < 917504 {
2176 return false;
2177 }
2178 }
2179 if let Some(version) = browsers.android {
2180 if version < 5701632 {
2181 return false;
2182 }
2183 }
2184 if browsers.ie.is_some() {
2185 return false;
2186 }
2187 }
2188 Feature::LogicalSize => {
2189 if let Some(version) = browsers.chrome {
2190 if version < 3735552 {
2191 return false;
2192 }
2193 }
2194 if let Some(version) = browsers.edge {
2195 if version < 5177344 {
2196 return false;
2197 }
2198 }
2199 if let Some(version) = browsers.firefox {
2200 if version < 2686976 {
2201 return false;
2202 }
2203 }
2204 if let Some(version) = browsers.opera {
2205 if version < 2818048 {
2206 return false;
2207 }
2208 }
2209 if let Some(version) = browsers.safari {
2210 if version < 786688 {
2211 return false;
2212 }
2213 }
2214 if let Some(version) = browsers.ios_saf {
2215 if version < 786944 {
2216 return false;
2217 }
2218 }
2219 if let Some(version) = browsers.samsung {
2220 if version < 327680 {
2221 return false;
2222 }
2223 }
2224 if let Some(version) = browsers.android {
2225 if version < 3735552 {
2226 return false;
2227 }
2228 }
2229 if browsers.ie.is_some() {
2230 return false;
2231 }
2232 }
2233 Feature::LogicalTextAlign => {
2234 if let Some(version) = browsers.chrome {
2235 if version < 1179648 {
2236 return false;
2237 }
2238 }
2239 if let Some(version) = browsers.edge {
2240 if version < 5177344 {
2241 return false;
2242 }
2243 }
2244 if let Some(version) = browsers.firefox {
2245 if version < 262144 {
2246 return false;
2247 }
2248 }
2249 if let Some(version) = browsers.opera {
2250 if version < 917504 {
2251 return false;
2252 }
2253 }
2254 if let Some(version) = browsers.safari {
2255 if version < 196864 {
2256 return false;
2257 }
2258 }
2259 if let Some(version) = browsers.ios_saf {
2260 if version < 131072 {
2261 return false;
2262 }
2263 }
2264 if let Some(version) = browsers.samsung {
2265 if version < 65536 {
2266 return false;
2267 }
2268 }
2269 if let Some(version) = browsers.android {
2270 if version < 2424832 {
2271 return false;
2272 }
2273 }
2274 if browsers.ie.is_some() {
2275 return false;
2276 }
2277 }
2278 Feature::LabColors => {
2279 if let Some(version) = browsers.chrome {
2280 if version < 7274496 {
2281 return false;
2282 }
2283 }
2284 if let Some(version) = browsers.edge {
2285 if version < 7274496 {
2286 return false;
2287 }
2288 }
2289 if let Some(version) = browsers.firefox {
2290 if version < 7405568 {
2291 return false;
2292 }
2293 }
2294 if let Some(version) = browsers.opera {
2295 if version < 4915200 {
2296 return false;
2297 }
2298 }
2299 if let Some(version) = browsers.safari {
2300 if version < 983040 {
2301 return false;
2302 }
2303 }
2304 if let Some(version) = browsers.ios_saf {
2305 if version < 983040 {
2306 return false;
2307 }
2308 }
2309 if let Some(version) = browsers.samsung {
2310 if version < 1441792 {
2311 return false;
2312 }
2313 }
2314 if let Some(version) = browsers.android {
2315 if version < 7274496 {
2316 return false;
2317 }
2318 }
2319 if browsers.ie.is_some() {
2320 return false;
2321 }
2322 }
2323 Feature::OklabColors => {
2324 if let Some(version) = browsers.chrome {
2325 if version < 7274496 {
2326 return false;
2327 }
2328 }
2329 if let Some(version) = browsers.edge {
2330 if version < 7274496 {
2331 return false;
2332 }
2333 }
2334 if let Some(version) = browsers.firefox {
2335 if version < 7405568 {
2336 return false;
2337 }
2338 }
2339 if let Some(version) = browsers.opera {
2340 if version < 4915200 {
2341 return false;
2342 }
2343 }
2344 if let Some(version) = browsers.safari {
2345 if version < 984064 {
2346 return false;
2347 }
2348 }
2349 if let Some(version) = browsers.ios_saf {
2350 if version < 984064 {
2351 return false;
2352 }
2353 }
2354 if let Some(version) = browsers.samsung {
2355 if version < 1441792 {
2356 return false;
2357 }
2358 }
2359 if let Some(version) = browsers.android {
2360 if version < 7274496 {
2361 return false;
2362 }
2363 }
2364 if browsers.ie.is_some() {
2365 return false;
2366 }
2367 }
2368 Feature::ColorFunction => {
2369 if let Some(version) = browsers.chrome {
2370 if version < 7274496 {
2371 return false;
2372 }
2373 }
2374 if let Some(version) = browsers.edge {
2375 if version < 7274496 {
2376 return false;
2377 }
2378 }
2379 if let Some(version) = browsers.firefox {
2380 if version < 7405568 {
2381 return false;
2382 }
2383 }
2384 if let Some(version) = browsers.opera {
2385 if version < 4915200 {
2386 return false;
2387 }
2388 }
2389 if let Some(version) = browsers.safari {
2390 if version < 655616 {
2391 return false;
2392 }
2393 }
2394 if let Some(version) = browsers.ios_saf {
2395 if version < 656128 {
2396 return false;
2397 }
2398 }
2399 if let Some(version) = browsers.samsung {
2400 if version < 1441792 {
2401 return false;
2402 }
2403 }
2404 if let Some(version) = browsers.android {
2405 if version < 7274496 {
2406 return false;
2407 }
2408 }
2409 if browsers.ie.is_some() {
2410 return false;
2411 }
2412 }
2413 Feature::SpaceSeparatedColorNotation => {
2414 if let Some(version) = browsers.chrome {
2415 if version < 4259840 {
2416 return false;
2417 }
2418 }
2419 if let Some(version) = browsers.edge {
2420 if version < 5177344 {
2421 return false;
2422 }
2423 }
2424 if let Some(version) = browsers.firefox {
2425 if version < 3407872 {
2426 return false;
2427 }
2428 }
2429 if let Some(version) = browsers.opera {
2430 if version < 3080192 {
2431 return false;
2432 }
2433 }
2434 if let Some(version) = browsers.safari {
2435 if version < 786688 {
2436 return false;
2437 }
2438 }
2439 if let Some(version) = browsers.ios_saf {
2440 if version < 786944 {
2441 return false;
2442 }
2443 }
2444 if let Some(version) = browsers.samsung {
2445 if version < 589824 {
2446 return false;
2447 }
2448 }
2449 if let Some(version) = browsers.android {
2450 if version < 4259840 {
2451 return false;
2452 }
2453 }
2454 if browsers.ie.is_some() {
2455 return false;
2456 }
2457 }
2458 Feature::TextDecorationThicknessPercent => {
2459 if let Some(version) = browsers.chrome {
2460 if version < 5701632 {
2461 return false;
2462 }
2463 }
2464 if let Some(version) = browsers.edge {
2465 if version < 5701632 {
2466 return false;
2467 }
2468 }
2469 if let Some(version) = browsers.firefox {
2470 if version < 5177344 {
2471 return false;
2472 }
2473 }
2474 if let Some(version) = browsers.opera {
2475 if version < 4063232 {
2476 return false;
2477 }
2478 }
2479 if let Some(version) = browsers.safari {
2480 if version < 1115136 {
2481 return false;
2482 }
2483 }
2484 if let Some(version) = browsers.ios_saf {
2485 if version < 1115136 {
2486 return false;
2487 }
2488 }
2489 if let Some(version) = browsers.samsung {
2490 if version < 917504 {
2491 return false;
2492 }
2493 }
2494 if let Some(version) = browsers.android {
2495 if version < 5701632 {
2496 return false;
2497 }
2498 }
2499 if browsers.ie.is_some() {
2500 return false;
2501 }
2502 }
2503 Feature::TextDecorationThicknessShorthand => {
2504 if let Some(version) = browsers.chrome {
2505 if version < 5701632 {
2506 return false;
2507 }
2508 }
2509 if let Some(version) = browsers.edge {
2510 if version < 5701632 {
2511 return false;
2512 }
2513 }
2514 if let Some(version) = browsers.firefox {
2515 if version < 5177344 {
2516 return false;
2517 }
2518 }
2519 if let Some(version) = browsers.opera {
2520 if version < 4063232 {
2521 return false;
2522 }
2523 }
2524 if let Some(version) = browsers.samsung {
2525 if version < 917504 {
2526 return false;
2527 }
2528 }
2529 if let Some(version) = browsers.android {
2530 if version < 5701632 {
2531 return false;
2532 }
2533 }
2534 if browsers.ie.is_some() || browsers.ios_saf.is_some() || browsers.safari.is_some() {
2535 return false;
2536 }
2537 }
2538 Feature::Cue => {
2539 if let Some(version) = browsers.chrome {
2540 if version < 1703936 {
2541 return false;
2542 }
2543 }
2544 if let Some(version) = browsers.edge {
2545 if version < 5177344 {
2546 return false;
2547 }
2548 }
2549 if let Some(version) = browsers.firefox {
2550 if version < 3604480 {
2551 return false;
2552 }
2553 }
2554 if let Some(version) = browsers.opera {
2555 if version < 917504 {
2556 return false;
2557 }
2558 }
2559 if let Some(version) = browsers.safari {
2560 if version < 458752 {
2561 return false;
2562 }
2563 }
2564 if let Some(version) = browsers.ios_saf {
2565 if version < 458752 {
2566 return false;
2567 }
2568 }
2569 if let Some(version) = browsers.samsung {
2570 if version < 66816 {
2571 return false;
2572 }
2573 }
2574 if let Some(version) = browsers.android {
2575 if version < 263168 {
2576 return false;
2577 }
2578 }
2579 if browsers.ie.is_some() {
2580 return false;
2581 }
2582 }
2583 Feature::CueFunction => {
2584 if let Some(version) = browsers.chrome {
2585 if version < 1703936 {
2586 return false;
2587 }
2588 }
2589 if let Some(version) = browsers.edge {
2590 if version < 5177344 {
2591 return false;
2592 }
2593 }
2594 if let Some(version) = browsers.opera {
2595 if version < 917504 {
2596 return false;
2597 }
2598 }
2599 if let Some(version) = browsers.safari {
2600 if version < 458752 {
2601 return false;
2602 }
2603 }
2604 if let Some(version) = browsers.ios_saf {
2605 if version < 458752 {
2606 return false;
2607 }
2608 }
2609 if let Some(version) = browsers.samsung {
2610 if version < 66816 {
2611 return false;
2612 }
2613 }
2614 if let Some(version) = browsers.android {
2615 if version < 263168 {
2616 return false;
2617 }
2618 }
2619 if browsers.firefox.is_some() || browsers.ie.is_some() {
2620 return false;
2621 }
2622 }
2623 Feature::AnyPseudo => {
2624 if let Some(version) = browsers.chrome {
2625 if version < 1179648 {
2626 return false;
2627 }
2628 }
2629 if let Some(version) = browsers.edge {
2630 if version < 5177344 {
2631 return false;
2632 }
2633 }
2634 if let Some(version) = browsers.firefox {
2635 if version < 262144 {
2636 return false;
2637 }
2638 }
2639 if let Some(version) = browsers.opera {
2640 if version < 917504 {
2641 return false;
2642 }
2643 }
2644 if let Some(version) = browsers.safari {
2645 if version < 327680 {
2646 return false;
2647 }
2648 }
2649 if let Some(version) = browsers.ios_saf {
2650 if version < 327680 {
2651 return false;
2652 }
2653 }
2654 if let Some(version) = browsers.samsung {
2655 if version < 65536 {
2656 return false;
2657 }
2658 }
2659 if let Some(version) = browsers.android {
2660 if version < 263168 {
2661 return false;
2662 }
2663 }
2664 if browsers.ie.is_some() {
2665 return false;
2666 }
2667 }
2668 Feature::PartPseudo => {
2669 if let Some(version) = browsers.chrome {
2670 if version < 4784128 {
2671 return false;
2672 }
2673 }
2674 if let Some(version) = browsers.edge {
2675 if version < 5177344 {
2676 return false;
2677 }
2678 }
2679 if let Some(version) = browsers.firefox {
2680 if version < 5177344 {
2681 return false;
2682 }
2683 }
2684 if let Some(version) = browsers.opera {
2685 if version < 3407872 {
2686 return false;
2687 }
2688 }
2689 if let Some(version) = browsers.safari {
2690 if version < 852224 {
2691 return false;
2692 }
2693 }
2694 if let Some(version) = browsers.ios_saf {
2695 if version < 852992 {
2696 return false;
2697 }
2698 }
2699 if let Some(version) = browsers.samsung {
2700 if version < 720896 {
2701 return false;
2702 }
2703 }
2704 if let Some(version) = browsers.android {
2705 if version < 4784128 {
2706 return false;
2707 }
2708 }
2709 if browsers.ie.is_some() {
2710 return false;
2711 }
2712 }
2713 Feature::ImageSet => {
2714 if let Some(version) = browsers.chrome {
2715 if version < 1638400 {
2716 return false;
2717 }
2718 }
2719 if let Some(version) = browsers.edge {
2720 if version < 5177344 {
2721 return false;
2722 }
2723 }
2724 if let Some(version) = browsers.firefox {
2725 if version < 5767168 {
2726 return false;
2727 }
2728 }
2729 if let Some(version) = browsers.opera {
2730 if version < 917504 {
2731 return false;
2732 }
2733 }
2734 if let Some(version) = browsers.safari {
2735 if version < 393216 {
2736 return false;
2737 }
2738 }
2739 if let Some(version) = browsers.ios_saf {
2740 if version < 393216 {
2741 return false;
2742 }
2743 }
2744 if let Some(version) = browsers.samsung {
2745 if version < 66816 {
2746 return false;
2747 }
2748 }
2749 if let Some(version) = browsers.android {
2750 if version < 263168 {
2751 return false;
2752 }
2753 }
2754 if browsers.ie.is_some() {
2755 return false;
2756 }
2757 }
2758 Feature::XResolutionUnit => {
2759 if let Some(version) = browsers.chrome {
2760 if version < 4456448 {
2761 return false;
2762 }
2763 }
2764 if let Some(version) = browsers.edge {
2765 if version < 5177344 {
2766 return false;
2767 }
2768 }
2769 if let Some(version) = browsers.firefox {
2770 if version < 4063232 {
2771 return false;
2772 }
2773 }
2774 if let Some(version) = browsers.opera {
2775 if version < 3145728 {
2776 return false;
2777 }
2778 }
2779 if let Some(version) = browsers.safari {
2780 if version < 1048576 {
2781 return false;
2782 }
2783 }
2784 if let Some(version) = browsers.ios_saf {
2785 if version < 1048576 {
2786 return false;
2787 }
2788 }
2789 if let Some(version) = browsers.samsung {
2790 if version < 655360 {
2791 return false;
2792 }
2793 }
2794 if let Some(version) = browsers.android {
2795 if version < 4456448 {
2796 return false;
2797 }
2798 }
2799 if browsers.ie.is_some() {
2800 return false;
2801 }
2802 }
2803 Feature::NthChildOf => {
2804 if let Some(version) = browsers.chrome {
2805 if version < 7274496 {
2806 return false;
2807 }
2808 }
2809 if let Some(version) = browsers.edge {
2810 if version < 7274496 {
2811 return false;
2812 }
2813 }
2814 if let Some(version) = browsers.firefox {
2815 if version < 7405568 {
2816 return false;
2817 }
2818 }
2819 if let Some(version) = browsers.opera {
2820 if version < 4915200 {
2821 return false;
2822 }
2823 }
2824 if let Some(version) = browsers.safari {
2825 if version < 589824 {
2826 return false;
2827 }
2828 }
2829 if let Some(version) = browsers.ios_saf {
2830 if version < 589824 {
2831 return false;
2832 }
2833 }
2834 if let Some(version) = browsers.samsung {
2835 if version < 1441792 {
2836 return false;
2837 }
2838 }
2839 if let Some(version) = browsers.android {
2840 if version < 7274496 {
2841 return false;
2842 }
2843 }
2844 if browsers.ie.is_some() {
2845 return false;
2846 }
2847 }
2848 Feature::MinFunction | Feature::MaxFunction => {
2849 if let Some(version) = browsers.chrome {
2850 if version < 5177344 {
2851 return false;
2852 }
2853 }
2854 if let Some(version) = browsers.edge {
2855 if version < 5177344 {
2856 return false;
2857 }
2858 }
2859 if let Some(version) = browsers.firefox {
2860 if version < 5177344 {
2861 return false;
2862 }
2863 }
2864 if let Some(version) = browsers.opera {
2865 if version < 3735552 {
2866 return false;
2867 }
2868 }
2869 if let Some(version) = browsers.safari {
2870 if version < 721152 {
2871 return false;
2872 }
2873 }
2874 if let Some(version) = browsers.ios_saf {
2875 if version < 721664 {
2876 return false;
2877 }
2878 }
2879 if let Some(version) = browsers.samsung {
2880 if version < 786432 {
2881 return false;
2882 }
2883 }
2884 if let Some(version) = browsers.android {
2885 if version < 5177344 {
2886 return false;
2887 }
2888 }
2889 if browsers.ie.is_some() {
2890 return false;
2891 }
2892 }
2893 Feature::RoundFunction | Feature::RemFunction | Feature::ModFunction => {
2894 if let Some(version) = browsers.chrome {
2895 if version < 8192000 {
2896 return false;
2897 }
2898 }
2899 if let Some(version) = browsers.edge {
2900 if version < 8192000 {
2901 return false;
2902 }
2903 }
2904 if let Some(version) = browsers.firefox {
2905 if version < 7733248 {
2906 return false;
2907 }
2908 }
2909 if let Some(version) = browsers.opera {
2910 if version < 5439488 {
2911 return false;
2912 }
2913 }
2914 if let Some(version) = browsers.safari {
2915 if version < 984064 {
2916 return false;
2917 }
2918 }
2919 if let Some(version) = browsers.ios_saf {
2920 if version < 984064 {
2921 return false;
2922 }
2923 }
2924 if let Some(version) = browsers.samsung {
2925 if version < 1769472 {
2926 return false;
2927 }
2928 }
2929 if let Some(version) = browsers.android {
2930 if version < 8192000 {
2931 return false;
2932 }
2933 }
2934 if browsers.ie.is_some() {
2935 return false;
2936 }
2937 }
2938 Feature::AbsFunction | Feature::SignFunction => {
2939 if let Some(version) = browsers.chrome {
2940 if version < 9043968 {
2941 return false;
2942 }
2943 }
2944 if let Some(version) = browsers.edge {
2945 if version < 9043968 {
2946 return false;
2947 }
2948 }
2949 if let Some(version) = browsers.firefox {
2950 if version < 7733248 {
2951 return false;
2952 }
2953 }
2954 if let Some(version) = browsers.opera {
2955 if version < 5963776 {
2956 return false;
2957 }
2958 }
2959 if let Some(version) = browsers.safari {
2960 if version < 984064 {
2961 return false;
2962 }
2963 }
2964 if let Some(version) = browsers.ios_saf {
2965 if version < 984064 {
2966 return false;
2967 }
2968 }
2969 if let Some(version) = browsers.android {
2970 if version < 9043968 {
2971 return false;
2972 }
2973 }
2974 if browsers.ie.is_some() || browsers.samsung.is_some() {
2975 return false;
2976 }
2977 }
2978 Feature::HypotFunction => {
2979 if let Some(version) = browsers.chrome {
2980 if version < 7864320 {
2981 return false;
2982 }
2983 }
2984 if let Some(version) = browsers.edge {
2985 if version < 7864320 {
2986 return false;
2987 }
2988 }
2989 if let Some(version) = browsers.firefox {
2990 if version < 7733248 {
2991 return false;
2992 }
2993 }
2994 if let Some(version) = browsers.opera {
2995 if version < 5242880 {
2996 return false;
2997 }
2998 }
2999 if let Some(version) = browsers.safari {
3000 if version < 984064 {
3001 return false;
3002 }
3003 }
3004 if let Some(version) = browsers.ios_saf {
3005 if version < 984064 {
3006 return false;
3007 }
3008 }
3009 if let Some(version) = browsers.samsung {
3010 if version < 1638400 {
3011 return false;
3012 }
3013 }
3014 if let Some(version) = browsers.android {
3015 if version < 7864320 {
3016 return false;
3017 }
3018 }
3019 if browsers.ie.is_some() {
3020 return false;
3021 }
3022 }
3023 Feature::GradientInterpolationHints => {
3024 if let Some(version) = browsers.chrome {
3025 if version < 2621440 {
3026 return false;
3027 }
3028 }
3029 if let Some(version) = browsers.edge {
3030 if version < 5177344 {
3031 return false;
3032 }
3033 }
3034 if let Some(version) = browsers.firefox {
3035 if version < 2359296 {
3036 return false;
3037 }
3038 }
3039 if let Some(version) = browsers.opera {
3040 if version < 1769472 {
3041 return false;
3042 }
3043 }
3044 if let Some(version) = browsers.safari {
3045 if version < 458752 {
3046 return false;
3047 }
3048 }
3049 if let Some(version) = browsers.ios_saf {
3050 if version < 458752 {
3051 return false;
3052 }
3053 }
3054 if let Some(version) = browsers.samsung {
3055 if version < 262144 {
3056 return false;
3057 }
3058 }
3059 if let Some(version) = browsers.android {
3060 if version < 2621440 {
3061 return false;
3062 }
3063 }
3064 if browsers.ie.is_some() {
3065 return false;
3066 }
3067 }
3068 Feature::BorderImageRepeatRound => {
3069 if let Some(version) = browsers.chrome {
3070 if version < 1966080 {
3071 return false;
3072 }
3073 }
3074 if let Some(version) = browsers.edge {
3075 if version < 786432 {
3076 return false;
3077 }
3078 }
3079 if let Some(version) = browsers.firefox {
3080 if version < 983040 {
3081 return false;
3082 }
3083 }
3084 if let Some(version) = browsers.ie {
3085 if version < 720896 {
3086 return false;
3087 }
3088 }
3089 if let Some(version) = browsers.opera {
3090 if version < 1179648 {
3091 return false;
3092 }
3093 }
3094 if let Some(version) = browsers.safari {
3095 if version < 590080 {
3096 return false;
3097 }
3098 }
3099 if let Some(version) = browsers.ios_saf {
3100 if version < 590592 {
3101 return false;
3102 }
3103 }
3104 if let Some(version) = browsers.samsung {
3105 if version < 131072 {
3106 return false;
3107 }
3108 }
3109 if let Some(version) = browsers.android {
3110 if version < 263168 {
3111 return false;
3112 }
3113 }
3114 }
3115 Feature::BorderImageRepeatSpace => {
3116 if let Some(version) = browsers.chrome {
3117 if version < 3670016 {
3118 return false;
3119 }
3120 }
3121 if let Some(version) = browsers.edge {
3122 if version < 786432 {
3123 return false;
3124 }
3125 }
3126 if let Some(version) = browsers.firefox {
3127 if version < 3276800 {
3128 return false;
3129 }
3130 }
3131 if let Some(version) = browsers.ie {
3132 if version < 720896 {
3133 return false;
3134 }
3135 }
3136 if let Some(version) = browsers.opera {
3137 if version < 2818048 {
3138 return false;
3139 }
3140 }
3141 if let Some(version) = browsers.safari {
3142 if version < 590080 {
3143 return false;
3144 }
3145 }
3146 if let Some(version) = browsers.ios_saf {
3147 if version < 590592 {
3148 return false;
3149 }
3150 }
3151 if let Some(version) = browsers.samsung {
3152 if version < 393216 {
3153 return false;
3154 }
3155 }
3156 if let Some(version) = browsers.android {
3157 if version < 3670016 {
3158 return false;
3159 }
3160 }
3161 }
3162 Feature::FontSizeRem => {
3163 if let Some(version) = browsers.chrome {
3164 if version < 2752512 {
3165 return false;
3166 }
3167 }
3168 if let Some(version) = browsers.edge {
3169 if version < 786432 {
3170 return false;
3171 }
3172 }
3173 if let Some(version) = browsers.firefox {
3174 if version < 2031616 {
3175 return false;
3176 }
3177 }
3178 if let Some(version) = browsers.ie {
3179 if version < 589824 {
3180 return false;
3181 }
3182 }
3183 if let Some(version) = browsers.opera {
3184 if version < 1835008 {
3185 return false;
3186 }
3187 }
3188 if let Some(version) = browsers.safari {
3189 if version < 458752 {
3190 return false;
3191 }
3192 }
3193 if let Some(version) = browsers.ios_saf {
3194 if version < 458752 {
3195 return false;
3196 }
3197 }
3198 if let Some(version) = browsers.samsung {
3199 if version < 262144 {
3200 return false;
3201 }
3202 }
3203 if let Some(version) = browsers.android {
3204 if version < 2752512 {
3205 return false;
3206 }
3207 }
3208 }
3209 Feature::FontSizeXXXLarge => {
3210 if let Some(version) = browsers.chrome {
3211 if version < 5177344 {
3212 return false;
3213 }
3214 }
3215 if let Some(version) = browsers.edge {
3216 if version < 5177344 {
3217 return false;
3218 }
3219 }
3220 if let Some(version) = browsers.firefox {
3221 if version < 5177344 {
3222 return false;
3223 }
3224 }
3225 if let Some(version) = browsers.opera {
3226 if version < 3735552 {
3227 return false;
3228 }
3229 }
3230 if let Some(version) = browsers.safari {
3231 if version < 1049600 {
3232 return false;
3233 }
3234 }
3235 if let Some(version) = browsers.ios_saf {
3236 if version < 1049600 {
3237 return false;
3238 }
3239 }
3240 if let Some(version) = browsers.samsung {
3241 if version < 786432 {
3242 return false;
3243 }
3244 }
3245 if let Some(version) = browsers.android {
3246 if version < 5177344 {
3247 return false;
3248 }
3249 }
3250 if browsers.ie.is_some() {
3251 return false;
3252 }
3253 }
3254 Feature::FontStyleObliqueAngle => {
3255 if let Some(version) = browsers.chrome {
3256 if version < 4063232 {
3257 return false;
3258 }
3259 }
3260 if let Some(version) = browsers.edge {
3261 if version < 5177344 {
3262 return false;
3263 }
3264 }
3265 if let Some(version) = browsers.firefox {
3266 if version < 3997696 {
3267 return false;
3268 }
3269 }
3270 if let Some(version) = browsers.opera {
3271 if version < 3014656 {
3272 return false;
3273 }
3274 }
3275 if let Some(version) = browsers.safari {
3276 if version < 721152 {
3277 return false;
3278 }
3279 }
3280 if let Some(version) = browsers.ios_saf {
3281 if version < 721664 {
3282 return false;
3283 }
3284 }
3285 if let Some(version) = browsers.samsung {
3286 if version < 524288 {
3287 return false;
3288 }
3289 }
3290 if let Some(version) = browsers.android {
3291 if version < 4063232 {
3292 return false;
3293 }
3294 }
3295 if browsers.ie.is_some() {
3296 return false;
3297 }
3298 }
3299 Feature::FontWeightNumber => {
3300 if let Some(version) = browsers.chrome {
3301 if version < 4063232 {
3302 return false;
3303 }
3304 }
3305 if let Some(version) = browsers.edge {
3306 if version < 1114112 {
3307 return false;
3308 }
3309 }
3310 if let Some(version) = browsers.firefox {
3311 if version < 3997696 {
3312 return false;
3313 }
3314 }
3315 if let Some(version) = browsers.opera {
3316 if version < 3014656 {
3317 return false;
3318 }
3319 }
3320 if let Some(version) = browsers.safari {
3321 if version < 720896 {
3322 return false;
3323 }
3324 }
3325 if let Some(version) = browsers.ios_saf {
3326 if version < 720896 {
3327 return false;
3328 }
3329 }
3330 if let Some(version) = browsers.samsung {
3331 if version < 524288 {
3332 return false;
3333 }
3334 }
3335 if let Some(version) = browsers.android {
3336 if version < 4063232 {
3337 return false;
3338 }
3339 }
3340 if browsers.ie.is_some() {
3341 return false;
3342 }
3343 }
3344 Feature::FontStretchPercentage => {
3345 if let Some(version) = browsers.chrome {
3346 if version < 4063232 {
3347 return false;
3348 }
3349 }
3350 if let Some(version) = browsers.edge {
3351 if version < 1179648 {
3352 return false;
3353 }
3354 }
3355 if let Some(version) = browsers.firefox {
3356 if version < 3997696 {
3357 return false;
3358 }
3359 }
3360 if let Some(version) = browsers.opera {
3361 if version < 3014656 {
3362 return false;
3363 }
3364 }
3365 if let Some(version) = browsers.safari {
3366 if version < 721152 {
3367 return false;
3368 }
3369 }
3370 if let Some(version) = browsers.ios_saf {
3371 if version < 721664 {
3372 return false;
3373 }
3374 }
3375 if let Some(version) = browsers.samsung {
3376 if version < 524288 {
3377 return false;
3378 }
3379 }
3380 if let Some(version) = browsers.android {
3381 if version < 4063232 {
3382 return false;
3383 }
3384 }
3385 if browsers.ie.is_some() {
3386 return false;
3387 }
3388 }
3389 Feature::LightDark => {
3390 if let Some(version) = browsers.chrome {
3391 if version < 8060928 {
3392 return false;
3393 }
3394 }
3395 if let Some(version) = browsers.edge {
3396 if version < 8060928 {
3397 return false;
3398 }
3399 }
3400 if let Some(version) = browsers.firefox {
3401 if version < 7864320 {
3402 return false;
3403 }
3404 }
3405 if let Some(version) = browsers.opera {
3406 if version < 5373952 {
3407 return false;
3408 }
3409 }
3410 if let Some(version) = browsers.safari {
3411 if version < 1115392 {
3412 return false;
3413 }
3414 }
3415 if let Some(version) = browsers.ios_saf {
3416 if version < 1115392 {
3417 return false;
3418 }
3419 }
3420 if let Some(version) = browsers.samsung {
3421 if version < 1769472 {
3422 return false;
3423 }
3424 }
3425 if let Some(version) = browsers.android {
3426 if version < 8060928 {
3427 return false;
3428 }
3429 }
3430 if browsers.ie.is_some() {
3431 return false;
3432 }
3433 }
3434 Feature::AccentSystemColor => {
3435 if let Some(version) = browsers.firefox {
3436 if version < 6750208 {
3437 return false;
3438 }
3439 }
3440 if let Some(version) = browsers.safari {
3441 if version < 1049856 {
3442 return false;
3443 }
3444 }
3445 if let Some(version) = browsers.ios_saf {
3446 if version < 1049856 {
3447 return false;
3448 }
3449 }
3450 if browsers.android.is_some()
3451 || browsers.chrome.is_some()
3452 || browsers.edge.is_some()
3453 || browsers.ie.is_some()
3454 || browsers.opera.is_some()
3455 || browsers.samsung.is_some()
3456 {
3457 return false;
3458 }
3459 }
3460 Feature::AnimationTimelineShorthand => {
3461 if let Some(version) = browsers.chrome {
3462 if version < 7536640 {
3463 return false;
3464 }
3465 }
3466 if let Some(version) = browsers.edge {
3467 if version < 7536640 {
3468 return false;
3469 }
3470 }
3471 if let Some(version) = browsers.opera {
3472 if version < 5046272 {
3473 return false;
3474 }
3475 }
3476 if let Some(version) = browsers.samsung {
3477 if version < 1507328 {
3478 return false;
3479 }
3480 }
3481 if let Some(version) = browsers.android {
3482 if version < 7536640 {
3483 return false;
3484 }
3485 }
3486 if browsers.firefox.is_some()
3487 || browsers.ie.is_some()
3488 || browsers.ios_saf.is_some()
3489 || browsers.safari.is_some()
3490 {
3491 return false;
3492 }
3493 }
3494 Feature::ViewTransition => {
3495 if let Some(version) = browsers.chrome {
3496 if version < 7143424 {
3497 return false;
3498 }
3499 }
3500 if let Some(version) = browsers.edge {
3501 if version < 7143424 {
3502 return false;
3503 }
3504 }
3505 if let Some(version) = browsers.firefox {
3506 if version < 9437184 {
3507 return false;
3508 }
3509 }
3510 if let Some(version) = browsers.opera {
3511 if version < 4849664 {
3512 return false;
3513 }
3514 }
3515 if let Some(version) = browsers.safari {
3516 if version < 1179648 {
3517 return false;
3518 }
3519 }
3520 if let Some(version) = browsers.ios_saf {
3521 if version < 1179648 {
3522 return false;
3523 }
3524 }
3525 if let Some(version) = browsers.samsung {
3526 if version < 1376256 {
3527 return false;
3528 }
3529 }
3530 if let Some(version) = browsers.android {
3531 if version < 7143424 {
3532 return false;
3533 }
3534 }
3535 if browsers.ie.is_some() {
3536 return false;
3537 }
3538 }
3539 Feature::DetailsContent => {
3540 if let Some(version) = browsers.chrome {
3541 if version < 8585216 {
3542 return false;
3543 }
3544 }
3545 if let Some(version) = browsers.edge {
3546 if version < 8585216 {
3547 return false;
3548 }
3549 }
3550 if let Some(version) = browsers.firefox {
3551 if version < 9371648 {
3552 return false;
3553 }
3554 }
3555 if let Some(version) = browsers.opera {
3556 if version < 5701632 {
3557 return false;
3558 }
3559 }
3560 if let Some(version) = browsers.safari {
3561 if version < 1180672 {
3562 return false;
3563 }
3564 }
3565 if let Some(version) = browsers.ios_saf {
3566 if version < 1180672 {
3567 return false;
3568 }
3569 }
3570 if let Some(version) = browsers.android {
3571 if version < 8585216 {
3572 return false;
3573 }
3574 }
3575 if browsers.ie.is_some() || browsers.samsung.is_some() {
3576 return false;
3577 }
3578 }
3579 Feature::TargetText => {
3580 if let Some(version) = browsers.chrome {
3581 if version < 5832704 {
3582 return false;
3583 }
3584 }
3585 if let Some(version) = browsers.edge {
3586 if version < 5832704 {
3587 return false;
3588 }
3589 }
3590 if let Some(version) = browsers.firefox {
3591 if version < 8585216 {
3592 return false;
3593 }
3594 }
3595 if let Some(version) = browsers.opera {
3596 if version < 4128768 {
3597 return false;
3598 }
3599 }
3600 if let Some(version) = browsers.safari {
3601 if version < 1180160 {
3602 return false;
3603 }
3604 }
3605 if let Some(version) = browsers.ios_saf {
3606 if version < 1180160 {
3607 return false;
3608 }
3609 }
3610 if let Some(version) = browsers.samsung {
3611 if version < 983040 {
3612 return false;
3613 }
3614 }
3615 if let Some(version) = browsers.android {
3616 if version < 5832704 {
3617 return false;
3618 }
3619 }
3620 if browsers.ie.is_some() {
3621 return false;
3622 }
3623 }
3624 Feature::Picker | Feature::PickerIcon | Feature::Checkmark => {
3625 if let Some(version) = browsers.chrome {
3626 if version < 8847360 {
3627 return false;
3628 }
3629 }
3630 if let Some(version) = browsers.edge {
3631 if version < 8847360 {
3632 return false;
3633 }
3634 }
3635 if let Some(version) = browsers.opera {
3636 if version < 5832704 {
3637 return false;
3638 }
3639 }
3640 if let Some(version) = browsers.android {
3641 if version < 8847360 {
3642 return false;
3643 }
3644 }
3645 if browsers.firefox.is_some()
3646 || browsers.ie.is_some()
3647 || browsers.ios_saf.is_some()
3648 || browsers.safari.is_some()
3649 || browsers.samsung.is_some()
3650 {
3651 return false;
3652 }
3653 }
3654 Feature::GrammarError | Feature::SpellingError => {
3655 if let Some(version) = browsers.chrome {
3656 if version < 7929856 {
3657 return false;
3658 }
3659 }
3660 if let Some(version) = browsers.edge {
3661 if version < 7929856 {
3662 return false;
3663 }
3664 }
3665 if let Some(version) = browsers.opera {
3666 if version < 5308416 {
3667 return false;
3668 }
3669 }
3670 if let Some(version) = browsers.safari {
3671 if version < 1115136 {
3672 return false;
3673 }
3674 }
3675 if let Some(version) = browsers.ios_saf {
3676 if version < 1115136 {
3677 return false;
3678 }
3679 }
3680 if let Some(version) = browsers.samsung {
3681 if version < 1638400 {
3682 return false;
3683 }
3684 }
3685 if let Some(version) = browsers.android {
3686 if version < 7929856 {
3687 return false;
3688 }
3689 }
3690 if browsers.firefox.is_some() || browsers.ie.is_some() {
3691 return false;
3692 }
3693 }
3694 Feature::QUnit => {
3695 if let Some(version) = browsers.chrome {
3696 if version < 4128768 {
3697 return false;
3698 }
3699 }
3700 if let Some(version) = browsers.edge {
3701 if version < 5177344 {
3702 return false;
3703 }
3704 }
3705 if let Some(version) = browsers.firefox {
3706 if version < 3211264 {
3707 return false;
3708 }
3709 }
3710 if let Some(version) = browsers.opera {
3711 if version < 3014656 {
3712 return false;
3713 }
3714 }
3715 if let Some(version) = browsers.safari {
3716 if version < 852224 {
3717 return false;
3718 }
3719 }
3720 if let Some(version) = browsers.ios_saf {
3721 if version < 852992 {
3722 return false;
3723 }
3724 }
3725 if let Some(version) = browsers.samsung {
3726 if version < 524288 {
3727 return false;
3728 }
3729 }
3730 if let Some(version) = browsers.android {
3731 if version < 4128768 {
3732 return false;
3733 }
3734 }
3735 if browsers.ie.is_some() {
3736 return false;
3737 }
3738 }
3739 Feature::CapUnit => {
3740 if let Some(version) = browsers.chrome {
3741 if version < 7733248 {
3742 return false;
3743 }
3744 }
3745 if let Some(version) = browsers.edge {
3746 if version < 7733248 {
3747 return false;
3748 }
3749 }
3750 if let Some(version) = browsers.firefox {
3751 if version < 6356992 {
3752 return false;
3753 }
3754 }
3755 if let Some(version) = browsers.opera {
3756 if version < 5177344 {
3757 return false;
3758 }
3759 }
3760 if let Some(version) = browsers.safari {
3761 if version < 1114624 {
3762 return false;
3763 }
3764 }
3765 if let Some(version) = browsers.ios_saf {
3766 if version < 1114624 {
3767 return false;
3768 }
3769 }
3770 if let Some(version) = browsers.samsung {
3771 if version < 1638400 {
3772 return false;
3773 }
3774 }
3775 if let Some(version) = browsers.android {
3776 if version < 7733248 {
3777 return false;
3778 }
3779 }
3780 if browsers.ie.is_some() {
3781 return false;
3782 }
3783 }
3784 Feature::ChUnit => {
3785 if let Some(version) = browsers.chrome {
3786 if version < 1769472 {
3787 return false;
3788 }
3789 }
3790 if let Some(version) = browsers.edge {
3791 if version < 786432 {
3792 return false;
3793 }
3794 }
3795 if let Some(version) = browsers.firefox {
3796 if version < 262144 {
3797 return false;
3798 }
3799 }
3800 if let Some(version) = browsers.ie {
3801 if version < 589824 {
3802 return false;
3803 }
3804 }
3805 if let Some(version) = browsers.opera {
3806 if version < 983040 {
3807 return false;
3808 }
3809 }
3810 if let Some(version) = browsers.safari {
3811 if version < 458752 {
3812 return false;
3813 }
3814 }
3815 if let Some(version) = browsers.ios_saf {
3816 if version < 458752 {
3817 return false;
3818 }
3819 }
3820 if let Some(version) = browsers.samsung {
3821 if version < 66816 {
3822 return false;
3823 }
3824 }
3825 if let Some(version) = browsers.android {
3826 if version < 263168 {
3827 return false;
3828 }
3829 }
3830 }
3831 Feature::ContainerQueryLengthUnits => {
3832 if let Some(version) = browsers.chrome {
3833 if version < 6881280 {
3834 return false;
3835 }
3836 }
3837 if let Some(version) = browsers.edge {
3838 if version < 6881280 {
3839 return false;
3840 }
3841 }
3842 if let Some(version) = browsers.firefox {
3843 if version < 7208960 {
3844 return false;
3845 }
3846 }
3847 if let Some(version) = browsers.opera {
3848 if version < 4718592 {
3849 return false;
3850 }
3851 }
3852 if let Some(version) = browsers.safari {
3853 if version < 1048576 {
3854 return false;
3855 }
3856 }
3857 if let Some(version) = browsers.ios_saf {
3858 if version < 1048576 {
3859 return false;
3860 }
3861 }
3862 if let Some(version) = browsers.samsung {
3863 if version < 1310720 {
3864 return false;
3865 }
3866 }
3867 if let Some(version) = browsers.android {
3868 if version < 6881280 {
3869 return false;
3870 }
3871 }
3872 if browsers.ie.is_some() {
3873 return false;
3874 }
3875 }
3876 Feature::EmUnit => {
3877 if let Some(version) = browsers.chrome {
3878 if version < 1179648 {
3879 return false;
3880 }
3881 }
3882 if let Some(version) = browsers.edge {
3883 if version < 786432 {
3884 return false;
3885 }
3886 }
3887 if let Some(version) = browsers.firefox {
3888 if version < 262144 {
3889 return false;
3890 }
3891 }
3892 if let Some(version) = browsers.ie {
3893 if version < 196608 {
3894 return false;
3895 }
3896 }
3897 if let Some(version) = browsers.opera {
3898 if version < 655616 {
3899 return false;
3900 }
3901 }
3902 if let Some(version) = browsers.safari {
3903 if version < 65536 {
3904 return false;
3905 }
3906 }
3907 if let Some(version) = browsers.ios_saf {
3908 if version < 65536 {
3909 return false;
3910 }
3911 }
3912 if let Some(version) = browsers.samsung {
3913 if version < 65536 {
3914 return false;
3915 }
3916 }
3917 if let Some(version) = browsers.android {
3918 if version < 65536 {
3919 return false;
3920 }
3921 }
3922 }
3923 Feature::ExUnit
3924 | Feature::CircleListStyleType
3925 | Feature::DecimalListStyleType
3926 | Feature::DiscListStyleType
3927 | Feature::SquareListStyleType => {
3928 if let Some(version) = browsers.chrome {
3929 if version < 1179648 {
3930 return false;
3931 }
3932 }
3933 if let Some(version) = browsers.edge {
3934 if version < 786432 {
3935 return false;
3936 }
3937 }
3938 if let Some(version) = browsers.firefox {
3939 if version < 262144 {
3940 return false;
3941 }
3942 }
3943 if let Some(version) = browsers.ie {
3944 if version < 262144 {
3945 return false;
3946 }
3947 }
3948 if let Some(version) = browsers.opera {
3949 if version < 655616 {
3950 return false;
3951 }
3952 }
3953 if let Some(version) = browsers.safari {
3954 if version < 65536 {
3955 return false;
3956 }
3957 }
3958 if let Some(version) = browsers.ios_saf {
3959 if version < 65536 {
3960 return false;
3961 }
3962 }
3963 if let Some(version) = browsers.samsung {
3964 if version < 65536 {
3965 return false;
3966 }
3967 }
3968 if let Some(version) = browsers.android {
3969 if version < 263168 {
3970 return false;
3971 }
3972 }
3973 }
3974 Feature::IcUnit => {
3975 if let Some(version) = browsers.chrome {
3976 if version < 6946816 {
3977 return false;
3978 }
3979 }
3980 if let Some(version) = browsers.edge {
3981 if version < 6946816 {
3982 return false;
3983 }
3984 }
3985 if let Some(version) = browsers.firefox {
3986 if version < 6356992 {
3987 return false;
3988 }
3989 }
3990 if let Some(version) = browsers.opera {
3991 if version < 4718592 {
3992 return false;
3993 }
3994 }
3995 if let Some(version) = browsers.safari {
3996 if version < 984064 {
3997 return false;
3998 }
3999 }
4000 if let Some(version) = browsers.ios_saf {
4001 if version < 984064 {
4002 return false;
4003 }
4004 }
4005 if let Some(version) = browsers.samsung {
4006 if version < 1310720 {
4007 return false;
4008 }
4009 }
4010 if let Some(version) = browsers.android {
4011 if version < 6946816 {
4012 return false;
4013 }
4014 }
4015 if browsers.ie.is_some() {
4016 return false;
4017 }
4018 }
4019 Feature::LhUnit => {
4020 if let Some(version) = browsers.chrome {
4021 if version < 7143424 {
4022 return false;
4023 }
4024 }
4025 if let Some(version) = browsers.edge {
4026 if version < 7143424 {
4027 return false;
4028 }
4029 }
4030 if let Some(version) = browsers.firefox {
4031 if version < 7864320 {
4032 return false;
4033 }
4034 }
4035 if let Some(version) = browsers.opera {
4036 if version < 4849664 {
4037 return false;
4038 }
4039 }
4040 if let Some(version) = browsers.safari {
4041 if version < 1049600 {
4042 return false;
4043 }
4044 }
4045 if let Some(version) = browsers.ios_saf {
4046 if version < 1049600 {
4047 return false;
4048 }
4049 }
4050 if let Some(version) = browsers.samsung {
4051 if version < 1376256 {
4052 return false;
4053 }
4054 }
4055 if let Some(version) = browsers.android {
4056 if version < 7143424 {
4057 return false;
4058 }
4059 }
4060 if browsers.ie.is_some() {
4061 return false;
4062 }
4063 }
4064 Feature::RcapUnit => {
4065 if let Some(version) = browsers.chrome {
4066 if version < 7733248 {
4067 return false;
4068 }
4069 }
4070 if let Some(version) = browsers.edge {
4071 if version < 7733248 {
4072 return false;
4073 }
4074 }
4075 if let Some(version) = browsers.opera {
4076 if version < 5177344 {
4077 return false;
4078 }
4079 }
4080 if let Some(version) = browsers.safari {
4081 if version < 1114624 {
4082 return false;
4083 }
4084 }
4085 if let Some(version) = browsers.ios_saf {
4086 if version < 1114624 {
4087 return false;
4088 }
4089 }
4090 if let Some(version) = browsers.samsung {
4091 if version < 1638400 {
4092 return false;
4093 }
4094 }
4095 if let Some(version) = browsers.android {
4096 if version < 7733248 {
4097 return false;
4098 }
4099 }
4100 if browsers.firefox.is_some() || browsers.ie.is_some() {
4101 return false;
4102 }
4103 }
4104 Feature::RchUnit | Feature::RexUnit | Feature::RicUnit => {
4105 if let Some(version) = browsers.chrome {
4106 if version < 7274496 {
4107 return false;
4108 }
4109 }
4110 if let Some(version) = browsers.edge {
4111 if version < 7274496 {
4112 return false;
4113 }
4114 }
4115 if let Some(version) = browsers.opera {
4116 if version < 4915200 {
4117 return false;
4118 }
4119 }
4120 if let Some(version) = browsers.safari {
4121 if version < 1114624 {
4122 return false;
4123 }
4124 }
4125 if let Some(version) = browsers.ios_saf {
4126 if version < 1114624 {
4127 return false;
4128 }
4129 }
4130 if let Some(version) = browsers.samsung {
4131 if version < 1441792 {
4132 return false;
4133 }
4134 }
4135 if let Some(version) = browsers.android {
4136 if version < 7274496 {
4137 return false;
4138 }
4139 }
4140 if browsers.firefox.is_some() || browsers.ie.is_some() {
4141 return false;
4142 }
4143 }
4144 Feature::RemUnit => {
4145 if let Some(version) = browsers.chrome {
4146 if version < 1179648 {
4147 return false;
4148 }
4149 }
4150 if let Some(version) = browsers.edge {
4151 if version < 786432 {
4152 return false;
4153 }
4154 }
4155 if let Some(version) = browsers.firefox {
4156 if version < 262144 {
4157 return false;
4158 }
4159 }
4160 if let Some(version) = browsers.ie {
4161 if version < 589824 {
4162 return false;
4163 }
4164 }
4165 if let Some(version) = browsers.opera {
4166 if version < 786432 {
4167 return false;
4168 }
4169 }
4170 if let Some(version) = browsers.safari {
4171 if version < 327680 {
4172 return false;
4173 }
4174 }
4175 if let Some(version) = browsers.ios_saf {
4176 if version < 262144 {
4177 return false;
4178 }
4179 }
4180 if let Some(version) = browsers.samsung {
4181 if version < 65536 {
4182 return false;
4183 }
4184 }
4185 if let Some(version) = browsers.android {
4186 if version < 131072 {
4187 return false;
4188 }
4189 }
4190 }
4191 Feature::RlhUnit => {
4192 if let Some(version) = browsers.chrome {
4193 if version < 7274496 {
4194 return false;
4195 }
4196 }
4197 if let Some(version) = browsers.edge {
4198 if version < 7274496 {
4199 return false;
4200 }
4201 }
4202 if let Some(version) = browsers.firefox {
4203 if version < 7864320 {
4204 return false;
4205 }
4206 }
4207 if let Some(version) = browsers.opera {
4208 if version < 4915200 {
4209 return false;
4210 }
4211 }
4212 if let Some(version) = browsers.safari {
4213 if version < 1049600 {
4214 return false;
4215 }
4216 }
4217 if let Some(version) = browsers.ios_saf {
4218 if version < 1049600 {
4219 return false;
4220 }
4221 }
4222 if let Some(version) = browsers.samsung {
4223 if version < 1441792 {
4224 return false;
4225 }
4226 }
4227 if let Some(version) = browsers.android {
4228 if version < 7274496 {
4229 return false;
4230 }
4231 }
4232 if browsers.ie.is_some() {
4233 return false;
4234 }
4235 }
4236 Feature::VbUnit
4237 | Feature::ViUnit
4238 | Feature::ViewportPercentageUnitsDynamic
4239 | Feature::ViewportPercentageUnitsLarge
4240 | Feature::ViewportPercentageUnitsSmall => {
4241 if let Some(version) = browsers.chrome {
4242 if version < 7077888 {
4243 return false;
4244 }
4245 }
4246 if let Some(version) = browsers.edge {
4247 if version < 7077888 {
4248 return false;
4249 }
4250 }
4251 if let Some(version) = browsers.firefox {
4252 if version < 6619136 {
4253 return false;
4254 }
4255 }
4256 if let Some(version) = browsers.opera {
4257 if version < 4784128 {
4258 return false;
4259 }
4260 }
4261 if let Some(version) = browsers.safari {
4262 if version < 984064 {
4263 return false;
4264 }
4265 }
4266 if let Some(version) = browsers.ios_saf {
4267 if version < 984064 {
4268 return false;
4269 }
4270 }
4271 if let Some(version) = browsers.samsung {
4272 if version < 1376256 {
4273 return false;
4274 }
4275 }
4276 if let Some(version) = browsers.android {
4277 if version < 7077888 {
4278 return false;
4279 }
4280 }
4281 if browsers.ie.is_some() {
4282 return false;
4283 }
4284 }
4285 Feature::VhUnit | Feature::VwUnit => {
4286 if let Some(version) = browsers.chrome {
4287 if version < 1638400 {
4288 return false;
4289 }
4290 }
4291 if let Some(version) = browsers.edge {
4292 if version < 786432 {
4293 return false;
4294 }
4295 }
4296 if let Some(version) = browsers.firefox {
4297 if version < 1245184 {
4298 return false;
4299 }
4300 }
4301 if let Some(version) = browsers.ie {
4302 if version < 589824 {
4303 return false;
4304 }
4305 }
4306 if let Some(version) = browsers.opera {
4307 if version < 917504 {
4308 return false;
4309 }
4310 }
4311 if let Some(version) = browsers.safari {
4312 if version < 393216 {
4313 return false;
4314 }
4315 }
4316 if let Some(version) = browsers.ios_saf {
4317 if version < 393216 {
4318 return false;
4319 }
4320 }
4321 if let Some(version) = browsers.samsung {
4322 if version < 66816 {
4323 return false;
4324 }
4325 }
4326 if let Some(version) = browsers.android {
4327 if version < 263168 {
4328 return false;
4329 }
4330 }
4331 }
4332 Feature::VmaxUnit => {
4333 if let Some(version) = browsers.chrome {
4334 if version < 1703936 {
4335 return false;
4336 }
4337 }
4338 if let Some(version) = browsers.edge {
4339 if version < 1048576 {
4340 return false;
4341 }
4342 }
4343 if let Some(version) = browsers.firefox {
4344 if version < 1245184 {
4345 return false;
4346 }
4347 }
4348 if let Some(version) = browsers.opera {
4349 if version < 917504 {
4350 return false;
4351 }
4352 }
4353 if let Some(version) = browsers.safari {
4354 if version < 458752 {
4355 return false;
4356 }
4357 }
4358 if let Some(version) = browsers.ios_saf {
4359 if version < 458752 {
4360 return false;
4361 }
4362 }
4363 if let Some(version) = browsers.samsung {
4364 if version < 66816 {
4365 return false;
4366 }
4367 }
4368 if let Some(version) = browsers.android {
4369 if version < 66816 {
4370 return false;
4371 }
4372 }
4373 if browsers.ie.is_some() {
4374 return false;
4375 }
4376 }
4377 Feature::VminUnit => {
4378 if let Some(version) = browsers.chrome {
4379 if version < 1703936 {
4380 return false;
4381 }
4382 }
4383 if let Some(version) = browsers.edge {
4384 if version < 786432 {
4385 return false;
4386 }
4387 }
4388 if let Some(version) = browsers.firefox {
4389 if version < 1245184 {
4390 return false;
4391 }
4392 }
4393 if let Some(version) = browsers.ie {
4394 if version < 655360 {
4395 return false;
4396 }
4397 }
4398 if let Some(version) = browsers.opera {
4399 if version < 917504 {
4400 return false;
4401 }
4402 }
4403 if let Some(version) = browsers.safari {
4404 if version < 458752 {
4405 return false;
4406 }
4407 }
4408 if let Some(version) = browsers.ios_saf {
4409 if version < 458752 {
4410 return false;
4411 }
4412 }
4413 if let Some(version) = browsers.samsung {
4414 if version < 66816 {
4415 return false;
4416 }
4417 }
4418 if let Some(version) = browsers.android {
4419 if version < 263168 {
4420 return false;
4421 }
4422 }
4423 }
4424 Feature::ConicGradient | Feature::RepeatingConicGradient => {
4425 if let Some(version) = browsers.chrome {
4426 if version < 4521984 {
4427 return false;
4428 }
4429 }
4430 if let Some(version) = browsers.edge {
4431 if version < 5177344 {
4432 return false;
4433 }
4434 }
4435 if let Some(version) = browsers.firefox {
4436 if version < 5439488 {
4437 return false;
4438 }
4439 }
4440 if let Some(version) = browsers.opera {
4441 if version < 3145728 {
4442 return false;
4443 }
4444 }
4445 if let Some(version) = browsers.safari {
4446 if version < 786688 {
4447 return false;
4448 }
4449 }
4450 if let Some(version) = browsers.ios_saf {
4451 if version < 786944 {
4452 return false;
4453 }
4454 }
4455 if let Some(version) = browsers.samsung {
4456 if version < 655360 {
4457 return false;
4458 }
4459 }
4460 if let Some(version) = browsers.android {
4461 if version < 4521984 {
4462 return false;
4463 }
4464 }
4465 if browsers.ie.is_some() {
4466 return false;
4467 }
4468 }
4469 Feature::LinearGradient | Feature::RepeatingLinearGradient => {
4470 if let Some(version) = browsers.chrome {
4471 if version < 1179648 {
4472 return false;
4473 }
4474 }
4475 if let Some(version) = browsers.edge {
4476 if version < 786432 {
4477 return false;
4478 }
4479 }
4480 if let Some(version) = browsers.firefox {
4481 if version < 262144 {
4482 return false;
4483 }
4484 }
4485 if let Some(version) = browsers.ie {
4486 if version < 655360 {
4487 return false;
4488 }
4489 }
4490 if let Some(version) = browsers.opera {
4491 if version < 720896 {
4492 return false;
4493 }
4494 }
4495 if let Some(version) = browsers.safari {
4496 if version < 327936 {
4497 return false;
4498 }
4499 }
4500 if let Some(version) = browsers.ios_saf {
4501 if version < 327680 {
4502 return false;
4503 }
4504 }
4505 if let Some(version) = browsers.samsung {
4506 if version < 65536 {
4507 return false;
4508 }
4509 }
4510 if let Some(version) = browsers.android {
4511 if version < 263168 {
4512 return false;
4513 }
4514 }
4515 }
4516 Feature::RadialGradient => {
4517 if let Some(version) = browsers.chrome {
4518 if version < 1179648 {
4519 return false;
4520 }
4521 }
4522 if let Some(version) = browsers.edge {
4523 if version < 786432 {
4524 return false;
4525 }
4526 }
4527 if let Some(version) = browsers.firefox {
4528 if version < 262144 {
4529 return false;
4530 }
4531 }
4532 if let Some(version) = browsers.ie {
4533 if version < 655360 {
4534 return false;
4535 }
4536 }
4537 if let Some(version) = browsers.opera {
4538 if version < 786432 {
4539 return false;
4540 }
4541 }
4542 if let Some(version) = browsers.safari {
4543 if version < 327936 {
4544 return false;
4545 }
4546 }
4547 if let Some(version) = browsers.ios_saf {
4548 if version < 327680 {
4549 return false;
4550 }
4551 }
4552 if let Some(version) = browsers.samsung {
4553 if version < 65536 {
4554 return false;
4555 }
4556 }
4557 if let Some(version) = browsers.android {
4558 if version < 263168 {
4559 return false;
4560 }
4561 }
4562 }
4563 Feature::RepeatingRadialGradient => {
4564 if let Some(version) = browsers.chrome {
4565 if version < 1179648 {
4566 return false;
4567 }
4568 }
4569 if let Some(version) = browsers.edge {
4570 if version < 786432 {
4571 return false;
4572 }
4573 }
4574 if let Some(version) = browsers.firefox {
4575 if version < 655360 {
4576 return false;
4577 }
4578 }
4579 if let Some(version) = browsers.ie {
4580 if version < 655360 {
4581 return false;
4582 }
4583 }
4584 if let Some(version) = browsers.opera {
4585 if version < 786432 {
4586 return false;
4587 }
4588 }
4589 if let Some(version) = browsers.safari {
4590 if version < 327936 {
4591 return false;
4592 }
4593 }
4594 if let Some(version) = browsers.ios_saf {
4595 if version < 327680 {
4596 return false;
4597 }
4598 }
4599 if let Some(version) = browsers.samsung {
4600 if version < 65536 {
4601 return false;
4602 }
4603 }
4604 if let Some(version) = browsers.android {
4605 if version < 263168 {
4606 return false;
4607 }
4608 }
4609 }
4610 Feature::AfarListStyleType
4611 | Feature::AmharicListStyleType
4612 | Feature::AmharicAbegedeListStyleType
4613 | Feature::EthiopicListStyleType
4614 | Feature::EthiopicAbegedeListStyleType
4615 | Feature::EthiopicAbegedeAmEtListStyleType
4616 | Feature::EthiopicAbegedeGezListStyleType
4617 | Feature::EthiopicAbegedeTiErListStyleType
4618 | Feature::EthiopicAbegedeTiEtListStyleType
4619 | Feature::EthiopicHalehameAaErListStyleType
4620 | Feature::EthiopicHalehameAaEtListStyleType
4621 | Feature::EthiopicHalehameAmEtListStyleType
4622 | Feature::EthiopicHalehameGezListStyleType
4623 | Feature::EthiopicHalehameOmEtListStyleType
4624 | Feature::EthiopicHalehameSidEtListStyleType
4625 | Feature::EthiopicHalehameSoEtListStyleType
4626 | Feature::EthiopicHalehameTigListStyleType
4627 | Feature::LowerHexadecimalListStyleType
4628 | Feature::LowerNorwegianListStyleType
4629 | Feature::UpperHexadecimalListStyleType
4630 | Feature::UpperNorwegianListStyleType => {
4631 if let Some(version) = browsers.chrome {
4632 if version < 1179648 {
4633 return false;
4634 }
4635 }
4636 if let Some(version) = browsers.edge {
4637 if version < 5963776 {
4638 return false;
4639 }
4640 }
4641 if let Some(version) = browsers.opera {
4642 if version < 917504 {
4643 return false;
4644 }
4645 }
4646 if let Some(version) = browsers.safari {
4647 if version < 327680 {
4648 return false;
4649 }
4650 }
4651 if let Some(version) = browsers.ios_saf {
4652 if version < 262656 {
4653 return false;
4654 }
4655 }
4656 if let Some(version) = browsers.samsung {
4657 if version < 65536 {
4658 return false;
4659 }
4660 }
4661 if let Some(version) = browsers.android {
4662 if version < 196608 {
4663 return false;
4664 }
4665 }
4666 if browsers.firefox.is_some() || browsers.ie.is_some() {
4667 return false;
4668 }
4669 }
4670 Feature::ArabicIndicListStyleType
4671 | Feature::BengaliListStyleType
4672 | Feature::CjkEarthlyBranchListStyleType
4673 | Feature::CjkHeavenlyStemListStyleType
4674 | Feature::DevanagariListStyleType
4675 | Feature::GujaratiListStyleType
4676 | Feature::GurmukhiListStyleType
4677 | Feature::KannadaListStyleType
4678 | Feature::KhmerListStyleType
4679 | Feature::LaoListStyleType
4680 | Feature::MalayalamListStyleType
4681 | Feature::MyanmarListStyleType
4682 | Feature::OriyaListStyleType
4683 | Feature::PersianListStyleType
4684 | Feature::TeluguListStyleType
4685 | Feature::ThaiListStyleType => {
4686 if let Some(version) = browsers.chrome {
4687 if version < 1179648 {
4688 return false;
4689 }
4690 }
4691 if let Some(version) = browsers.edge {
4692 if version < 5177344 {
4693 return false;
4694 }
4695 }
4696 if let Some(version) = browsers.firefox {
4697 if version < 262144 {
4698 return false;
4699 }
4700 }
4701 if let Some(version) = browsers.opera {
4702 if version < 917504 {
4703 return false;
4704 }
4705 }
4706 if let Some(version) = browsers.safari {
4707 if version < 327680 {
4708 return false;
4709 }
4710 }
4711 if let Some(version) = browsers.ios_saf {
4712 if version < 262656 {
4713 return false;
4714 }
4715 }
4716 if let Some(version) = browsers.samsung {
4717 if version < 65536 {
4718 return false;
4719 }
4720 }
4721 if let Some(version) = browsers.android {
4722 if version < 263168 {
4723 return false;
4724 }
4725 }
4726 if browsers.ie.is_some() {
4727 return false;
4728 }
4729 }
4730 Feature::ArmenianListStyleType
4731 | Feature::DecimalLeadingZeroListStyleType
4732 | Feature::GeorgianListStyleType
4733 | Feature::LowerAlphaListStyleType
4734 | Feature::LowerGreekListStyleType
4735 | Feature::LowerRomanListStyleType
4736 | Feature::UpperAlphaListStyleType
4737 | Feature::UpperLatinListStyleType
4738 | Feature::UpperRomanListStyleType => {
4739 if let Some(version) = browsers.chrome {
4740 if version < 1179648 {
4741 return false;
4742 }
4743 }
4744 if let Some(version) = browsers.edge {
4745 if version < 786432 {
4746 return false;
4747 }
4748 }
4749 if let Some(version) = browsers.firefox {
4750 if version < 262144 {
4751 return false;
4752 }
4753 }
4754 if let Some(version) = browsers.ie {
4755 if version < 524288 {
4756 return false;
4757 }
4758 }
4759 if let Some(version) = browsers.opera {
4760 if version < 655616 {
4761 return false;
4762 }
4763 }
4764 if let Some(version) = browsers.safari {
4765 if version < 65536 {
4766 return false;
4767 }
4768 }
4769 if let Some(version) = browsers.ios_saf {
4770 if version < 65536 {
4771 return false;
4772 }
4773 }
4774 if let Some(version) = browsers.samsung {
4775 if version < 65536 {
4776 return false;
4777 }
4778 }
4779 if let Some(version) = browsers.android {
4780 if version < 263168 {
4781 return false;
4782 }
4783 }
4784 }
4785 Feature::AsterisksListStyleType | Feature::FootnotesListStyleType => {
4786 if let Some(version) = browsers.chrome {
4787 if version < 1179648 {
4788 return false;
4789 }
4790 }
4791 if let Some(version) = browsers.edge {
4792 if version < 5963776 {
4793 return false;
4794 }
4795 }
4796 if let Some(version) = browsers.opera {
4797 if version < 917504 {
4798 return false;
4799 }
4800 }
4801 if let Some(version) = browsers.safari {
4802 if version < 327936 {
4803 return false;
4804 }
4805 }
4806 if let Some(version) = browsers.ios_saf {
4807 if version < 327680 {
4808 return false;
4809 }
4810 }
4811 if let Some(version) = browsers.samsung {
4812 if version < 65536 {
4813 return false;
4814 }
4815 }
4816 if let Some(version) = browsers.android {
4817 if version < 263168 {
4818 return false;
4819 }
4820 }
4821 if browsers.firefox.is_some() || browsers.ie.is_some() {
4822 return false;
4823 }
4824 }
4825 Feature::BinaryListStyleType
4826 | Feature::OctalListStyleType
4827 | Feature::OromoListStyleType
4828 | Feature::SidamaListStyleType
4829 | Feature::SomaliListStyleType
4830 | Feature::TigreListStyleType
4831 | Feature::TigrinyaErListStyleType
4832 | Feature::TigrinyaErAbegedeListStyleType
4833 | Feature::TigrinyaEtListStyleType
4834 | Feature::TigrinyaEtAbegedeListStyleType => {
4835 if let Some(version) = browsers.chrome {
4836 if version < 1179648 {
4837 return false;
4838 }
4839 }
4840 if let Some(version) = browsers.edge {
4841 if version < 5963776 {
4842 return false;
4843 }
4844 }
4845 if let Some(version) = browsers.opera {
4846 if version < 917504 {
4847 return false;
4848 }
4849 }
4850 if let Some(version) = browsers.safari {
4851 if version < 327680 {
4852 return false;
4853 }
4854 }
4855 if let Some(version) = browsers.ios_saf {
4856 if version < 262656 {
4857 return false;
4858 }
4859 }
4860 if let Some(version) = browsers.samsung {
4861 if version < 65536 {
4862 return false;
4863 }
4864 }
4865 if let Some(version) = browsers.android {
4866 if version < 263168 {
4867 return false;
4868 }
4869 }
4870 if browsers.firefox.is_some() || browsers.ie.is_some() {
4871 return false;
4872 }
4873 }
4874 Feature::CambodianListStyleType | Feature::MongolianListStyleType | Feature::TibetanListStyleType => {
4875 if let Some(version) = browsers.chrome {
4876 if version < 1179648 {
4877 return false;
4878 }
4879 }
4880 if let Some(version) = browsers.edge {
4881 if version < 5177344 {
4882 return false;
4883 }
4884 }
4885 if let Some(version) = browsers.firefox {
4886 if version < 2162688 {
4887 return false;
4888 }
4889 }
4890 if let Some(version) = browsers.opera {
4891 if version < 917504 {
4892 return false;
4893 }
4894 }
4895 if let Some(version) = browsers.safari {
4896 if version < 327680 {
4897 return false;
4898 }
4899 }
4900 if let Some(version) = browsers.ios_saf {
4901 if version < 262656 {
4902 return false;
4903 }
4904 }
4905 if let Some(version) = browsers.samsung {
4906 if version < 65536 {
4907 return false;
4908 }
4909 }
4910 if let Some(version) = browsers.android {
4911 if version < 263168 {
4912 return false;
4913 }
4914 }
4915 if browsers.ie.is_some() {
4916 return false;
4917 }
4918 }
4919 Feature::CjkDecimalListStyleType => {
4920 if let Some(version) = browsers.chrome {
4921 if version < 5963776 {
4922 return false;
4923 }
4924 }
4925 if let Some(version) = browsers.edge {
4926 if version < 5963776 {
4927 return false;
4928 }
4929 }
4930 if let Some(version) = browsers.firefox {
4931 if version < 1835008 {
4932 return false;
4933 }
4934 }
4935 if let Some(version) = browsers.opera {
4936 if version < 4194304 {
4937 return false;
4938 }
4939 }
4940 if let Some(version) = browsers.safari {
4941 if version < 983040 {
4942 return false;
4943 }
4944 }
4945 if let Some(version) = browsers.ios_saf {
4946 if version < 983040 {
4947 return false;
4948 }
4949 }
4950 if let Some(version) = browsers.samsung {
4951 if version < 1048576 {
4952 return false;
4953 }
4954 }
4955 if let Some(version) = browsers.android {
4956 if version < 5963776 {
4957 return false;
4958 }
4959 }
4960 if browsers.ie.is_some() {
4961 return false;
4962 }
4963 }
4964 Feature::DisclosureClosedListStyleType | Feature::DisclosureOpenListStyleType => {
4965 if let Some(version) = browsers.chrome {
4966 if version < 5832704 {
4967 return false;
4968 }
4969 }
4970 if let Some(version) = browsers.edge {
4971 if version < 5832704 {
4972 return false;
4973 }
4974 }
4975 if let Some(version) = browsers.firefox {
4976 if version < 2162688 {
4977 return false;
4978 }
4979 }
4980 if let Some(version) = browsers.opera {
4981 if version < 4128768 {
4982 return false;
4983 }
4984 }
4985 if let Some(version) = browsers.safari {
4986 if version < 983040 {
4987 return false;
4988 }
4989 }
4990 if let Some(version) = browsers.ios_saf {
4991 if version < 983040 {
4992 return false;
4993 }
4994 }
4995 if let Some(version) = browsers.samsung {
4996 if version < 983040 {
4997 return false;
4998 }
4999 }
5000 if let Some(version) = browsers.android {
5001 if version < 5832704 {
5002 return false;
5003 }
5004 }
5005 if browsers.ie.is_some() {
5006 return false;
5007 }
5008 }
5009 Feature::EthiopicNumericListStyleType
5010 | Feature::JapaneseFormalListStyleType
5011 | Feature::JapaneseInformalListStyleType
5012 | Feature::TamilListStyleType => {
5013 if let Some(version) = browsers.chrome {
5014 if version < 5963776 {
5015 return false;
5016 }
5017 }
5018 if let Some(version) = browsers.edge {
5019 if version < 5963776 {
5020 return false;
5021 }
5022 }
5023 if let Some(version) = browsers.firefox {
5024 if version < 262144 {
5025 return false;
5026 }
5027 }
5028 if let Some(version) = browsers.opera {
5029 if version < 4194304 {
5030 return false;
5031 }
5032 }
5033 if let Some(version) = browsers.safari {
5034 if version < 983040 {
5035 return false;
5036 }
5037 }
5038 if let Some(version) = browsers.ios_saf {
5039 if version < 983040 {
5040 return false;
5041 }
5042 }
5043 if let Some(version) = browsers.samsung {
5044 if version < 1048576 {
5045 return false;
5046 }
5047 }
5048 if let Some(version) = browsers.android {
5049 if version < 5963776 {
5050 return false;
5051 }
5052 }
5053 if browsers.ie.is_some() {
5054 return false;
5055 }
5056 }
5057 Feature::HebrewListStyleType
5058 | Feature::HiraganaListStyleType
5059 | Feature::HiraganaIrohaListStyleType
5060 | Feature::KatakanaListStyleType
5061 | Feature::KatakanaIrohaListStyleType
5062 | Feature::NoneListStyleType
5063 | Feature::AutoSize => {
5064 if let Some(version) = browsers.chrome {
5065 if version < 1179648 {
5066 return false;
5067 }
5068 }
5069 if let Some(version) = browsers.edge {
5070 if version < 786432 {
5071 return false;
5072 }
5073 }
5074 if let Some(version) = browsers.firefox {
5075 if version < 262144 {
5076 return false;
5077 }
5078 }
5079 if let Some(version) = browsers.ie {
5080 if version < 720896 {
5081 return false;
5082 }
5083 }
5084 if let Some(version) = browsers.opera {
5085 if version < 917504 {
5086 return false;
5087 }
5088 }
5089 if let Some(version) = browsers.safari {
5090 if version < 65536 {
5091 return false;
5092 }
5093 }
5094 if let Some(version) = browsers.ios_saf {
5095 if version < 65536 {
5096 return false;
5097 }
5098 }
5099 if let Some(version) = browsers.samsung {
5100 if version < 65536 {
5101 return false;
5102 }
5103 }
5104 if let Some(version) = browsers.android {
5105 if version < 263168 {
5106 return false;
5107 }
5108 }
5109 }
5110 Feature::KoreanHangulFormalListStyleType
5111 | Feature::KoreanHanjaFormalListStyleType
5112 | Feature::KoreanHanjaInformalListStyleType => {
5113 if let Some(version) = browsers.chrome {
5114 if version < 2949120 {
5115 return false;
5116 }
5117 }
5118 if let Some(version) = browsers.edge {
5119 if version < 5177344 {
5120 return false;
5121 }
5122 }
5123 if let Some(version) = browsers.firefox {
5124 if version < 1835008 {
5125 return false;
5126 }
5127 }
5128 if let Some(version) = browsers.opera {
5129 if version < 2097152 {
5130 return false;
5131 }
5132 }
5133 if let Some(version) = browsers.safari {
5134 if version < 983040 {
5135 return false;
5136 }
5137 }
5138 if let Some(version) = browsers.ios_saf {
5139 if version < 983040 {
5140 return false;
5141 }
5142 }
5143 if let Some(version) = browsers.samsung {
5144 if version < 327680 {
5145 return false;
5146 }
5147 }
5148 if let Some(version) = browsers.android {
5149 if version < 2949120 {
5150 return false;
5151 }
5152 }
5153 if browsers.ie.is_some() {
5154 return false;
5155 }
5156 }
5157 Feature::LowerArmenianListStyleType | Feature::UpperArmenianListStyleType => {
5158 if let Some(version) = browsers.chrome {
5159 if version < 1179648 {
5160 return false;
5161 }
5162 }
5163 if let Some(version) = browsers.edge {
5164 if version < 5177344 {
5165 return false;
5166 }
5167 }
5168 if let Some(version) = browsers.firefox {
5169 if version < 2162688 {
5170 return false;
5171 }
5172 }
5173 if let Some(version) = browsers.opera {
5174 if version < 917504 {
5175 return false;
5176 }
5177 }
5178 if let Some(version) = browsers.safari {
5179 if version < 327936 {
5180 return false;
5181 }
5182 }
5183 if let Some(version) = browsers.ios_saf {
5184 if version < 327680 {
5185 return false;
5186 }
5187 }
5188 if let Some(version) = browsers.samsung {
5189 if version < 65536 {
5190 return false;
5191 }
5192 }
5193 if let Some(version) = browsers.android {
5194 if version < 263168 {
5195 return false;
5196 }
5197 }
5198 if browsers.ie.is_some() {
5199 return false;
5200 }
5201 }
5202 Feature::LowerLatinListStyleType => {
5203 if let Some(version) = browsers.chrome {
5204 if version < 1179648 {
5205 return false;
5206 }
5207 }
5208 if let Some(version) = browsers.edge {
5209 if version < 786432 {
5210 return false;
5211 }
5212 }
5213 if let Some(version) = browsers.firefox {
5214 if version < 262144 {
5215 return false;
5216 }
5217 }
5218 if let Some(version) = browsers.ie {
5219 if version < 524288 {
5220 return false;
5221 }
5222 }
5223 if let Some(version) = browsers.opera {
5224 if version < 655616 {
5225 return false;
5226 }
5227 }
5228 if let Some(version) = browsers.safari {
5229 if version < 65536 {
5230 return false;
5231 }
5232 }
5233 if let Some(version) = browsers.ios_saf {
5234 if version < 65536 {
5235 return false;
5236 }
5237 }
5238 if let Some(version) = browsers.samsung {
5239 if version < 327680 {
5240 return false;
5241 }
5242 }
5243 if let Some(version) = browsers.android {
5244 if version < 263168 {
5245 return false;
5246 }
5247 }
5248 }
5249 Feature::SimpChineseFormalListStyleType
5250 | Feature::SimpChineseInformalListStyleType
5251 | Feature::TradChineseFormalListStyleType
5252 | Feature::TradChineseInformalListStyleType => {
5253 if let Some(version) = browsers.chrome {
5254 if version < 2949120 {
5255 return false;
5256 }
5257 }
5258 if let Some(version) = browsers.edge {
5259 if version < 5177344 {
5260 return false;
5261 }
5262 }
5263 if let Some(version) = browsers.firefox {
5264 if version < 262144 {
5265 return false;
5266 }
5267 }
5268 if let Some(version) = browsers.opera {
5269 if version < 2097152 {
5270 return false;
5271 }
5272 }
5273 if let Some(version) = browsers.safari {
5274 if version < 983040 {
5275 return false;
5276 }
5277 }
5278 if let Some(version) = browsers.ios_saf {
5279 if version < 983040 {
5280 return false;
5281 }
5282 }
5283 if let Some(version) = browsers.samsung {
5284 if version < 327680 {
5285 return false;
5286 }
5287 }
5288 if let Some(version) = browsers.android {
5289 if version < 2949120 {
5290 return false;
5291 }
5292 }
5293 if browsers.ie.is_some() {
5294 return false;
5295 }
5296 }
5297 Feature::StringListStyleType => {
5298 if let Some(version) = browsers.chrome {
5299 if version < 5177344 {
5300 return false;
5301 }
5302 }
5303 if let Some(version) = browsers.edge {
5304 if version < 5177344 {
5305 return false;
5306 }
5307 }
5308 if let Some(version) = browsers.firefox {
5309 if version < 2555904 {
5310 return false;
5311 }
5312 }
5313 if let Some(version) = browsers.opera {
5314 if version < 3735552 {
5315 return false;
5316 }
5317 }
5318 if let Some(version) = browsers.safari {
5319 if version < 917760 {
5320 return false;
5321 }
5322 }
5323 if let Some(version) = browsers.ios_saf {
5324 if version < 918784 {
5325 return false;
5326 }
5327 }
5328 if let Some(version) = browsers.samsung {
5329 if version < 786432 {
5330 return false;
5331 }
5332 }
5333 if let Some(version) = browsers.android {
5334 if version < 5177344 {
5335 return false;
5336 }
5337 }
5338 if browsers.ie.is_some() {
5339 return false;
5340 }
5341 }
5342 Feature::SymbolsListStyleType => {
5343 if let Some(version) = browsers.firefox {
5344 if version < 2293760 {
5345 return false;
5346 }
5347 }
5348 if browsers.android.is_some()
5349 || browsers.chrome.is_some()
5350 || browsers.edge.is_some()
5351 || browsers.ie.is_some()
5352 || browsers.ios_saf.is_some()
5353 || browsers.opera.is_some()
5354 || browsers.safari.is_some()
5355 || browsers.samsung.is_some()
5356 {
5357 return false;
5358 }
5359 }
5360 Feature::AnchorSizeSize => {
5361 if let Some(version) = browsers.chrome {
5362 if version < 8192000 {
5363 return false;
5364 }
5365 }
5366 if let Some(version) = browsers.edge {
5367 if version < 8192000 {
5368 return false;
5369 }
5370 }
5371 if let Some(version) = browsers.opera {
5372 if version < 5439488 {
5373 return false;
5374 }
5375 }
5376 if let Some(version) = browsers.safari {
5377 if version < 1703936 {
5378 return false;
5379 }
5380 }
5381 if let Some(version) = browsers.ios_saf {
5382 if version < 1703936 {
5383 return false;
5384 }
5385 }
5386 if let Some(version) = browsers.samsung {
5387 if version < 1769472 {
5388 return false;
5389 }
5390 }
5391 if let Some(version) = browsers.android {
5392 if version < 8192000 {
5393 return false;
5394 }
5395 }
5396 if browsers.firefox.is_some() || browsers.ie.is_some() {
5397 return false;
5398 }
5399 }
5400 Feature::FitContentSize => {
5401 if let Some(version) = browsers.chrome {
5402 if version < 1638400 {
5403 return false;
5404 }
5405 }
5406 if let Some(version) = browsers.edge {
5407 if version < 5177344 {
5408 return false;
5409 }
5410 }
5411 if let Some(version) = browsers.firefox {
5412 if version < 262144 {
5413 return false;
5414 }
5415 }
5416 if let Some(version) = browsers.opera {
5417 if version < 917504 {
5418 return false;
5419 }
5420 }
5421 if let Some(version) = browsers.safari {
5422 if version < 458752 {
5423 return false;
5424 }
5425 }
5426 if let Some(version) = browsers.ios_saf {
5427 if version < 458752 {
5428 return false;
5429 }
5430 }
5431 if let Some(version) = browsers.samsung {
5432 if version < 66816 {
5433 return false;
5434 }
5435 }
5436 if let Some(version) = browsers.android {
5437 if version < 263168 {
5438 return false;
5439 }
5440 }
5441 if browsers.ie.is_some() {
5442 return false;
5443 }
5444 }
5445 Feature::IsAnimatableSize => {
5446 if let Some(version) = browsers.chrome {
5447 if version < 1703936 {
5448 return false;
5449 }
5450 }
5451 if let Some(version) = browsers.edge {
5452 if version < 786432 {
5453 return false;
5454 }
5455 }
5456 if let Some(version) = browsers.firefox {
5457 if version < 1048576 {
5458 return false;
5459 }
5460 }
5461 if let Some(version) = browsers.ie {
5462 if version < 720896 {
5463 return false;
5464 }
5465 }
5466 if let Some(version) = browsers.opera {
5467 if version < 917504 {
5468 return false;
5469 }
5470 }
5471 if let Some(version) = browsers.safari {
5472 if version < 458752 {
5473 return false;
5474 }
5475 }
5476 if let Some(version) = browsers.ios_saf {
5477 if version < 458752 {
5478 return false;
5479 }
5480 }
5481 if let Some(version) = browsers.samsung {
5482 if version < 66816 {
5483 return false;
5484 }
5485 }
5486 if let Some(version) = browsers.android {
5487 if version < 263168 {
5488 return false;
5489 }
5490 }
5491 }
5492 Feature::MaxContentSize => {
5493 if let Some(version) = browsers.chrome {
5494 if version < 1638400 {
5495 return false;
5496 }
5497 }
5498 if let Some(version) = browsers.edge {
5499 if version < 5177344 {
5500 return false;
5501 }
5502 }
5503 if let Some(version) = browsers.firefox {
5504 if version < 262144 {
5505 return false;
5506 }
5507 }
5508 if let Some(version) = browsers.opera {
5509 if version < 2818048 {
5510 return false;
5511 }
5512 }
5513 if let Some(version) = browsers.safari {
5514 if version < 720896 {
5515 return false;
5516 }
5517 }
5518 if let Some(version) = browsers.ios_saf {
5519 if version < 720896 {
5520 return false;
5521 }
5522 }
5523 if let Some(version) = browsers.samsung {
5524 if version < 66816 {
5525 return false;
5526 }
5527 }
5528 if let Some(version) = browsers.android {
5529 if version < 263168 {
5530 return false;
5531 }
5532 }
5533 if browsers.ie.is_some() {
5534 return false;
5535 }
5536 }
5537 Feature::MinContentSize => {
5538 if let Some(version) = browsers.chrome {
5539 if version < 3014656 {
5540 return false;
5541 }
5542 }
5543 if let Some(version) = browsers.edge {
5544 if version < 5177344 {
5545 return false;
5546 }
5547 }
5548 if let Some(version) = browsers.firefox {
5549 if version < 262144 {
5550 return false;
5551 }
5552 }
5553 if let Some(version) = browsers.opera {
5554 if version < 2162688 {
5555 return false;
5556 }
5557 }
5558 if let Some(version) = browsers.safari {
5559 if version < 720896 {
5560 return false;
5561 }
5562 }
5563 if let Some(version) = browsers.ios_saf {
5564 if version < 720896 {
5565 return false;
5566 }
5567 }
5568 if let Some(version) = browsers.samsung {
5569 if version < 327680 {
5570 return false;
5571 }
5572 }
5573 if let Some(version) = browsers.android {
5574 if version < 3014656 {
5575 return false;
5576 }
5577 }
5578 if browsers.ie.is_some() {
5579 return false;
5580 }
5581 }
5582 Feature::StretchSize => {
5583 if let Some(version) = browsers.chrome {
5584 if version < 9043968 {
5585 return false;
5586 }
5587 }
5588 if let Some(version) = browsers.edge {
5589 if version < 9043968 {
5590 return false;
5591 }
5592 }
5593 if let Some(version) = browsers.opera {
5594 if version < 5963776 {
5595 return false;
5596 }
5597 }
5598 if let Some(version) = browsers.android {
5599 if version < 9043968 {
5600 return false;
5601 }
5602 }
5603 if browsers.firefox.is_some()
5604 || browsers.ie.is_some()
5605 || browsers.ios_saf.is_some()
5606 || browsers.safari.is_some()
5607 || browsers.samsung.is_some()
5608 {
5609 return false;
5610 }
5611 }
5612 Feature::MozAvailableSize => {
5613 if let Some(version) = browsers.firefox {
5614 if version < 262144 {
5615 return false;
5616 }
5617 }
5618 if browsers.android.is_some()
5619 || browsers.chrome.is_some()
5620 || browsers.edge.is_some()
5621 || browsers.ie.is_some()
5622 || browsers.ios_saf.is_some()
5623 || browsers.opera.is_some()
5624 || browsers.safari.is_some()
5625 || browsers.samsung.is_some()
5626 {
5627 return false;
5628 }
5629 }
5630 Feature::WebkitFillAvailableSize => {
5631 if let Some(version) = browsers.safari {
5632 if version < 458752 {
5633 return false;
5634 }
5635 }
5636 if let Some(version) = browsers.ios_saf {
5637 if version < 458752 {
5638 return false;
5639 }
5640 }
5641 if let Some(version) = browsers.samsung {
5642 if version < 327680 {
5643 return false;
5644 }
5645 }
5646 if browsers.android.is_some()
5647 || browsers.chrome.is_some()
5648 || browsers.edge.is_some()
5649 || browsers.firefox.is_some()
5650 || browsers.ie.is_some()
5651 || browsers.opera.is_some()
5652 {
5653 return false;
5654 }
5655 }
5656 Feature::P3Colors | Feature::LangSelectorList => {
5657 if let Some(version) = browsers.safari {
5658 if version < 655616 {
5659 return false;
5660 }
5661 }
5662 if let Some(version) = browsers.ios_saf {
5663 if version < 656128 {
5664 return false;
5665 }
5666 }
5667 if browsers.android.is_some()
5668 || browsers.chrome.is_some()
5669 || browsers.edge.is_some()
5670 || browsers.firefox.is_some()
5671 || browsers.ie.is_some()
5672 || browsers.opera.is_some()
5673 || browsers.samsung.is_some()
5674 {
5675 return false;
5676 }
5677 }
5678 }
5679 true
5680 }
5681
5682 pub fn is_partially_compatible(&self, targets: Browsers) -> bool {
5683 let mut browsers = Browsers::default();
5684 if targets.android.is_some() {
5685 browsers.android = targets.android;
5686 if self.is_compatible(browsers) {
5687 return true;
5688 }
5689 browsers.android = None;
5690 }
5691 if targets.chrome.is_some() {
5692 browsers.chrome = targets.chrome;
5693 if self.is_compatible(browsers) {
5694 return true;
5695 }
5696 browsers.chrome = None;
5697 }
5698 if targets.edge.is_some() {
5699 browsers.edge = targets.edge;
5700 if self.is_compatible(browsers) {
5701 return true;
5702 }
5703 browsers.edge = None;
5704 }
5705 if targets.firefox.is_some() {
5706 browsers.firefox = targets.firefox;
5707 if self.is_compatible(browsers) {
5708 return true;
5709 }
5710 browsers.firefox = None;
5711 }
5712 if targets.ie.is_some() {
5713 browsers.ie = targets.ie;
5714 if self.is_compatible(browsers) {
5715 return true;
5716 }
5717 browsers.ie = None;
5718 }
5719 if targets.ios_saf.is_some() {
5720 browsers.ios_saf = targets.ios_saf;
5721 if self.is_compatible(browsers) {
5722 return true;
5723 }
5724 browsers.ios_saf = None;
5725 }
5726 if targets.opera.is_some() {
5727 browsers.opera = targets.opera;
5728 if self.is_compatible(browsers) {
5729 return true;
5730 }
5731 browsers.opera = None;
5732 }
5733 if targets.safari.is_some() {
5734 browsers.safari = targets.safari;
5735 if self.is_compatible(browsers) {
5736 return true;
5737 }
5738 browsers.safari = None;
5739 }
5740 if targets.samsung.is_some() {
5741 browsers.samsung = targets.samsung;
5742 if self.is_compatible(browsers) {
5743 return true;
5744 }
5745 browsers.samsung = None;
5746 }
5747
5748 false
5749 }
5750}