@featurevisor/core 2.25.0 → 2.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/coverage/clover.xml +1499 -1476
  3. package/coverage/coverage-final.json +18 -17
  4. package/coverage/lcov-report/builder/allocator.ts.html +1 -1
  5. package/coverage/lcov-report/builder/buildDatafile.ts.html +1 -1
  6. package/coverage/lcov-report/builder/buildScopedConditions.ts.html +1 -1
  7. package/coverage/lcov-report/builder/buildScopedDatafile.ts.html +1 -1
  8. package/coverage/lcov-report/builder/buildScopedSegments.ts.html +1 -1
  9. package/coverage/lcov-report/builder/convertToV1.ts.html +1 -1
  10. package/coverage/lcov-report/builder/getFeatureRanges.ts.html +1 -1
  11. package/coverage/lcov-report/builder/hashes.ts.html +1 -1
  12. package/coverage/lcov-report/builder/index.html +1 -1
  13. package/coverage/lcov-report/builder/mutateVariables.ts.html +1 -1
  14. package/coverage/lcov-report/builder/mutator.ts.html +52 -52
  15. package/coverage/lcov-report/builder/revision.ts.html +1 -1
  16. package/coverage/lcov-report/builder/traffic.ts.html +1 -1
  17. package/coverage/lcov-report/config/index.html +1 -1
  18. package/coverage/lcov-report/config/index.ts.html +1 -1
  19. package/coverage/lcov-report/config/projectConfig.ts.html +15 -15
  20. package/coverage/lcov-report/datasource/adapter.ts.html +1 -1
  21. package/coverage/lcov-report/datasource/datasource.ts.html +18 -18
  22. package/coverage/lcov-report/datasource/filesystemAdapter.ts.html +43 -43
  23. package/coverage/lcov-report/datasource/index.html +1 -1
  24. package/coverage/lcov-report/datasource/index.ts.html +1 -1
  25. package/coverage/lcov-report/generate-code/index.html +1 -1
  26. package/coverage/lcov-report/generate-code/typescript.ts.html +3 -3
  27. package/coverage/lcov-report/index.html +18 -18
  28. package/coverage/lcov-report/linter/attributeSchema.ts.html +130 -130
  29. package/coverage/lcov-report/linter/checkCircularDependency.ts.html +11 -11
  30. package/coverage/lcov-report/linter/checkPercentageExceedingSlot.ts.html +15 -15
  31. package/coverage/lcov-report/linter/conditionSchema.ts.html +150 -150
  32. package/coverage/lcov-report/linter/featureSchema.ts.html +458 -443
  33. package/coverage/lcov-report/linter/groupSchema.ts.html +24 -27
  34. package/coverage/lcov-report/linter/index.html +83 -68
  35. package/coverage/lcov-report/linter/lintProject.ts.html +158 -158
  36. package/coverage/lcov-report/linter/mutationNotation.ts.html +104 -104
  37. package/coverage/lcov-report/linter/printError.ts.html +79 -28
  38. package/coverage/lcov-report/linter/schema.ts.html +129 -135
  39. package/coverage/lcov-report/linter/segmentSchema.ts.html +15 -9
  40. package/coverage/lcov-report/linter/testSchema.ts.html +67 -94
  41. package/coverage/lcov-report/linter/zodHelpers.ts.html +133 -0
  42. package/coverage/lcov-report/list/index.html +1 -1
  43. package/coverage/lcov-report/list/matrix.ts.html +1 -1
  44. package/coverage/lcov-report/tester/cliFormat.ts.html +6 -6
  45. package/coverage/lcov-report/tester/helpers.ts.html +1 -1
  46. package/coverage/lcov-report/tester/index.html +1 -1
  47. package/coverage/lcov-report/utils/extractKeys.ts.html +1 -1
  48. package/coverage/lcov-report/utils/git.ts.html +1 -1
  49. package/coverage/lcov-report/utils/index.html +1 -1
  50. package/coverage/lcov-report/utils/index.ts.html +1 -1
  51. package/coverage/lcov-report/utils/pretty.ts.html +1 -1
  52. package/coverage/lcov.info +3031 -2984
  53. package/lib/generate-code/typescript.js +2 -2
  54. package/lib/linter/attributeSchema.d.ts +19 -352
  55. package/lib/linter/attributeSchema.spec.js.map +1 -1
  56. package/lib/linter/conditionSchema.d.ts +1 -1
  57. package/lib/linter/conditionSchema.js +2 -3
  58. package/lib/linter/conditionSchema.js.map +1 -1
  59. package/lib/linter/conditionSchema.spec.js.map +1 -1
  60. package/lib/linter/featureSchema.d.ts +75 -964
  61. package/lib/linter/featureSchema.js +64 -53
  62. package/lib/linter/featureSchema.js.map +1 -1
  63. package/lib/linter/featureSchema.spec.js +28 -0
  64. package/lib/linter/featureSchema.spec.js.map +1 -1
  65. package/lib/linter/groupSchema.d.ts +4 -28
  66. package/lib/linter/groupSchema.js +3 -5
  67. package/lib/linter/groupSchema.js.map +1 -1
  68. package/lib/linter/lintProject.spec.js +101 -13
  69. package/lib/linter/lintProject.spec.js.map +1 -1
  70. package/lib/linter/printError.js +21 -7
  71. package/lib/linter/printError.js.map +1 -1
  72. package/lib/linter/schema.d.ts +9 -2
  73. package/lib/linter/schema.js +2 -6
  74. package/lib/linter/schema.js.map +1 -1
  75. package/lib/linter/schema.spec.js +3 -2
  76. package/lib/linter/schema.spec.js.map +1 -1
  77. package/lib/linter/segmentSchema.d.ts +1 -9
  78. package/lib/linter/segmentSchema.js +3 -1
  79. package/lib/linter/segmentSchema.js.map +1 -1
  80. package/lib/linter/segmentSchema.spec.js.map +1 -1
  81. package/lib/linter/testSchema.d.ts +16 -222
  82. package/lib/linter/testSchema.js +23 -38
  83. package/lib/linter/testSchema.js.map +1 -1
  84. package/lib/linter/testSchema.spec.d.ts +1 -0
  85. package/lib/linter/testSchema.spec.js +162 -0
  86. package/lib/linter/testSchema.spec.js.map +1 -0
  87. package/lib/linter/zodHelpers.d.ts +2 -0
  88. package/lib/linter/zodHelpers.js +15 -0
  89. package/lib/linter/zodHelpers.js.map +1 -0
  90. package/package.json +3 -3
  91. package/src/generate-code/typescript.ts +2 -2
  92. package/src/linter/attributeSchema.spec.ts +3 -3
  93. package/src/linter/conditionSchema.spec.ts +3 -3
  94. package/src/linter/conditionSchema.ts +4 -4
  95. package/src/linter/featureSchema.spec.ts +39 -4
  96. package/src/linter/featureSchema.ts +82 -77
  97. package/src/linter/groupSchema.ts +11 -12
  98. package/src/linter/lintProject.spec.ts +121 -13
  99. package/src/linter/printError.ts +27 -10
  100. package/src/linter/schema.spec.ts +12 -11
  101. package/src/linter/schema.ts +7 -9
  102. package/src/linter/segmentSchema.spec.ts +5 -5
  103. package/src/linter/segmentSchema.ts +3 -1
  104. package/src/linter/testSchema.spec.ts +193 -0
  105. package/src/linter/testSchema.ts +36 -45
  106. package/src/linter/zodHelpers.ts +16 -0
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">60.76% </span>
26
+ <span class="strong">60.89% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>175/288</span>
28
+ <span class='fraction'>176/289</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">64.15% </span>
47
+ <span class="strong">64.28% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>170/265</span>
49
+ <span class='fraction'>171/266</span>
50
50
  </div>
51
51
 
52
52
 
@@ -780,6 +780,7 @@
780
780
  <span class="cline-any cline-yes">4x</span>
781
781
  <span class="cline-any cline-neutral">&nbsp;</span>
782
782
  <span class="cline-any cline-neutral">&nbsp;</span>
783
+ <span class="cline-any cline-yes">4x</span>
783
784
  <span class="cline-any cline-neutral">&nbsp;</span>
784
785
  <span class="cline-any cline-yes">4x</span>
785
786
  <span class="cline-any cline-yes">4x</span>
@@ -813,11 +814,11 @@
813
814
  <span class="cline-any cline-neutral">&nbsp;</span>
814
815
  <span class="cline-any cline-neutral">&nbsp;</span>
815
816
  <span class="cline-any cline-neutral">&nbsp;</span>
816
- <span class="cline-any cline-yes">6x</span>
817
+ <span class="cline-any cline-yes">8x</span>
817
818
  <span class="cline-any cline-neutral">&nbsp;</span>
818
819
  <span class="cline-any cline-neutral">&nbsp;</span>
819
820
  <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-yes">5x</span>
821
+ <span class="cline-any cline-yes">6x</span>
821
822
  <span class="cline-any cline-neutral">&nbsp;</span>
822
823
  <span class="cline-any cline-neutral">&nbsp;</span>
823
824
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -826,15 +827,15 @@
826
827
  <span class="cline-any cline-neutral">&nbsp;</span>
827
828
  <span class="cline-any cline-neutral">&nbsp;</span>
828
829
  <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-yes">13x</span>
830
+ <span class="cline-any cline-yes">16x</span>
830
831
  <span class="cline-any cline-neutral">&nbsp;</span>
831
832
  <span class="cline-any cline-neutral">&nbsp;</span>
832
833
  <span class="cline-any cline-neutral">&nbsp;</span>
833
- <span class="cline-any cline-yes">63x</span>
834
- <span class="cline-any cline-yes">45x</span>
835
- <span class="cline-any cline-yes">42x</span>
834
+ <span class="cline-any cline-yes">70x</span>
835
+ <span class="cline-any cline-yes">49x</span>
836
+ <span class="cline-any cline-yes">46x</span>
836
837
  <span class="cline-any cline-neutral">&nbsp;</span>
837
- <span class="cline-any cline-yes">42x</span>
838
+ <span class="cline-any cline-yes">46x</span>
838
839
  <span class="cline-any cline-no">&nbsp;</span>
839
840
  <span class="cline-any cline-no">&nbsp;</span>
840
841
  <span class="cline-any cline-no">&nbsp;</span>
@@ -852,46 +853,46 @@
852
853
  <span class="cline-any cline-neutral">&nbsp;</span>
853
854
  <span class="cline-any cline-neutral">&nbsp;</span>
854
855
  <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-yes">42x</span>
856
+ <span class="cline-any cline-yes">46x</span>
856
857
  <span class="cline-any cline-neutral">&nbsp;</span>
857
858
  <span class="cline-any cline-neutral">&nbsp;</span>
858
859
  <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-yes">650x</span>
860
+ <span class="cline-any cline-yes">828x</span>
860
861
  <span class="cline-any cline-no">&nbsp;</span>
861
862
  <span class="cline-any cline-neutral">&nbsp;</span>
862
863
  <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-yes">650x</span>
864
+ <span class="cline-any cline-yes">828x</span>
864
865
  <span class="cline-any cline-neutral">&nbsp;</span>
865
866
  <span class="cline-any cline-neutral">&nbsp;</span>
866
867
  <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-yes">157x</span>
868
- <span class="cline-any cline-yes">7x</span>
868
+ <span class="cline-any cline-yes">200x</span>
869
+ <span class="cline-any cline-yes">9x</span>
869
870
  <span class="cline-any cline-neutral">&nbsp;</span>
870
871
  <span class="cline-any cline-neutral">&nbsp;</span>
871
- <span class="cline-any cline-yes">150x</span>
872
+ <span class="cline-any cline-yes">191x</span>
872
873
  <span class="cline-any cline-neutral">&nbsp;</span>
873
874
  <span class="cline-any cline-neutral">&nbsp;</span>
874
875
  <span class="cline-any cline-neutral">&nbsp;</span>
875
- <span class="cline-any cline-yes">169x</span>
876
- <span class="cline-any cline-yes">5x</span>
876
+ <span class="cline-any cline-yes">215x</span>
877
+ <span class="cline-any cline-yes">6x</span>
877
878
  <span class="cline-any cline-neutral">&nbsp;</span>
878
879
  <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-yes">164x</span>
880
+ <span class="cline-any cline-yes">209x</span>
880
881
  <span class="cline-any cline-neutral">&nbsp;</span>
881
882
  <span class="cline-any cline-neutral">&nbsp;</span>
882
883
  <span class="cline-any cline-neutral">&nbsp;</span>
883
884
  <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-yes">164x</span>
885
- <span class="cline-any cline-yes">12x</span>
885
+ <span class="cline-any cline-yes">209x</span>
886
+ <span class="cline-any cline-yes">15x</span>
886
887
  <span class="cline-any cline-neutral">&nbsp;</span>
887
888
  <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-yes">24x</span>
889
+ <span class="cline-any cline-yes">30x</span>
889
890
  <span class="cline-any cline-neutral">&nbsp;</span>
890
891
  <span class="cline-any cline-neutral">&nbsp;</span>
891
892
  <span class="cline-any cline-neutral">&nbsp;</span>
892
893
  <span class="cline-any cline-neutral">&nbsp;</span>
893
894
  <span class="cline-any cline-neutral">&nbsp;</span>
894
- <span class="cline-any cline-yes">152x</span>
895
+ <span class="cline-any cline-yes">194x</span>
895
896
  <span class="cline-any cline-neutral">&nbsp;</span>
896
897
  <span class="cline-any cline-neutral">&nbsp;</span>
897
898
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -899,54 +900,54 @@
899
900
  <span class="cline-any cline-neutral">&nbsp;</span>
900
901
  <span class="cline-any cline-neutral">&nbsp;</span>
901
902
  <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-yes">300x</span>
903
- <span class="cline-any cline-yes">300x</span>
903
+ <span class="cline-any cline-yes">382x</span>
904
+ <span class="cline-any cline-yes">382x</span>
904
905
  <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-yes">300x</span>
906
- <span class="cline-any cline-yes">8x</span>
906
+ <span class="cline-any cline-yes">382x</span>
907
+ <span class="cline-any cline-yes">10x</span>
907
908
  <span class="cline-any cline-neutral">&nbsp;</span>
908
909
  <span class="cline-any cline-neutral">&nbsp;</span>
909
- <span class="cline-any cline-yes">292x</span>
910
+ <span class="cline-any cline-yes">372x</span>
910
911
  <span class="cline-any cline-neutral">&nbsp;</span>
911
- <span class="cline-any cline-yes">292x</span>
912
- <span class="cline-any cline-yes">236x</span>
912
+ <span class="cline-any cline-yes">372x</span>
913
+ <span class="cline-any cline-yes">302x</span>
913
914
  <span class="cline-any cline-neutral">&nbsp;</span>
914
915
  <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-yes">56x</span>
916
- <span class="cline-any cline-yes">56x</span>
917
- <span class="cline-any cline-yes">56x</span>
918
- <span class="cline-any cline-yes">56x</span>
916
+ <span class="cline-any cline-yes">70x</span>
917
+ <span class="cline-any cline-yes">70x</span>
918
+ <span class="cline-any cline-yes">70x</span>
919
+ <span class="cline-any cline-yes">70x</span>
919
920
  <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-yes">56x</span>
921
+ <span class="cline-any cline-yes">70x</span>
921
922
  <span class="cline-any cline-no">&nbsp;</span>
922
923
  <span class="cline-any cline-neutral">&nbsp;</span>
923
924
  <span class="cline-any cline-neutral">&nbsp;</span>
924
- <span class="cline-any cline-yes">56x</span>
925
+ <span class="cline-any cline-yes">70x</span>
925
926
  <span class="cline-any cline-no">&nbsp;</span>
926
927
  <span class="cline-any cline-neutral">&nbsp;</span>
927
928
  <span class="cline-any cline-neutral">&nbsp;</span>
928
- <span class="cline-any cline-yes">56x</span>
929
+ <span class="cline-any cline-yes">70x</span>
929
930
  <span class="cline-any cline-neutral">&nbsp;</span>
930
- <span class="cline-any cline-yes">56x</span>
931
+ <span class="cline-any cline-yes">70x</span>
931
932
  <span class="cline-any cline-neutral">&nbsp;</span>
932
- <span class="cline-any cline-yes">56x</span>
933
- <span class="cline-any cline-yes">42x</span>
934
- <span class="cline-any cline-yes">42x</span>
933
+ <span class="cline-any cline-yes">70x</span>
934
+ <span class="cline-any cline-yes">54x</span>
935
+ <span class="cline-any cline-yes">54x</span>
935
936
  <span class="cline-any cline-neutral">&nbsp;</span>
936
937
  <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-yes">14x</span>
938
+ <span class="cline-any cline-yes">16x</span>
938
939
  <span class="cline-any cline-yes">2x</span>
939
940
  <span class="cline-any cline-yes">2x</span>
940
941
  <span class="cline-any cline-neutral">&nbsp;</span>
941
942
  <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-yes">12x</span>
943
- <span class="cline-any cline-yes">12x</span>
943
+ <span class="cline-any cline-yes">14x</span>
944
+ <span class="cline-any cline-yes">14x</span>
944
945
  <span class="cline-any cline-neutral">&nbsp;</span>
945
946
  <span class="cline-any cline-neutral">&nbsp;</span>
946
947
  <span class="cline-any cline-no">&nbsp;</span>
947
948
  <span class="cline-any cline-neutral">&nbsp;</span>
948
949
  <span class="cline-any cline-neutral">&nbsp;</span>
949
- <span class="cline-any cline-yes">44x</span>
950
+ <span class="cline-any cline-yes">56x</span>
950
951
  <span class="cline-any cline-neutral">&nbsp;</span>
951
952
  <span class="cline-any cline-neutral">&nbsp;</span>
952
953
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -954,7 +955,7 @@
954
955
  <span class="cline-any cline-neutral">&nbsp;</span>
955
956
  <span class="cline-any cline-neutral">&nbsp;</span>
956
957
  <span class="cline-any cline-neutral">&nbsp;</span>
957
- <span class="cline-any cline-yes">128x</span>
958
+ <span class="cline-any cline-yes">164x</span>
958
959
  <span class="cline-any cline-neutral">&nbsp;</span>
959
960
  <span class="cline-any cline-neutral">&nbsp;</span>
960
961
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -973,65 +974,65 @@
973
974
  <span class="cline-any cline-neutral">&nbsp;</span>
974
975
  <span class="cline-any cline-neutral">&nbsp;</span>
975
976
  <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-yes">128x</span>
977
- <span class="cline-any cline-yes">7x</span>
978
- <span class="cline-any cline-yes">14x</span>
977
+ <span class="cline-any cline-yes">164x</span>
978
+ <span class="cline-any cline-yes">9x</span>
979
+ <span class="cline-any cline-yes">18x</span>
979
980
  <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-yes">7x</span>
981
+ <span class="cline-any cline-yes">9x</span>
981
982
  <span class="cline-any cline-neutral">&nbsp;</span>
982
983
  <span class="cline-any cline-neutral">&nbsp;</span>
983
- <span class="cline-any cline-yes">121x</span>
984
+ <span class="cline-any cline-yes">155x</span>
984
985
  <span class="cline-any cline-no">&nbsp;</span>
985
986
  <span class="cline-any cline-neutral">&nbsp;</span>
986
987
  <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-yes">121x</span>
988
- <span class="cline-any cline-yes">63x</span>
988
+ <span class="cline-any cline-yes">155x</span>
989
+ <span class="cline-any cline-yes">70x</span>
989
990
  <span class="cline-any cline-neutral">&nbsp;</span>
990
991
  <span class="cline-any cline-neutral">&nbsp;</span>
991
- <span class="cline-any cline-yes">94x</span>
992
- <span class="cline-any cline-yes">94x</span>
992
+ <span class="cline-any cline-yes">125x</span>
993
+ <span class="cline-any cline-yes">125x</span>
993
994
  <span class="cline-any cline-no">&nbsp;</span>
994
995
  <span class="cline-any cline-neutral">&nbsp;</span>
995
996
  <span class="cline-any cline-neutral">&nbsp;</span>
996
- <span class="cline-any cline-yes">94x</span>
997
+ <span class="cline-any cline-yes">125x</span>
997
998
  <span class="cline-any cline-no">&nbsp;</span>
998
999
  <span class="cline-any cline-neutral">&nbsp;</span>
999
1000
  <span class="cline-any cline-neutral">&nbsp;</span>
1000
- <span class="cline-any cline-yes">94x</span>
1001
- <span class="cline-any cline-yes">86x</span>
1002
- <span class="cline-any cline-yes">6x</span>
1001
+ <span class="cline-any cline-yes">125x</span>
1002
+ <span class="cline-any cline-yes">115x</span>
1003
+ <span class="cline-any cline-yes">7x</span>
1003
1004
  <span class="cline-any cline-neutral">&nbsp;</span>
1004
1005
  <span class="cline-any cline-neutral">&nbsp;</span>
1005
- <span class="cline-any cline-yes">80x</span>
1006
- <span class="cline-any cline-yes">80x</span>
1006
+ <span class="cline-any cline-yes">108x</span>
1007
+ <span class="cline-any cline-yes">108x</span>
1007
1008
  <span class="cline-any cline-neutral">&nbsp;</span>
1008
- <span class="cline-any cline-yes">80x</span>
1009
- <span class="cline-any cline-yes">2x</span>
1010
- <span class="cline-any cline-yes">2x</span>
1009
+ <span class="cline-any cline-yes">108x</span>
1010
+ <span class="cline-any cline-yes">3x</span>
1011
+ <span class="cline-any cline-yes">3x</span>
1011
1012
  <span class="cline-any cline-neutral">&nbsp;</span>
1012
1013
  <span class="cline-any cline-no">&nbsp;</span>
1013
1014
  <span class="cline-any cline-neutral">&nbsp;</span>
1014
1015
  <span class="cline-any cline-neutral">&nbsp;</span>
1015
1016
  <span class="cline-any cline-neutral">&nbsp;</span>
1016
- <span class="cline-any cline-yes">80x</span>
1017
+ <span class="cline-any cline-yes">108x</span>
1017
1018
  <span class="cline-any cline-no">&nbsp;</span>
1018
1019
  <span class="cline-any cline-neutral">&nbsp;</span>
1019
1020
  <span class="cline-any cline-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-yes">80x</span>
1021
+ <span class="cline-any cline-yes">108x</span>
1021
1022
  <span class="cline-any cline-neutral">&nbsp;</span>
1022
1023
  <span class="cline-any cline-neutral">&nbsp;</span>
1023
- <span class="cline-any cline-yes">8x</span>
1024
- <span class="cline-any cline-yes">8x</span>
1025
- <span class="cline-any cline-yes">4x</span>
1024
+ <span class="cline-any cline-yes">10x</span>
1025
+ <span class="cline-any cline-yes">10x</span>
1026
+ <span class="cline-any cline-yes">5x</span>
1026
1027
  <span class="cline-any cline-neutral">&nbsp;</span>
1027
1028
  <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-yes">4x</span>
1029
+ <span class="cline-any cline-yes">5x</span>
1029
1030
  <span class="cline-any cline-no">&nbsp;</span>
1030
1031
  <span class="cline-any cline-neutral">&nbsp;</span>
1031
1032
  <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-yes">4x</span>
1033
- <span class="cline-any cline-yes">4x</span>
1034
- <span class="cline-any cline-yes">4x</span>
1033
+ <span class="cline-any cline-yes">5x</span>
1034
+ <span class="cline-any cline-yes">5x</span>
1035
+ <span class="cline-any cline-yes">5x</span>
1035
1036
  <span class="cline-any cline-neutral">&nbsp;</span>
1036
1037
  <span class="cline-any cline-neutral">&nbsp;</span>
1037
1038
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1120,25 +1121,25 @@
1120
1121
  <span class="cline-any cline-neutral">&nbsp;</span>
1121
1122
  <span class="cline-any cline-neutral">&nbsp;</span>
1122
1123
  <span class="cline-any cline-neutral">&nbsp;</span>
1123
- <span class="cline-any cline-yes">121x</span>
1124
- <span class="cline-any cline-yes">7x</span>
1124
+ <span class="cline-any cline-yes">155x</span>
1125
+ <span class="cline-any cline-yes">9x</span>
1125
1126
  <span class="cline-any cline-neutral">&nbsp;</span>
1126
1127
  <span class="cline-any cline-neutral">&nbsp;</span>
1127
1128
  <span class="cline-any cline-neutral">&nbsp;</span>
1128
1129
  <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-yes">114x</span>
1130
+ <span class="cline-any cline-yes">146x</span>
1130
1131
  <span class="cline-any cline-neutral">&nbsp;</span>
1131
1132
  <span class="cline-any cline-neutral">&nbsp;</span>
1132
1133
  <span class="cline-any cline-neutral">&nbsp;</span>
1133
1134
  <span class="cline-any cline-neutral">&nbsp;</span>
1134
1135
  <span class="cline-any cline-neutral">&nbsp;</span>
1135
1136
  <span class="cline-any cline-neutral">&nbsp;</span>
1136
- <span class="cline-any cline-yes">12x</span>
1137
+ <span class="cline-any cline-yes">15x</span>
1137
1138
  <span class="cline-any cline-no">&nbsp;</span>
1138
1139
  <span class="cline-any cline-neutral">&nbsp;</span>
1139
1140
  <span class="cline-any cline-neutral">&nbsp;</span>
1140
- <span class="cline-any cline-yes">12x</span>
1141
- <span class="cline-any cline-yes">12x</span>
1141
+ <span class="cline-any cline-yes">15x</span>
1142
+ <span class="cline-any cline-yes">15x</span>
1142
1143
  <span class="cline-any cline-no">&nbsp;</span>
1143
1144
  <span class="cline-any cline-neutral">&nbsp;</span>
1144
1145
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1163,18 +1164,18 @@
1163
1164
  <span class="cline-any cline-neutral">&nbsp;</span>
1164
1165
  <span class="cline-any cline-neutral">&nbsp;</span>
1165
1166
  <span class="cline-any cline-neutral">&nbsp;</span>
1166
- <span class="cline-any cline-yes">12x</span>
1167
+ <span class="cline-any cline-yes">15x</span>
1167
1168
  <span class="cline-any cline-no">&nbsp;</span>
1168
1169
  <span class="cline-any cline-neutral">&nbsp;</span>
1169
1170
  <span class="cline-any cline-neutral">&nbsp;</span>
1171
+ <span class="cline-any cline-yes">15x</span>
1170
1172
  <span class="cline-any cline-yes">12x</span>
1171
- <span class="cline-any cline-yes">10x</span>
1172
1173
  <span class="cline-any cline-neutral">&nbsp;</span>
1173
1174
  <span class="cline-any cline-neutral">&nbsp;</span>
1174
1175
  <span class="cline-any cline-neutral">&nbsp;</span>
1175
1176
  <span class="cline-any cline-neutral">&nbsp;</span>
1176
1177
  <span class="cline-any cline-neutral">&nbsp;</span>
1177
- <span class="cline-any cline-yes">2x</span>
1178
+ <span class="cline-any cline-yes">3x</span>
1178
1179
  <span class="cline-any cline-neutral">&nbsp;</span>
1179
1180
  <span class="cline-any cline-neutral">&nbsp;</span>
1180
1181
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1200,19 +1201,19 @@
1200
1201
  <span class="cline-any cline-neutral">&nbsp;</span>
1201
1202
  <span class="cline-any cline-neutral">&nbsp;</span>
1202
1203
  <span class="cline-any cline-neutral">&nbsp;</span>
1203
- <span class="cline-any cline-yes">150x</span>
1204
- <span class="cline-any cline-yes">150x</span>
1205
- <span class="cline-any cline-yes">5x</span>
1204
+ <span class="cline-any cline-yes">191x</span>
1205
+ <span class="cline-any cline-yes">191x</span>
1206
+ <span class="cline-any cline-yes">6x</span>
1206
1207
  <span class="cline-any cline-neutral">&nbsp;</span>
1207
1208
  <span class="cline-any cline-neutral">&nbsp;</span>
1208
- <span class="cline-any cline-yes">145x</span>
1209
- <span class="cline-any cline-yes">145x</span>
1209
+ <span class="cline-any cline-yes">185x</span>
1210
+ <span class="cline-any cline-yes">185x</span>
1210
1211
  <span class="cline-any cline-neutral">&nbsp;</span>
1211
- <span class="cline-any cline-yes">145x</span>
1212
- <span class="cline-any cline-yes">4x</span>
1212
+ <span class="cline-any cline-yes">185x</span>
1213
+ <span class="cline-any cline-yes">5x</span>
1213
1214
  <span class="cline-any cline-neutral">&nbsp;</span>
1214
1215
  <span class="cline-any cline-neutral">&nbsp;</span>
1215
- <span class="cline-any cline-yes">141x</span>
1216
+ <span class="cline-any cline-yes">180x</span>
1216
1217
  <span class="cline-any cline-no">&nbsp;</span>
1217
1218
  <span class="cline-any cline-neutral">&nbsp;</span>
1218
1219
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1220,9 +1221,9 @@
1220
1221
  <span class="cline-any cline-no">&nbsp;</span>
1221
1222
  <span class="cline-any cline-neutral">&nbsp;</span>
1222
1223
  <span class="cline-any cline-neutral">&nbsp;</span>
1223
- <span class="cline-any cline-yes">141x</span>
1224
+ <span class="cline-any cline-yes">180x</span>
1224
1225
  <span class="cline-any cline-neutral">&nbsp;</span>
1225
- <span class="cline-any cline-yes">4x</span>
1226
+ <span class="cline-any cline-yes">5x</span>
1226
1227
  <span class="cline-any cline-neutral">&nbsp;</span>
1227
1228
  <span class="cline-any cline-yes">1x</span>
1228
1229
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1231,17 +1232,17 @@
1231
1232
  <span class="cline-any cline-yes">1x</span>
1232
1233
  <span class="cline-any cline-neutral">&nbsp;</span>
1233
1234
  <span class="cline-any cline-neutral">&nbsp;</span>
1234
- <span class="cline-any cline-yes">140x</span>
1235
+ <span class="cline-any cline-yes">179x</span>
1235
1236
  <span class="cline-any cline-neutral">&nbsp;</span>
1236
- <span class="cline-any cline-yes">6x</span>
1237
+ <span class="cline-any cline-yes">7x</span>
1237
1238
  <span class="cline-any cline-neutral">&nbsp;</span>
1238
1239
  <span class="cline-any cline-yes">1x</span>
1239
1240
  <span class="cline-any cline-yes">1x</span>
1240
1241
  <span class="cline-any cline-neutral">&nbsp;</span>
1241
1242
  <span class="cline-any cline-neutral">&nbsp;</span>
1242
- <span class="cline-any cline-yes">139x</span>
1243
+ <span class="cline-any cline-yes">178x</span>
1243
1244
  <span class="cline-any cline-neutral">&nbsp;</span>
1244
- <span class="cline-any cline-yes">6x</span>
1245
+ <span class="cline-any cline-yes">7x</span>
1245
1246
  <span class="cline-any cline-neutral">&nbsp;</span>
1246
1247
  <span class="cline-any cline-no">&nbsp;</span>
1247
1248
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1250,9 +1251,9 @@
1250
1251
  <span class="cline-any cline-no">&nbsp;</span>
1251
1252
  <span class="cline-any cline-neutral">&nbsp;</span>
1252
1253
  <span class="cline-any cline-neutral">&nbsp;</span>
1253
- <span class="cline-any cline-yes">139x</span>
1254
+ <span class="cline-any cline-yes">178x</span>
1254
1255
  <span class="cline-any cline-neutral">&nbsp;</span>
1255
- <span class="cline-any cline-yes">6x</span>
1256
+ <span class="cline-any cline-yes">8x</span>
1256
1257
  <span class="cline-any cline-neutral">&nbsp;</span>
1257
1258
  <span class="cline-any cline-no">&nbsp;</span>
1258
1259
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1261,8 +1262,8 @@
1261
1262
  <span class="cline-any cline-no">&nbsp;</span>
1262
1263
  <span class="cline-any cline-neutral">&nbsp;</span>
1263
1264
  <span class="cline-any cline-neutral">&nbsp;</span>
1264
- <span class="cline-any cline-yes">139x</span>
1265
- <span class="cline-any cline-yes">8x</span>
1265
+ <span class="cline-any cline-yes">178x</span>
1266
+ <span class="cline-any cline-yes">10x</span>
1266
1267
  <span class="cline-any cline-neutral">&nbsp;</span>
1267
1268
  <span class="cline-any cline-neutral">&nbsp;</span>
1268
1269
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1274,12 +1275,12 @@
1274
1275
  <span class="cline-any cline-no">&nbsp;</span>
1275
1276
  <span class="cline-any cline-neutral">&nbsp;</span>
1276
1277
  <span class="cline-any cline-neutral">&nbsp;</span>
1277
- <span class="cline-any cline-yes">8x</span>
1278
+ <span class="cline-any cline-yes">10x</span>
1278
1279
  <span class="cline-any cline-yes">1x</span>
1279
1280
  <span class="cline-any cline-neutral">&nbsp;</span>
1280
1281
  <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-yes">7x</span>
1282
- <span class="cline-any cline-yes">13x</span>
1282
+ <span class="cline-any cline-yes">9x</span>
1283
+ <span class="cline-any cline-yes">16x</span>
1283
1284
  <span class="cline-any cline-yes">2x</span>
1284
1285
  <span class="cline-any cline-neutral">&nbsp;</span>
1285
1286
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1288,35 +1289,35 @@
1288
1289
  <span class="cline-any cline-neutral">&nbsp;</span>
1289
1290
  <span class="cline-any cline-neutral">&nbsp;</span>
1290
1291
  <span class="cline-any cline-neutral">&nbsp;</span>
1291
- <span class="cline-any cline-yes">7x</span>
1292
+ <span class="cline-any cline-yes">9x</span>
1292
1293
  <span class="cline-any cline-neutral">&nbsp;</span>
1293
1294
  <span class="cline-any cline-neutral">&nbsp;</span>
1294
- <span class="cline-any cline-yes">131x</span>
1295
- <span class="cline-any cline-yes">12x</span>
1296
- <span class="cline-any cline-yes">12x</span>
1295
+ <span class="cline-any cline-yes">168x</span>
1296
+ <span class="cline-any cline-yes">15x</span>
1297
+ <span class="cline-any cline-yes">15x</span>
1297
1298
  <span class="cline-any cline-no">&nbsp;</span>
1298
1299
  <span class="cline-any cline-no">&nbsp;</span>
1299
1300
  <span class="cline-any cline-neutral">&nbsp;</span>
1300
1301
  <span class="cline-any cline-neutral">&nbsp;</span>
1301
- <span class="cline-any cline-yes">12x</span>
1302
- <span class="cline-any cline-yes">12x</span>
1302
+ <span class="cline-any cline-yes">15x</span>
1303
+ <span class="cline-any cline-yes">15x</span>
1303
1304
  <span class="cline-any cline-no">&nbsp;</span>
1304
1305
  <span class="cline-any cline-no">&nbsp;</span>
1305
1306
  <span class="cline-any cline-neutral">&nbsp;</span>
1306
1307
  <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-yes">12x</span>
1308
+ <span class="cline-any cline-yes">15x</span>
1308
1309
  <span class="cline-any cline-yes">4x</span>
1309
1310
  <span class="cline-any cline-neutral">&nbsp;</span>
1310
1311
  <span class="cline-any cline-neutral">&nbsp;</span>
1311
- <span class="cline-any cline-yes">12x</span>
1312
+ <span class="cline-any cline-yes">15x</span>
1312
1313
  <span class="cline-any cline-neutral">&nbsp;</span>
1313
1314
  <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-yes">119x</span>
1315
- <span class="cline-any cline-yes">99x</span>
1316
- <span class="cline-any cline-yes">3x</span>
1315
+ <span class="cline-any cline-yes">153x</span>
1316
+ <span class="cline-any cline-yes">128x</span>
1317
+ <span class="cline-any cline-yes">4x</span>
1317
1318
  <span class="cline-any cline-neutral">&nbsp;</span>
1318
1319
  <span class="cline-any cline-neutral">&nbsp;</span>
1319
- <span class="cline-any cline-yes">96x</span>
1320
+ <span class="cline-any cline-yes">124x</span>
1320
1321
  <span class="cline-any cline-yes">6x</span>
1321
1322
  <span class="cline-any cline-neutral">&nbsp;</span>
1322
1323
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1327,13 +1328,12 @@
1327
1328
  <span class="cline-any cline-neutral">&nbsp;</span>
1328
1329
  <span class="cline-any cline-neutral">&nbsp;</span>
1329
1330
  <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-yes">150x</span>
1331
+ <span class="cline-any cline-yes">153x</span>
1331
1332
  <span class="cline-any cline-neutral">&nbsp;</span>
1332
1333
  <span class="cline-any cline-neutral">&nbsp;</span>
1333
- <span class="cline-any cline-yes">150x</span>
1334
- <span class="cline-any cline-yes">5x</span>
1335
- <span class="cline-any cline-neutral">&nbsp;</span>
1336
1334
  <span class="cline-any cline-neutral">&nbsp;</span>
1335
+ <span class="cline-any cline-yes">191x</span>
1336
+ <span class="cline-any cline-yes">6x</span>
1337
1337
  <span class="cline-any cline-neutral">&nbsp;</span>
1338
1338
  <span class="cline-any cline-neutral">&nbsp;</span>
1339
1339
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1352,11 +1352,11 @@
1352
1352
  <span class="cline-any cline-neutral">&nbsp;</span>
1353
1353
  <span class="cline-any cline-neutral">&nbsp;</span>
1354
1354
  <span class="cline-any cline-neutral">&nbsp;</span>
1355
- <span class="cline-any cline-yes">5x</span>
1355
+ <span class="cline-any cline-yes">6x</span>
1356
1356
  <span class="cline-any cline-no">&nbsp;</span>
1357
1357
  <span class="cline-any cline-neutral">&nbsp;</span>
1358
1358
  <span class="cline-any cline-neutral">&nbsp;</span>
1359
- <span class="cline-any cline-yes">5x</span>
1359
+ <span class="cline-any cline-yes">6x</span>
1360
1360
  <span class="cline-any cline-neutral">&nbsp;</span>
1361
1361
  <span class="cline-any cline-neutral">&nbsp;</span>
1362
1362
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1365,7 +1365,7 @@
1365
1365
  <span class="cline-any cline-neutral">&nbsp;</span>
1366
1366
  <span class="cline-any cline-neutral">&nbsp;</span>
1367
1367
  <span class="cline-any cline-neutral">&nbsp;</span>
1368
- <span class="cline-any cline-yes">150x</span>
1368
+ <span class="cline-any cline-yes">191x</span>
1369
1369
  <span class="cline-any cline-neutral">&nbsp;</span>
1370
1370
  <span class="cline-any cline-neutral">&nbsp;</span>
1371
1371
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1382,22 +1382,22 @@
1382
1382
  <span class="cline-any cline-neutral">&nbsp;</span>
1383
1383
  <span class="cline-any cline-neutral">&nbsp;</span>
1384
1384
  <span class="cline-any cline-neutral">&nbsp;</span>
1385
- <span class="cline-any cline-yes">150x</span>
1385
+ <span class="cline-any cline-yes">191x</span>
1386
1386
  <span class="cline-any cline-no">&nbsp;</span>
1387
1387
  <span class="cline-any cline-neutral">&nbsp;</span>
1388
1388
  <span class="cline-any cline-neutral">&nbsp;</span>
1389
- <span class="cline-any cline-yes">150x</span>
1389
+ <span class="cline-any cline-yes">191x</span>
1390
1390
  <span class="cline-any cline-neutral">&nbsp;</span>
1391
1391
  <span class="cline-any cline-neutral">&nbsp;</span>
1392
1392
  <span class="cline-any cline-neutral">&nbsp;</span>
1393
1393
  <span class="cline-any cline-no">&nbsp;</span>
1394
1394
  <span class="cline-any cline-neutral">&nbsp;</span>
1395
1395
  <span class="cline-any cline-neutral">&nbsp;</span>
1396
- <span class="cline-any cline-yes">150x</span>
1397
- <span class="cline-any cline-yes">6x</span>
1396
+ <span class="cline-any cline-yes">191x</span>
1397
+ <span class="cline-any cline-yes">8x</span>
1398
1398
  <span class="cline-any cline-no">&nbsp;</span>
1399
- <span class="cline-any cline-yes">6x</span>
1400
- <span class="cline-any cline-yes">6x</span>
1399
+ <span class="cline-any cline-yes">8x</span>
1400
+ <span class="cline-any cline-yes">8x</span>
1401
1401
  <span class="cline-any cline-yes">1x</span>
1402
1402
  <span class="cline-any cline-neutral">&nbsp;</span>
1403
1403
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1415,11 +1415,11 @@
1415
1415
  <span class="cline-any cline-neutral">&nbsp;</span>
1416
1416
  <span class="cline-any cline-neutral">&nbsp;</span>
1417
1417
  <span class="cline-any cline-neutral">&nbsp;</span>
1418
- <span class="cline-any cline-yes">150x</span>
1418
+ <span class="cline-any cline-yes">191x</span>
1419
1419
  <span class="cline-any cline-yes">1x</span>
1420
1420
  <span class="cline-any cline-neutral">&nbsp;</span>
1421
1421
  <span class="cline-any cline-neutral">&nbsp;</span>
1422
- <span class="cline-any cline-yes">150x</span>
1422
+ <span class="cline-any cline-yes">191x</span>
1423
1423
  <span class="cline-any cline-neutral">&nbsp;</span>
1424
1424
  <span class="cline-any cline-neutral">&nbsp;</span>
1425
1425
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1427,17 +1427,17 @@
1427
1427
  <span class="cline-any cline-no">&nbsp;</span>
1428
1428
  <span class="cline-any cline-neutral">&nbsp;</span>
1429
1429
  <span class="cline-any cline-neutral">&nbsp;</span>
1430
- <span class="cline-any cline-yes">150x</span>
1430
+ <span class="cline-any cline-yes">191x</span>
1431
1431
  <span class="cline-any cline-yes">1x</span>
1432
1432
  <span class="cline-any cline-yes">1x</span>
1433
1433
  <span class="cline-any cline-neutral">&nbsp;</span>
1434
1434
  <span class="cline-any cline-neutral">&nbsp;</span>
1435
1435
  <span class="cline-any cline-neutral">&nbsp;</span>
1436
- <span class="cline-any cline-yes">150x</span>
1437
- <span class="cline-any cline-yes">4x</span>
1436
+ <span class="cline-any cline-yes">191x</span>
1437
+ <span class="cline-any cline-yes">5x</span>
1438
1438
  <span class="cline-any cline-no">&nbsp;</span>
1439
1439
  <span class="cline-any cline-neutral">&nbsp;</span>
1440
- <span class="cline-any cline-yes">146x</span>
1440
+ <span class="cline-any cline-yes">186x</span>
1441
1441
  <span class="cline-any cline-yes">1x</span>
1442
1442
  <span class="cline-any cline-neutral">&nbsp;</span>
1443
1443
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1445,11 +1445,11 @@
1445
1445
  <span class="cline-any cline-neutral">&nbsp;</span>
1446
1446
  <span class="cline-any cline-neutral">&nbsp;</span>
1447
1447
  <span class="cline-any cline-neutral">&nbsp;</span>
1448
- <span class="cline-any cline-yes">150x</span>
1448
+ <span class="cline-any cline-yes">191x</span>
1449
1449
  <span class="cline-any cline-yes">1x</span>
1450
1450
  <span class="cline-any cline-neutral">&nbsp;</span>
1451
1451
  <span class="cline-any cline-neutral">&nbsp;</span>
1452
- <span class="cline-any cline-yes">150x</span>
1452
+ <span class="cline-any cline-yes">191x</span>
1453
1453
  <span class="cline-any cline-neutral">&nbsp;</span>
1454
1454
  <span class="cline-any cline-neutral">&nbsp;</span>
1455
1455
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1462,37 +1462,38 @@
1462
1462
  <span class="cline-any cline-neutral">&nbsp;</span>
1463
1463
  <span class="cline-any cline-neutral">&nbsp;</span>
1464
1464
  <span class="cline-any cline-neutral">&nbsp;</span>
1465
- <span class="cline-any cline-yes">150x</span>
1465
+ <span class="cline-any cline-yes">153x</span>
1466
1466
  <span class="cline-any cline-neutral">&nbsp;</span>
1467
1467
  <span class="cline-any cline-neutral">&nbsp;</span>
1468
- <span class="cline-any cline-yes">33x</span>
1468
+ <span class="cline-any cline-yes">10x</span>
1469
1469
  <span class="cline-any cline-neutral">&nbsp;</span>
1470
1470
  <span class="cline-any cline-neutral">&nbsp;</span>
1471
1471
  <span class="cline-any cline-neutral">&nbsp;</span>
1472
1472
  <span class="cline-any cline-neutral">&nbsp;</span>
1473
- <span class="cline-any cline-yes">8x</span>
1473
+ <span class="cline-any cline-yes">5x</span>
1474
1474
  <span class="cline-any cline-neutral">&nbsp;</span>
1475
1475
  <span class="cline-any cline-neutral">&nbsp;</span>
1476
1476
  <span class="cline-any cline-neutral">&nbsp;</span>
1477
1477
  <span class="cline-any cline-neutral">&nbsp;</span>
1478
- <span class="cline-any cline-yes">5x</span>
1478
+ <span class="cline-any cline-yes">4x</span>
1479
1479
  <span class="cline-any cline-neutral">&nbsp;</span>
1480
1480
  <span class="cline-any cline-neutral">&nbsp;</span>
1481
1481
  <span class="cline-any cline-neutral">&nbsp;</span>
1482
1482
  <span class="cline-any cline-neutral">&nbsp;</span>
1483
- <span class="cline-any cline-yes">150x</span>
1484
- <span class="cline-any cline-yes">150x</span>
1483
+ <span class="cline-any cline-yes">153x</span>
1484
+ <span class="cline-any cline-yes">153x</span>
1485
1485
  <span class="cline-any cline-neutral">&nbsp;</span>
1486
- <span class="cline-any cline-yes">150x</span>
1486
+ <span class="cline-any cline-yes">153x</span>
1487
1487
  <span class="cline-any cline-neutral">&nbsp;</span>
1488
1488
  <span class="cline-any cline-neutral">&nbsp;</span>
1489
1489
  <span class="cline-any cline-neutral">&nbsp;</span>
1490
- <span class="cline-any cline-yes">150x</span>
1490
+ <span class="cline-any cline-yes">191x</span>
1491
1491
  <span class="cline-any cline-neutral">&nbsp;</span>
1492
1492
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { Attribute, AttributeProperty, Schema } from "@featurevisor/types";
1493
1493
  import { z } from "zod";
1494
1494
  &nbsp;
1495
1495
  import { ProjectConfig } from "../config";
1496
+ import { refineWithMessage } from "./zodHelpers";
1496
1497
  &nbsp;
1497
1498
  const commonOperators: [string, ...string[]] = ["equals", "notEquals"];
1498
1499
  const numericOperators = ["greaterThan", "greaterThanOrEquals", "lessThan", "lessThanOrEquals"];
@@ -2042,11 +2043,10 @@ export function getConditionsZodSchema(
2042
2043
  ) {
2043
2044
  const plainConditionZodSchema = z
2044
2045
  .object({
2045
- attribute: z.string().refine(
2046
+ attribute: refineWithMessage(
2047
+ z.string(),
2046
2048
  (value) =&gt; resolveAttributePath(value, attributesByKey, schemasByKey) !== null,
2047
- (value) =&gt; ({
2048
- message: `Unknown attribute "${value}"`,
2049
- }),
2049
+ (value) =&gt; `Unknown attribute "${value}"`,
2050
2050
  ),
2051
2051
  operator: z.enum([
2052
2052
  ...commonOperators,
@@ -2209,7 +2209,7 @@ function regexFlagsRequired(operator: string): boolean {
2209
2209
  <div class='footer quiet pad2 space-top1 center small'>
2210
2210
  Code coverage generated by
2211
2211
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2212
- at 2026-04-16T19:15:59.143Z
2212
+ at 2026-04-26T16:47:51.164Z
2213
2213
  </div>
2214
2214
  <script src="../prettify.js"></script>
2215
2215
  <script>