diff --git a/STATUS.md b/STATUS.md index a85d30dda..f3dcc6a6c 100644 --- a/STATUS.md +++ b/STATUS.md @@ -28,7 +28,7 @@ The `proofs` Haskell project provides an extended formal specification of our th The library is accompanied by a small demo application that shows an example test case for our proof for completeness, by creating a variation tree diff from two variation trees and re-projecting them. ## Claims -We claim the _Artifacts Available_ badge as we made our artefacts publicly available on [Github][ddgithub] and [Zenodo][ddzenodo]. +We claim the _Artifacts Available_ badge as we made our artifacts publicly available on [Github][ddgithub] and [Zenodo][ddzenodo]. We claim the _Artifacts Evaluated Reusable_ badge as we implemented DiffDetective as a reusable library (see above). Furthermore, both DiffDetective and our Haskell formalization serve as reference implementations if researchers or practitioners want to reimplement our theory in other programming languages. diff --git a/src/main/java/org/variantsync/diffdetective/analysis/AnalysisResult.java b/src/main/java/org/variantsync/diffdetective/analysis/AnalysisResult.java index 80c6d1f5a..548d5faf7 100644 --- a/src/main/java/org/variantsync/diffdetective/analysis/AnalysisResult.java +++ b/src/main/java/org/variantsync/diffdetective/analysis/AnalysisResult.java @@ -2,10 +2,10 @@ import org.variantsync.diffdetective.diff.difftree.serialize.DiffTreeSerializeDebugData; import org.variantsync.diffdetective.diff.result.DiffError; -import org.variantsync.diffdetective.metadata.ElementaryPatternCount; +import org.variantsync.diffdetective.metadata.EditClassCount; import org.variantsync.diffdetective.metadata.ExplainedFilterSummary; import org.variantsync.diffdetective.metadata.Metadata; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.functjonal.Functjonal; import org.variantsync.functjonal.category.InplaceMonoid; import org.variantsync.functjonal.category.InplaceSemigroup; @@ -55,7 +55,7 @@ public class AnalysisResult implements Metadata { a.max.set(CommitProcessTime.max(a.max, b.max)); a.debugData.append(b.debugData); a.filterHits.append(b.filterHits); - a.elementaryPatternCounts.append(b.elementaryPatternCounts); + a.editClassCounts.append(b.editClassCounts); MergeMap.putAllValues(a.customInfo, b.customInfo, Semigroup.assertEquals()); a.diffErrors.append(b.diffErrors); }; @@ -80,7 +80,7 @@ public class AnalysisResult implements Metadata { public final CommitProcessTime min, max; public final DiffTreeSerializeDebugData debugData; public ExplainedFilterSummary filterHits; - public ElementaryPatternCount elementaryPatternCounts; + public EditClassCount editClassCounts; private final LinkedHashMap customInfo = new LinkedHashMap<>(); private final MergeMap diffErrors = new MergeMap<>(new HashMap<>(), Integer::sum); @@ -152,7 +152,7 @@ public AnalysisResult( this.runtimeWithMultithreadingInSeconds = runtimeWithMultithreadingInSeconds; this.debugData = debugData; this.filterHits = filterHits; - this.elementaryPatternCounts = new ElementaryPatternCount(); + this.editClassCounts = new EditClassCount(); this.min = min; this.max = max; } @@ -189,7 +189,7 @@ public static AnalysisResult importFrom(final Path p, final Map filterHitsLines = new ArrayList<>(); - final List elementaryPatternCountsLines = new ArrayList<>(); + final List editClassCountsLines = new ArrayList<>(); try (BufferedReader input = Files.newBufferedReader(p)) { // examine each line of the metadata file separately @@ -229,13 +229,13 @@ public static AnalysisResult importFrom(final Path p, final Map pattern.getName().equals(finalKey))) { - elementaryPatternCountsLines.add(line); + if (ProposedEditClasses.All.stream().anyMatch(editClass -> editClass.getName().equals(finalKey))) { + editClassCountsLines.add(line); } else if (key.startsWith(ExplainedFilterSummary.FILTERED_MESSAGE_BEGIN)) { filterHitsLines.add(line); } else if (key.startsWith(ERROR_BEGIN)) { @@ -257,7 +257,7 @@ public static AnalysisResult importFrom(final Path p, final Map snapshot() { snap.putAll(customInfo); snap.putAll(debugData.snapshot()); snap.putAll(filterHits.snapshot()); - snap.putAll(elementaryPatternCounts.snapshot()); + snap.putAll(editClassCounts.snapshot()); snap.putAll(Functjonal.bimap(diffErrors, error -> ERROR_BEGIN + error + ERROR_END, Object::toString)); return snap; } diff --git a/src/main/java/org/variantsync/diffdetective/analysis/EditClassCount.java b/src/main/java/org/variantsync/diffdetective/analysis/EditClassCount.java new file mode 100644 index 000000000..a07a2f378 --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/analysis/EditClassCount.java @@ -0,0 +1,46 @@ +package org.variantsync.diffdetective.analysis; + +import org.variantsync.diffdetective.editclass.EditClass; +import org.variantsync.diffdetective.editclass.EditClassCatalogue; +import org.variantsync.diffdetective.util.CSV; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Gathers statistics about matching edit classes. + * @author Paul Bittner + */ +public class EditClassCount implements CSV { + private final EditClassCatalogue catalogue; + private final Map editClassCounts; + + /** + * Creates a new counter object for the given catalogue of edit classes. + * @param catalogue The catalogue whose edit classes to match and count. + */ + public EditClassCount(final EditClassCatalogue catalogue) { + this.catalogue = catalogue; + this.editClassCounts = new HashMap<>(); + catalogue.all().forEach(e -> editClassCounts.put(e, 0)); + } + + /** + * Increment the count for the given edit class. + * The given edit class is assumed to be part of this counts catalog. + * @see EditClassCount#EditClassCount(EditClassCatalogue) + * @param editClass The edit class whose count to increase by one. + */ + public void increment(final EditClass editClass) { + editClassCounts.computeIfPresent(editClass, (p, i) -> i + 1); + } + + @Override + public String toCSV(final String delimiter) { + return catalogue.all().stream() + .map(editClassCounts::get) + .map(Object::toString) + .collect(Collectors.joining(delimiter)); + } +} diff --git a/src/main/java/org/variantsync/diffdetective/analysis/ElementaryPatternCount.java b/src/main/java/org/variantsync/diffdetective/analysis/ElementaryPatternCount.java deleted file mode 100644 index ac8796d4f..000000000 --- a/src/main/java/org/variantsync/diffdetective/analysis/ElementaryPatternCount.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.variantsync.diffdetective.analysis; - -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPatternCatalogue; -import org.variantsync.diffdetective.util.CSV; - -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * Class to gather statistics about matching elementary edit patterns. - * @author Paul Bittner - */ -public class ElementaryPatternCount implements CSV { - private final ElementaryPatternCatalogue catalogue; - private final Map patterncounts; - - /** - * Creates a new counter object for the given catalogue of elementary edit patterns. - * @param catalogue The catalogue whose patterns to match and count. - */ - public ElementaryPatternCount(final ElementaryPatternCatalogue catalogue) { - this.catalogue = catalogue; - this.patterncounts = new HashMap<>(); - catalogue.all().forEach(e -> patterncounts.put(e, 0)); - } - - /** - * Increment the count for the given elementary pattern. - * The given pattern is assumed to be part of this counts catalog. - * @see ElementaryPatternCount#ElementaryPatternCount(ElementaryPatternCatalogue) - * @param pattern The pattern whose count to increase by one. - */ - public void increment(final ElementaryPattern pattern) { - patterncounts.computeIfPresent(pattern, (p, i) -> i + 1); - } - - @Override - public String toCSV(final String delimiter) { - return catalogue.all().stream() - .map(patterncounts::get) - .map(Object::toString) - .collect(Collectors.joining(delimiter)); - } -} diff --git a/src/main/java/org/variantsync/diffdetective/analysis/HistoryAnalysis.java b/src/main/java/org/variantsync/diffdetective/analysis/HistoryAnalysis.java index 4681795b7..3d44e79c3 100644 --- a/src/main/java/org/variantsync/diffdetective/analysis/HistoryAnalysis.java +++ b/src/main/java/org/variantsync/diffdetective/analysis/HistoryAnalysis.java @@ -23,7 +23,7 @@ import java.util.function.Consumer; /** - * An analyses that is performed for the entire commit histories of each given git repositoy. + * An analyses that is performed for the entire commit histories of each given git repository. * @param repositoriesToAnalyze The repositories whose commit history should be analyzed. * @param outputDir The directory to which any produced results should be written. * @param commitsToProcessPerThread Number of commits that should be processed by each single thread if multithreading is used. diff --git a/src/main/java/org/variantsync/diffdetective/analysis/PatchStatistics.java b/src/main/java/org/variantsync/diffdetective/analysis/PatchStatistics.java index 18d439134..7150da219 100644 --- a/src/main/java/org/variantsync/diffdetective/analysis/PatchStatistics.java +++ b/src/main/java/org/variantsync/diffdetective/analysis/PatchStatistics.java @@ -1,29 +1,29 @@ package org.variantsync.diffdetective.analysis; import org.variantsync.diffdetective.diff.PatchDiff; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPatternCatalogue; +import org.variantsync.diffdetective.editclass.EditClassCatalogue; import org.variantsync.diffdetective.util.CSV; /** * Statistics for processing a patch in a commit. * @param patchDiff The diff of the processed patch. - * @param elementaryPatternCount Count statistics for the elementary edit patterns matched to the edits in the patch. + * @param editClassCount Count statistics for the edit class matched to the edits in the patch. * @author Paul Bittner */ public record PatchStatistics( PatchDiff patchDiff, - ElementaryPatternCount elementaryPatternCount) implements CSV { + EditClassCount editClassCount) implements CSV { /** - * Creates empty patch statistics for the given catalogue of edit patterns. + * Creates empty patch statistics for the given catalogue of edit classes. * @param patch The patch to gather statistics for. - * @param catalogue A catalogue of elementary edit patterns which should be used for classifying edits. + * @param catalogue A catalogue of edit classes which should be used for classifying edits. */ - public PatchStatistics(final PatchDiff patch, final ElementaryPatternCatalogue catalogue) { - this(patch, new ElementaryPatternCount(catalogue)); + public PatchStatistics(final PatchDiff patch, final EditClassCatalogue catalogue) { + this(patch, new EditClassCount(catalogue)); } @Override public String toCSV(final String delimiter) { - return patchDiff.getCommitHash() + delimiter + patchDiff.getFileName() + delimiter + elementaryPatternCount.toCSV(delimiter); + return patchDiff.getCommitHash() + delimiter + patchDiff.getFileName() + delimiter + editClassCount.toCSV(delimiter); } } diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/CodeType.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/CodeType.java deleted file mode 100644 index b81233f70..000000000 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/CodeType.java +++ /dev/null @@ -1,89 +0,0 @@ -package org.variantsync.diffdetective.diff.difftree; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * The type of nodes in a {@link DiffTree}. - * Corresponds to the tau function from our paper. - */ -public enum CodeType { - // Mapping types - IF("if"), - ENDIF("endif"), - ELSE("else"), - ELIF("elif"), - - // Code types - CODE("code"), - - // Extra type for the root - ROOT("ROOT"); - - public final String name; - CodeType(String name) { - this.name = name; - } - - /** - * Returns true iff this code type represents a conditional feature annotation (i.e., if or elif). - */ - public boolean isConditionalMacro() { - return this == IF || this == ELIF; - } - - /** - * Returns true iff this code type represents a feature mapping. - */ - public boolean isMacro() { - return this != ROOT && this != CODE; - } - - final static Pattern annotationRegex = Pattern.compile("^[+-]?\\s*#\\s*(if|endif|else|elif)"); - - /** - * Parses the code type from a line taken from a text-based diff. - * @param line A line in a patch. - * @return The type of edit of line. - */ - public static CodeType ofDiffLine(String line) { - Matcher matcher = annotationRegex.matcher(line); - if (matcher.find()) { - String id = matcher.group(1); - if (id.equals(IF.name)) { - return IF; - } else if (id.equals(ENDIF.name)) { - return ENDIF; - } else if (id.equals(ELSE.name)) { - return ELSE; - } else if (id.equals(ELIF.name)) { - return ELIF; - } - } - - return CODE; - } - - /** - * Creates a CodeType from its value names. - * @see Enum#name() - * @param name a string that equals the name of one value of this enum (ignoring case) - * @return The CodeType that has the given name - */ - public static CodeType fromName(final String name) { - for (CodeType candidate : values()) { - if (candidate.toString().equalsIgnoreCase(name)) { - return candidate; - } - } - - throw new IllegalArgumentException("Given string \"" + name + "\" is not the name of a CodeType."); - } - - /** - * Prints this value as a macro annotation (i.e., starting with #). - */ - public String asMacroText() { - return "#" + this.name; - } -} diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffGraph.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffGraph.java index a4d7f13f3..94709153d 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffGraph.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffGraph.java @@ -12,13 +12,6 @@ public final class DiffGraph { private DiffGraph() {} - /** - * Returns true iff the given node has no parents (i.e., is a root candidate). - */ - public static boolean hasNoParents(final DiffNode node) { - return node.getBeforeParent() == null && node.getAfterParent() == null; - } - /** * Invokes {@link DiffGraph#fromNodes(Collection, DiffTreeSource)} )} with an unknown DiffTreeSource. */ @@ -37,7 +30,7 @@ public static DiffTree fromNodes(final Collection nodes, final DiffTre final DiffNode newRoot = DiffNode.createRoot(); newRoot.setLabel(DIFFGRAPH_LABEL); nodes.stream() - .filter(DiffGraph::hasNoParents) + .filter(DiffNode::isRoot) .forEach(n -> n.diffType.matchBeforeAfter( () -> newRoot.addBeforeChild(n), diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffNode.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffNode.java index b0f764a7f..11aebf96b 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffNode.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffNode.java @@ -17,7 +17,7 @@ /** * Implementation of a node in a {@link DiffTree}. * - * Includes methods for creating a node by getting its code type and diff type and for getting the feature mapping of the node. + * Includes methods for creating a node by getting its node type and diff type and for getting the feature mapping of the node. * @author Paul Bittner, Sören Viegener, Benjamin Moosherr */ public class DiffNode { @@ -30,10 +30,10 @@ public class DiffNode { public final DiffType diffType; /** - * The code type of this node, which determines the type of the represented + * The node type of this node, which determines the type of the represented * element in the diff (e.g., mapping or artifact). */ - public final CodeType codeType; + public final NodeType nodeType; private boolean isMultilineMacro = false; @@ -73,30 +73,30 @@ public class DiffNode { /** * Creates a DiffNode with the given parameters. * @param diffType The type of change made to this node. - * @param codeType The type of this node (i.e., mapping or artifact). + * @param nodeType The type of this node (i.e., mapping or artifact). * @param fromLines The starting line number of the corresponding text. * @param toLines The ending line number of the corresponding text. - * @param featureMapping The formula stored in this node. Should be null for code (/artifact) nodes. + * @param featureMapping The formula stored in this node. Should be null for artifact nodes. * @param label A text label containing information to identify the node (such as the corresponding source code). */ - public DiffNode(DiffType diffType, CodeType codeType, + public DiffNode(DiffType diffType, NodeType nodeType, DiffLineNumber fromLines, DiffLineNumber toLines, Node featureMapping, String label) { - this(diffType, codeType, fromLines, toLines, featureMapping, + this(diffType, nodeType, fromLines, toLines, featureMapping, new ArrayList(Arrays.asList(StringUtils.LINEBREAK_REGEX.split(label, -1)))); } /** - * The same as {@link DiffNode#DiffNode(DiffType, CodeType, DiffLineNumber, DiffLineNumber, Node, String)} + * The same as {@link DiffNode#DiffNode(DiffType, NodeType, DiffLineNumber, DiffLineNumber, Node, String)} * but with the label separated into different lines of text instead of as a single String with newlines. */ - public DiffNode(DiffType diffType, CodeType codeType, + public DiffNode(DiffType diffType, NodeType nodeType, DiffLineNumber fromLines, DiffLineNumber toLines, Node featureMapping, List lines) { this.childOrder = new ArrayList<>(); this.diffType = diffType; - this.codeType = codeType; + this.nodeType = nodeType; this.from.set(fromLines); this.to.set(toLines); this.featureMapping = featureMapping; @@ -110,8 +110,8 @@ public DiffNode(DiffType diffType, CodeType codeType, public static DiffNode createRoot() { return new DiffNode( DiffType.NON, - CodeType.ROOT, - new DiffLineNumber(1, 1, 1), + NodeType.IF, + DiffLineNumber.Invalid(), DiffLineNumber.Invalid(), FixTrueFalse.True, new ArrayList<>() @@ -120,19 +120,19 @@ public static DiffNode createRoot() { /** * Creates an artifact node with the given parameters. - * For parameter descriptions, see {@link DiffNode#DiffNode(DiffType, CodeType, DiffLineNumber, DiffLineNumber, Node, String)}. + * For parameter descriptions, see {@link DiffNode#DiffNode(DiffType, NodeType, DiffLineNumber, DiffLineNumber, Node, String)}. * The code parameter will be set as the node's label. */ - public static DiffNode createCode(DiffType diffType, DiffLineNumber fromLines, DiffLineNumber toLines, String code) { - return new DiffNode(diffType, CodeType.CODE, fromLines, toLines, null, code); + public static DiffNode createArtifact(DiffType diffType, DiffLineNumber fromLines, DiffLineNumber toLines, String code) { + return new DiffNode(diffType, NodeType.ARTIFACT, fromLines, toLines, null, code); } /** - * The same as {@link DiffNode#createCode(DiffType, DiffLineNumber, DiffLineNumber, String)} but with the code for the label + * The same as {@link DiffNode#createArtifact(DiffType, DiffLineNumber, DiffLineNumber, String)} but with the code for the label * given as a list of individual lines instead of a single String with linebreaks to identify newlines. */ - public static DiffNode createCode(DiffType diffType, DiffLineNumber fromLines, DiffLineNumber toLines, List lines) { - return new DiffNode(diffType, CodeType.CODE, fromLines, toLines, null, lines); + public static DiffNode createArtifact(DiffType diffType, DiffLineNumber fromLines, DiffLineNumber toLines, List lines) { + return new DiffNode(diffType, NodeType.ARTIFACT, fromLines, toLines, null, lines); } /** @@ -651,9 +651,9 @@ public Lines getLinesAfterEdit() { /** * Returns the formula that is stored in this node. - * The formula is null for artifact nodes (i.e., {@link CodeType#CODE}). + * The formula is null for artifact nodes (i.e., {@link NodeType#ARTIFACT}). * The formula is not null for mapping nodes - * @see CodeType#isMacro + * @see NodeType#isAnnotation */ public Node getDirectFeatureMapping() { return featureMapping; @@ -691,9 +691,9 @@ public boolean isMultilineMacro() { /** * Returns the full feature mapping formula of this node. - * The feature mapping of an {@link CodeType#IF} node is its {@link DiffNode#getDirectFeatureMapping direct feature mapping}. - * The feature mapping of {@link CodeType#ELSE} and {@link CodeType#ELIF} nodes is determined by all formulas in the respective if-elif-else chain. - * The feature mapping of an {@link CodeType#CODE artifact} node is the feature mapping of its parent. + * The feature mapping of an {@link NodeType#IF} node is its {@link DiffNode#getDirectFeatureMapping direct feature mapping}. + * The feature mapping of {@link NodeType#ELSE} and {@link NodeType#ELIF} nodes is determined by all formulas in the respective if-elif-else chain. + * The feature mapping of an {@link NodeType#ARTIFACT artifact} node is the feature mapping of its parent. * See Equation (1) in our paper (+ its extension to time for variation tree diffs described in Section 3.1). * @param parentOf Function that returns the parent of a node. * This function decides whether the before or after parent should be visited. @@ -717,15 +717,15 @@ private List getFeatureMappingClauses(final Function p if (ancestor.isElif()) { and.add(negate(ancestor.getDirectFeatureMapping())); } else { - throw new RuntimeException("Expected If or Elif above Else or Elif but got " + ancestor.codeType + " from " + ancestor); - // Assert.assertTrue(ancestor.isCode()); + throw new RuntimeException("Expected If or Elif above Else or Elif but got " + ancestor.nodeType + " from " + ancestor); + // Assert.assertTrue(ancestor.isArtifact()); } ancestor = parentOf.apply(ancestor); } and.add(negate(ancestor.getDirectFeatureMapping())); return and; - } else if (isCode()) { + } else if (isArtifact()) { return parent.getFeatureMappingClauses(parentOf); } @@ -745,9 +745,9 @@ private Node getFeatureMapping(Function parentOf) { /** * Returns the full feature mapping formula of this node before the edit. - * The feature mapping of an {@link CodeType#IF} node is its {@link DiffNode#getDirectFeatureMapping direct feature mapping}. - * The feature mapping of {@link CodeType#ELSE} and {@link CodeType#ELIF} nodes is determined by all formulas in the respective if-elif-else chain. - * The feature mapping of an {@link CodeType#CODE artifact} node is the feature mapping of its parent. + * The feature mapping of an {@link NodeType#IF} node is its {@link DiffNode#getDirectFeatureMapping direct feature mapping}. + * The feature mapping of {@link NodeType#ELSE} and {@link NodeType#ELIF} nodes is determined by all formulas in the respective if-elif-else chain. + * The feature mapping of an {@link NodeType#ARTIFACT artifact} node is the feature mapping of its parent. * See Equation (1) in our paper (+ its extension to time for variation tree diffs described in Section 3.1). * @return The feature mapping of this node for the given parent edges. */ @@ -757,9 +757,9 @@ public Node getBeforeFeatureMapping() { /** * Returns the full feature mapping formula of this node after the edit. - * The feature mapping of an {@link CodeType#IF} node is its {@link DiffNode#getDirectFeatureMapping direct feature mapping}. - * The feature mapping of {@link CodeType#ELSE} and {@link CodeType#ELIF} nodes is determined by all formulas in the respective if-elif-else chain. - * The feature mapping of an {@link CodeType#CODE artifact} node is the feature mapping of its parent. + * The feature mapping of an {@link NodeType#IF} node is its {@link DiffNode#getDirectFeatureMapping direct feature mapping}. + * The feature mapping of {@link NodeType#ELSE} and {@link NodeType#ELIF} nodes is determined by all formulas in the respective if-elif-else chain. + * The feature mapping of an {@link NodeType#ARTIFACT artifact} node is the feature mapping of its parent. * See Equation (1) in our paper (+ its extension to time for variation tree diffs described in Section 3.1). * @return The feature mapping of this node for the given parent edges. */ @@ -807,7 +807,7 @@ private List getPresenceCondition(Function parentOf) { } return clauses; - } else if (isCode()) { + } else if (isArtifact()) { return parent.getPresenceCondition(parentOf); } @@ -927,58 +927,49 @@ public DiffType getDiffType() { } /** - * Returns true if this node represents an ELIF macro. - * @see CodeType#ELIF + * Returns true if this node represents an ELIF annotation. + * @see NodeType#ELIF */ public boolean isElif() { - return this.codeType.equals(CodeType.ELIF); + return this.nodeType.equals(NodeType.ELIF); } /** * Returns true if this node represents a conditional annotation. - * @see CodeType#IF + * @see NodeType#IF */ public boolean isIf() { - return this.codeType.equals(CodeType.IF); + return this.nodeType.equals(NodeType.IF); } /** * Returns true if this node is an artifact node. - * @see CodeType#CODE - */ - public boolean isCode() { - return this.codeType.equals(CodeType.CODE); - } - - /** - * Returns true if this node represents the end of an annotation block. - * Such a node should not be part of any {@link DiffTree}. - * @see CodeType#ENDIF + * @see NodeType#ARTIFACT */ - public boolean isEndif() { - return this.codeType.equals(CodeType.ENDIF); + public boolean isArtifact() { + return this.nodeType.equals(NodeType.ARTIFACT); } /** - * Returns true if this node represents an ELSE macro. - * @see CodeType#ELSE + * Returns true if this node represents an ELSE annotation. + * @see NodeType#ELSE */ public boolean isElse() { - return this.codeType.equals(CodeType.ELSE); + return this.nodeType.equals(NodeType.ELSE); } /** - * Returns true if this node is a root node (i.e., it has {@link CodeType#ROOT}. + * Returns true if this node is a root node (has no parents). */ public boolean isRoot() { - return this.codeType.equals(CodeType.ROOT); + return getBeforeParent() == null && getAfterParent() == null; } /** - * Returns {@link CodeType#isMacro()} for this node's {@link DiffNode#codeType}. + * Returns {@link NodeType#isAnnotation()} for this node's {@link DiffNode#nodeType}. */ - public boolean isMacro() { - return this.codeType.isMacro(); + public boolean isAnnotation() { + return this.nodeType.isAnnotation(); } /** @@ -991,6 +982,7 @@ public boolean isMacro() { * {@code 2^26}, this id will no longer be unique. */ public int getID() { + // Add one to ensure invalid (negative) line numbers don't cause issues. int lineNumber = 1 + from.inDiff; Assert.assertTrue((lineNumber << 2*ID_OFFSET) >> 2*ID_OFFSET == lineNumber); @@ -999,13 +991,13 @@ public int getID() { id <<= ID_OFFSET; id += diffType.ordinal(); id <<= ID_OFFSET; - id += codeType.ordinal(); + id += nodeType.ordinal(); return id; } /** * Reconstructs a node from the given id and sets the given label. - * An id uniquely determines a node's {@link DiffNode#codeType}, {@link DiffNode#diffType}, and {@link DiffLineNumber#inDiff line number in the diff}. + * An id uniquely determines a node's {@link DiffNode#nodeType}, {@link DiffNode#diffType}, and {@link DiffLineNumber#inDiff line number in the diff}. * The almost-inverse function is {@link DiffNode#getID()} but the conversion is not lossless. * @param id The id from which to reconstruct the node. * @param label The label the node should have. @@ -1014,13 +1006,13 @@ public int getID() { public static DiffNode fromID(final int id, String label) { final int lowestBitsMask = (1 << ID_OFFSET) - 1; - final int codeTypeOrdinal = id & lowestBitsMask; + final int nodeTypeOrdinal = id & lowestBitsMask; final int diffTypeOrdinal = (id >> ID_OFFSET) & lowestBitsMask; final int fromInDiff = (id >> (2*ID_OFFSET)) - 1; return new DiffNode( DiffType.values()[diffTypeOrdinal], - CodeType.values()[codeTypeOrdinal], + NodeType.values()[nodeTypeOrdinal], new DiffLineNumber(fromInDiff, DiffLineNumber.InvalidLineNumber, DiffLineNumber.InvalidLineNumber), DiffLineNumber.Invalid(), null, @@ -1115,9 +1107,9 @@ public String toTextDiff() { } // Add endif after macro - if (isMacro()) { + if (isAnnotation() && !isRoot()) { diff - .append(toTextDiffLine(this.diffType, List.of(CodeType.ENDIF.asMacroText()))) + .append(toTextDiffLine(this.diffType, List.of("#endif"))) .append(StringUtils.LINEBREAK); } @@ -1127,12 +1119,12 @@ public String toTextDiff() { @Override public String toString() { String s; - if (isCode()) { - s = String.format("%s_%s from %d to %d", diffType, codeType, from.inDiff, to.inDiff); + if (isArtifact()) { + s = String.format("%s_%s from %d to %d", diffType, nodeType, from.inDiff, to.inDiff); } else if (isRoot()) { s = "ROOT"; } else { - s = String.format("%s_%s from %d to %d with \"%s\"", diffType, codeType, + s = String.format("%s_%s from %d to %d with \"%s\"", diffType, nodeType, from.inDiff, to.inDiff, featureMapping); } return s; @@ -1143,7 +1135,7 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; DiffNode diffNode = (DiffNode) o; - return isMultilineMacro == diffNode.isMultilineMacro && diffType == diffNode.diffType && codeType == diffNode.codeType && from.equals(diffNode.from) && to.equals(diffNode.to) && Objects.equals(featureMapping, diffNode.featureMapping) && lines.equals(diffNode.lines); + return isMultilineMacro == diffNode.isMultilineMacro && diffType == diffNode.diffType && nodeType == diffNode.nodeType && from.equals(diffNode.from) && to.equals(diffNode.to) && Objects.equals(featureMapping, diffNode.featureMapping) && lines.equals(diffNode.lines); } /** @@ -1156,6 +1148,6 @@ public boolean equals(Object o) { */ @Override public int hashCode() { - return Objects.hash(diffType, codeType, isMultilineMacro, from, to, featureMapping, lines); + return Objects.hash(diffType, nodeType, isMultilineMacro, from, to, featureMapping, lines); } } diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffTree.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffTree.java index 9ae5107ad..3dada3388 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffTree.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffTree.java @@ -73,7 +73,7 @@ public static DiffResult fromDiff(final String diff, boolean collapseM * So just lines preceded by "+", "-", or " " are expected. * @param p Path to a diff file. * @param collapseMultipleCodeLines Set to true if subsequent lines of source code with - * the same {@link CodeType type of change} should be + * the same {@link NodeType type of change} should be * collapsed into a single source code node representing * all lines at once. * @param ignoreEmptyLines Set to true if empty lines should not be included in the DiffTree. @@ -95,7 +95,7 @@ public static DiffResult fromFile(final Path p, boolean collapseMultip * So just lines preceded by "+", "-", or " " are expected. * @param diff The diff as text. Lines should be separated by a newline character. Each line should be preceded by either "+", "-", or " ". * @param collapseMultipleCodeLines Set to true if subsequent lines of source code with - * the same {@link CodeType type of change} should be + * the same {@link NodeType type of change} should be * collapsed into a single source code node representing * all lines at once. * @param ignoreEmptyLines Set to true if empty lines should not be included in the DiffTree. @@ -205,8 +205,8 @@ public List computeAllNodesThat(final Predicate property) { * Returns all artifact nodes of this DiffTree. * @see DiffTree#computeAllNodesThat */ - public List computeCodeNodes() { - return computeAllNodesThat(DiffNode::isCode); + public List computeArtifactNodes() { + return computeAllNodesThat(DiffNode::isArtifact); } /** @@ -214,7 +214,7 @@ public List computeCodeNodes() { * @see DiffTree#computeAllNodesThat */ public List computeAnnotationNodes() { - return computeAllNodesThat(DiffNode::isMacro); + return computeAllNodesThat(DiffNode::isAnnotation); } /** diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffType.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffType.java index 0056253df..a2f917889 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffType.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/DiffType.java @@ -32,12 +32,12 @@ public static DiffType thatExistsOnlyAt(Time time) { /** * Runs the given procedure depending whether this diff types exists at the respective times. - * Runs the first given procedure if the edited artefact existed before the edit (DiffType != ADD). - * Runs the second given procedure if the edited artefact exists after the edit (DiffType != REM). - * Note: Runs both procedures sequentially if the artefact was not edited and thus + * Runs the first given procedure if the edited artifact existed before the edit (DiffType != ADD). + * Runs the second given procedure if the edited artifact exists after the edit (DiffType != REM). + * Note: Runs both procedures sequentially if the artifact was not edited and thus * exists before and after the edit (DiffType = NON). - * @param ifExistsBefore Procedure to run if the edited artefact existed before the edit (DiffType != ADD). - * @param ifExistsAfter Procedure to run if the edited artefact exists after the edit (DiffType != REM). + * @param ifExistsBefore Procedure to run if the edited artifact existed before the edit (DiffType != ADD). + * @param ifExistsAfter Procedure to run if the edited artifact exists after the edit (DiffType != REM). */ public void matchBeforeAfter(final Runnable ifExistsBefore, final Runnable ifExistsAfter) { if (this != DiffType.ADD) { @@ -52,7 +52,7 @@ public void matchBeforeAfter(final Runnable ifExistsBefore, final Runnable ifExi * Runs the given task once for each argument that would exist at a certain time if it had this diff type. * Runs task on ifExistsBefore if the value existed before the edit (DiffType != ADD). * Runs task on ifExistsAfter if the value exists after the edit (DiffType != ADD). - * Note: Runs task on both arguments sequentially if the artefact was not edited (DiffType == NON). + * Note: Runs task on both arguments sequentially if the artifact was not edited (DiffType == NON). * * @param ifExistsBefore Argument that is valid if the diff did not add. * @param ifExistsAfter Argument that is valid if the edit did not remove. diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/NodeType.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/NodeType.java new file mode 100644 index 000000000..aaf3a5660 --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/NodeType.java @@ -0,0 +1,72 @@ +package org.variantsync.diffdetective.diff.difftree; + +import org.variantsync.diffdetective.diff.difftree.parse.MultiLineMacroParser; + +/** + * The type of nodes in a {@link DiffTree}. + * Corresponds to the tau function from our paper. + */ +public enum NodeType { + // Mapping types + IF("if"), + ELSE("else"), + ELIF("elif"), + + // Artifact types + ARTIFACT("artifact"); + + public final String name; + NodeType(String name) { + this.name = name; + } + + /** + * Returns true iff this node type represents a conditional feature annotation (i.e., if or elif). + */ + public boolean isConditionalAnnotation() { + return this == IF || this == ELIF; + } + + /** + * Returns true iff this node type represents a feature mapping. + */ + public boolean isAnnotation() { + return this != ARTIFACT; + } + + /** + * Parses the node type from a line taken from a text-based diff. + * @param line A line in a patch. + * @return The type of edit of line. + */ + public static NodeType ofDiffLine(String line) { + String macro = MultiLineMacroParser.conditionalMacroName(line); + if (macro != null) { + if (macro.equals(IF.name)) { + return IF; + } else if (macro.equals(ELSE.name)) { + return ELSE; + } else if (macro.equals(ELIF.name)) { + return ELIF; + } + } + + return ARTIFACT; + } + + /** + * Creates a NodeType from its value names. + * @see Enum#name() + * @param name a string that equals the name of one value of this enum (ignoring case) + * @return The NodeType that has the given name + */ + public static NodeType fromName(final String name) { + for (NodeType candidate : values()) { + if (candidate.toString().equalsIgnoreCase(name)) { + return candidate; + } + } + + throw new IllegalArgumentException("Given string \"" + name + "\" is not the name of a NodeType."); + } +} diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/filter/DiffTreeFilter.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/filter/DiffTreeFilter.java index 88b604ed5..69b63feae 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/filter/DiffTreeFilter.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/filter/DiffTreeFilter.java @@ -3,7 +3,7 @@ import org.variantsync.diffdetective.diff.difftree.DiffNode; import org.variantsync.diffdetective.diff.difftree.DiffTree; -import static org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns.*; +import static org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses.*; /** * A filter on DiffTrees that is equipped with some metadata T (e.g., for debugging or logging). @@ -28,13 +28,13 @@ public static TaggedPredicate Any() { /** * Returns a tagged predicate that returns true iff - * the DiffTree has more than one artifact node ({@link DiffNode#isCode()}. + * the DiffTree has more than one artifact node ({@link DiffNode#isArtifact()}. * The predicate is tagged with a String description of the predicate. */ - public static TaggedPredicate moreThanOneCodeNode() { + public static TaggedPredicate moreThanOneArtifactNode() { return new TaggedPredicate<>( - "has more than one elementary pattern", - tree -> tree.count(DiffNode::isCode) > 1 + "has more than one artifact node", + tree -> tree.count(DiffNode::isArtifact) > 1 ); } @@ -64,18 +64,18 @@ public static TaggedPredicate consistent() { /** * Returns a tagged predicate that returns true iff - * the DiffTree has at least one artifact node ({@link DiffNode#isCode()}) - * that does not match any pattern of - * {@link org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns#AddToPC}, - * {@link org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns#RemFromPC}, - * {@link org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns#Untouched}. + * the DiffTree has at least one artifact node ({@link DiffNode#isArtifact()}) + * that does not match any edit class of + * {@link org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses#AddToPC}, + * {@link org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses#RemFromPC}, + * {@link org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses#Untouched}. * The predicate is tagged with a String description of the predicate. */ public static TaggedPredicate hasAtLeastOneEditToVariability() { return new TaggedPredicate<>( "has edits to variability", tree -> tree.anyMatch(n -> - n.isCode() && !AddToPC.matches(n) && !RemFromPC.matches(n) && !Untouched.matches(n) + n.isArtifact() && !AddToPC.matches(n) && !RemFromPC.matches(n) && !Untouched.matches(n) ) ); } diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/parse/DiffNodeParser.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/parse/DiffNodeParser.java index f0dea18b1..179755c49 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/parse/DiffNodeParser.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/parse/DiffNodeParser.java @@ -2,7 +2,7 @@ import org.prop4j.Node; import org.variantsync.diffdetective.diff.DiffLineNumber; -import org.variantsync.diffdetective.diff.difftree.CodeType; +import org.variantsync.diffdetective.diff.difftree.NodeType; import org.variantsync.diffdetective.diff.difftree.DiffNode; import org.variantsync.diffdetective.diff.difftree.DiffType; import org.variantsync.diffdetective.feature.CPPAnnotationParser; @@ -23,15 +23,15 @@ public record DiffNodeParser(CPPAnnotationParser annotationParser) { * Parses the given line from a text-based diff to a DiffNode. * * @param diffLine The line which the new node represents. - * @return A DiffNode with a code type, diff type, label, and feature mapping. + * @return A DiffNode with a node type, diff type, label, and feature mapping. */ public DiffNode fromDiffLine(String diffLine) throws IllFormedAnnotationException { DiffType diffType = DiffType.ofDiffLine(diffLine); - CodeType codeType = CodeType.ofDiffLine(diffLine); + NodeType nodeType = NodeType.ofDiffLine(diffLine); String label = diffLine.isEmpty() ? diffLine : diffLine.substring(1); Node featureMapping; - if (codeType == CodeType.CODE || codeType == CodeType.ENDIF || codeType == CodeType.ELSE) { + if (nodeType == NodeType.ARTIFACT || nodeType == NodeType.ELSE) { featureMapping = null; } else { featureMapping = annotationParser.parseDiffLine(diffLine); @@ -40,7 +40,7 @@ public DiffNode fromDiffLine(String diffLine) throws IllFormedAnnotationExceptio ArrayList lines = new ArrayList<>(); lines.add(label); return new DiffNode( - diffType, codeType, + diffType, nodeType, DiffLineNumber.Invalid(), DiffLineNumber.Invalid(), featureMapping, lines); diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/parse/DiffTreeParser.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/parse/DiffTreeParser.java index 5d48c9102..dcf78b002 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/parse/DiffTreeParser.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/parse/DiffTreeParser.java @@ -55,7 +55,7 @@ public static DiffResult createDiffTree( * * @param fullDiff The full diff of a patch obtained from a buffered reader. * @param collapseMultipleCodeLines Whether multiple consecutive code lines with the same diff type - * should be collapsed into a single code node. + * should be collapsed into a single artifact node. * @param ignoreEmptyLines Whether empty lines (no matter if they are added removed * or remained unchanged) should be ignored. * @param nodeParser The parser to parse individual lines in the diff to DiffNodes. @@ -74,7 +74,7 @@ public static DiffResult createDiffTree( final DiffLineNumber lineNo = new DiffLineNumber(0, 0, 0); final DiffLineNumber lastLineNo = DiffLineNumber.Copy(lineNo); - DiffNode lastCode = null; + DiffNode lastArtifact = null; final AtomicReference> error = new AtomicReference<>(); final BiConsumer errorPropagation = (errType, message) -> { if (error.get() == null) { @@ -115,8 +115,8 @@ public static DiffResult createDiffTree( switch (isMLMacro.type()) { case Success: { - if (lastCode != null) { - lastCode = endCodeBlock(lastCode, lastLineNo); + if (lastArtifact != null) { + lastArtifact = endCodeBlock(lastArtifact, lastLineNo); } // This line belongs to a multiline macro and was handled, so go to the next line. continue; @@ -129,34 +129,11 @@ public static DiffResult createDiffTree( case NotMyDuty: break; } - // This gets the code type and diff type of the current line and creates a node - // Note that the node is not yet added to the diff tree. - final DiffNode newNode; - try { - newNode = nodeParser.fromDiffLine(currentLine); - } catch (IllFormedAnnotationException e) { - return DiffResult.Failure(e); - } - - // collapse multiple code lines - if (lastCode != null) { - if (collapseMultipleCodeLines && newNode.isCode() && lastCode.diffType.equals(newNode.diffType)) { - lastCode.addLines(newNode.getLines()); - continue; - } else { - lastCode = endCodeBlock(lastCode, lastLineNo); + if ("endif".equals(MultiLineMacroParser.conditionalMacroName(currentLine))) { + if (lastArtifact != null) { + lastArtifact = endCodeBlock(lastArtifact, lastLineNo); } - } - - newNode.getFromLine().set(lineNo); - if (!newNode.isEndif()) { - newNode.addBelow(beforeStack.peek(), afterStack.peek()); - nodes.add(newNode); - } - if (newNode.isCode()) { - lastCode = newNode; - } else if (newNode.isEndif()) { final String currentLineFinal = currentLine; diffType.matchBeforeAfter(beforeStack, afterStack, stack -> { @@ -174,12 +151,39 @@ public static DiffResult createDiffTree( }); if (error.get() != null) { return error.get(); } } else { - // newNode is if, elif or else - // push the node to the relevant stacks - diffType.matchBeforeAfter(beforeStack, afterStack, stack -> - pushNodeToStack(newNode, stack, lastLineNo).onError(errorPropagation) - ); - if (error.get() != null) { return error.get(); } + // This gets the node type and diff type of the current line and creates a node + // Note that the node is not yet added to the diff tree. + final DiffNode newNode; + try { + newNode = nodeParser.fromDiffLine(currentLine); + } catch (IllFormedAnnotationException e) { + return DiffResult.Failure(e); + } + + // collapse multiple code lines + if (lastArtifact != null) { + if (collapseMultipleCodeLines && newNode.isArtifact() && lastArtifact.diffType.equals(newNode.diffType)) { + lastArtifact.addLines(newNode.getLines()); + continue; + } else { + lastArtifact = endCodeBlock(lastArtifact, lastLineNo); + } + } + + newNode.getFromLine().set(lineNo); + newNode.addBelow(beforeStack.peek(), afterStack.peek()); + nodes.add(newNode); + + if (newNode.isArtifact()) { + lastArtifact = newNode; + } else { + // newNode is if, elif or else + // push the node to the relevant stacks + diffType.matchBeforeAfter(beforeStack, afterStack, stack -> + pushNodeToStack(newNode, stack, lastLineNo).onError(errorPropagation) + ); + if (error.get() != null) { return error.get(); } + } } } @@ -187,12 +191,10 @@ public static DiffResult createDiffTree( return DiffResult.Failure(DiffError.NOT_ALL_ANNOTATIONS_CLOSED); } - if (lastCode != null) { - lastCode = endCodeBlock(lastCode, lineNo); + if (lastArtifact != null) { + lastArtifact = endCodeBlock(lastArtifact, lineNo); } - endCodeBlock(root, lineNo); - // Invalidate line numbers according to edits. // E.g. if a node was added, it had no line number before the edit. for (final DiffNode node : nodes) { @@ -274,7 +276,7 @@ public static DiffNode popIf(final Stack stack) { do { // Don't update line numbers of popped nodes here as this already happened. popped = stack.pop(); - } while (!popped.isIf() && !popped.isRoot()); + } while (!popped.isIf()); return popped; } diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/parse/MultiLineMacroParser.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/parse/MultiLineMacroParser.java index 56d440ea4..c8dbe1522 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/parse/MultiLineMacroParser.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/parse/MultiLineMacroParser.java @@ -1,13 +1,13 @@ package org.variantsync.diffdetective.diff.difftree.parse; import org.variantsync.diffdetective.diff.DiffLineNumber; -import org.variantsync.diffdetective.diff.difftree.CodeType; import org.variantsync.diffdetective.diff.difftree.DiffNode; import org.variantsync.diffdetective.diff.difftree.DiffType; import java.io.BufferedReader; import java.util.List; import java.util.Stack; +import java.util.regex.Pattern; import static org.variantsync.diffdetective.diff.result.DiffError.MLMACRO_WITHIN_MLMACRO; @@ -16,6 +16,11 @@ * @author Paul Bittner */ public class MultiLineMacroParser { + /** Matches conditional macros. Note that it doesn't match the whole line or even the whole + * macro name. For example {@code #ifdef} is also matched, but only {@code "if"} is captured. + */ + private final static Pattern macroPattern = Pattern.compile("^[+-]?\\s*#\\s*(if|elif|else|endif)"); + private final DiffNodeParser nodeParser; private MultilineMacro beforeMLMacro = null; @@ -81,8 +86,7 @@ ParseResult consume( if (continuesMultilineDefinition(line)) { // If this multiline macro line is a header... - final CodeType codeType = CodeType.ofDiffLine(line); - if (codeType.isConditionalMacro()) { + if (conditionalMacroName(line) != null) { // ... create a new multi line macro to complete. if (!isAdd) { if (beforeMLMacro != null) { @@ -103,7 +107,7 @@ ParseResult consume( /* If this happens (at least) one of this happened * 1. Found line of a multiline macro without header at line " + line + "! * 2. Backslash in a comment. - * 3. It is the head of a multiline #define macro that we classify as code. + * 3. It is the head of a multiline #define macro that we classify as artifact. * * As 2 and 3 are most likely we just assume those. */ @@ -200,4 +204,23 @@ ParseResult consume( public static boolean continuesMultilineDefinition(String line) { return line.trim().endsWith("\\"); } + + /** + * Returns the shortened name of a conditional macro. + * + * Shortened means it's one of {@code if}, {@code elif}, {@code else} or {@code endif}, + * although the actual macro name may be longer (for example {@code ifdef}). + * + * @param line the first line of the macro + * @return the shortened name of a conditional macro in {@code line} or {@code null} if there + * is no conditional macro on {@code line} + */ + public static String conditionalMacroName(String line) { + var matcher = macroPattern.matcher(line); + if (matcher.find()) { + return matcher.group(1); + } else { + return null; + } + } } diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/LineGraphImport.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/LineGraphImport.java index 3b7e76ef4..4e9cf7656 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/LineGraphImport.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/LineGraphImport.java @@ -129,22 +129,20 @@ private static DiffTree parseDiffTree(final String lineGraph, final Path inFile, // Handle trees and graphs differently if (options.graphFormat() == GraphFormat.DIFFGRAPH) { - // If you should interpret the input data as DiffTrees, always expect a root to be present. Parse all nodes (v) to a list of nodes. Search for the root. Assert that there is exactly one root. - Assert.assertTrue(diffNodeList.stream().noneMatch(DiffNode::isRoot)); // test if it’s not a tree return DiffGraph.fromNodes(diffNodeList, diffTreeSource); } else if (options.graphFormat() == GraphFormat.DIFFTREE) { // If you should interpret the input data as DiffTrees, always expect a root to be present. Parse all nodes (v) to a list of nodes. Search for the root. Assert that there is exactly one root. DiffNode root = null; for (final DiffNode v : diffNodeList) { - if (DiffGraph.hasNoParents(v)) { + if (v.isRoot()) { // v is root candidate if (root != null) { - throw new RuntimeException("Not a DiffTree but a DiffGraph: Got more than one root! Got \"" + root + "\" and \"" + v + "\"!"); + throw new RuntimeException("Not a DiffTree: Got more than one root! Got \"" + root + "\" and \"" + v + "\"!"); } - if (v.codeType == CodeType.IF || v.codeType == CodeType.ROOT) { + if (v.nodeType == NodeType.IF) { root = v; } else { - throw new RuntimeException("Not a DiffTree but a DiffGraph: The node \"" + v + "\" is not labeled as ROOT or IF but has no parents!"); + throw new RuntimeException("Not a DiffTree but a DiffGraph: The node \"" + v + "\" is not labeled as IF but has no parents!"); } } } @@ -153,7 +151,7 @@ private static DiffTree parseDiffTree(final String lineGraph, final Path inFile, throw new RuntimeException("Not a DiffTree but a DiffGraph: No root found!"); } -// countRootTypes.merge(root.codeType, 1, Integer::sum); +// countRootTypes.merge(root.nodeType, 1, Integer::sum); return new DiffTree(root, diffTreeSource); } else { diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/TikzExporter.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/TikzExporter.java index 54cb293e0..fa03a22b2 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/TikzExporter.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/TikzExporter.java @@ -98,7 +98,7 @@ public void exportDiffTree( .joining(" \\\\ ")); output.format("%n\t\\node[%s, %s] (node_%s) at (%s) {};%n", - node.isCode() ? "artefact" : "annotation", + node.isArtifact() ? "artifact" : "annotation", node.getDiffType().toString().toLowerCase(Locale.ROOT), node.getID(), node.getID()); diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/DebugDiffNodeFormat.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/DebugDiffNodeFormat.java index f620c0943..425025b16 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/DebugDiffNodeFormat.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/DebugDiffNodeFormat.java @@ -4,16 +4,16 @@ import org.variantsync.diffdetective.util.FileUtils; /** - * Print CodeType and DiffType and Mappings if Macro and Text if Code. + * Print NodeType, DiffType and Mappings for Annotations and Text for Artifacts. * @author Paul Bittner, Kevin Jedelhauser */ public class DebugDiffNodeFormat implements DiffNodeLabelFormat { @Override public String toLabel(final DiffNode node) { - return node.diffType + "_" + node.codeType + "_\"" + - DiffNodeLabelPrettyfier.prettyPrintIfMacroOr( + return node.diffType + "_" + node.nodeType + "_\"" + + DiffNodeLabelPrettyfier.prettyPrintIfAnnotationOr( node, FileUtils.replaceLineEndings(node.getLabel().trim().replaceAll("\t", " "), "
")) + "\""; } -} \ No newline at end of file +} diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/DiffNodeLabelPrettyfier.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/DiffNodeLabelPrettyfier.java index d4695e3f5..c482e0226 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/DiffNodeLabelPrettyfier.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/DiffNodeLabelPrettyfier.java @@ -1,7 +1,7 @@ package org.variantsync.diffdetective.diff.difftree.serialize.nodeformat; import org.prop4j.Node; -import org.variantsync.diffdetective.diff.difftree.CodeType; +import org.variantsync.diffdetective.diff.difftree.NodeType; import org.variantsync.diffdetective.diff.difftree.DiffNode; /** @@ -9,14 +9,14 @@ */ public abstract class DiffNodeLabelPrettyfier { /** - * Auxiliary method for {@link DiffNodeLabelPrettyfier#prettyPrintIfMacroOr(DiffNode, String)}. - * Returns a string starting with the nodes {@link DiffNode#codeType}, and its {@link DiffNode#getDirectFeatureMapping()} + * Auxiliary method for {@link DiffNodeLabelPrettyfier#prettyPrintIfAnnotationOr(DiffNode, String)}. + * Returns a string starting with the nodes {@link DiffNode#nodeType}, and its {@link DiffNode#getDirectFeatureMapping()} * if it has a formula. * @param node The {@link DiffNode} to print. - * @return CodeType and {@link DiffNode::getDirectFeatureMapping} of the node in a single string, seperated by a space character. + * @return NodeType and {@link DiffNode::getDirectFeatureMapping} of the node in a single string, seperated by a space character. */ private static String prettyPrintTypeAndMapping(final DiffNode node) { - String result = node.codeType.name; + String result = node.nodeType.name; final Node fm = node.getDirectFeatureMapping(); if (fm != null) { result += " " + fm; @@ -26,18 +26,18 @@ private static String prettyPrintTypeAndMapping(final DiffNode node) { /** * Invokes {@link #prettyPrintTypeAndMapping(DiffNode)} if the given - * node {@link CodeType#isMacro() is a macro}, and returns the elseValue otherwise. + * node {@link NodeType#isAnnotation() is an annotation}, and returns the elseValue otherwise. * @param node The {@link DiffNode} to prettyprint. - * @param elseValue The value to return in case the given node is not a macro. + * @param elseValue The value to return in case the given node is not an annotation. * @return The generated label. */ - public static String prettyPrintIfMacroOr(final DiffNode node, final String elseValue) { + public static String prettyPrintIfAnnotationOr(final DiffNode node, final String elseValue) { String result = ""; - if (node.codeType.isMacro()) { + if (node.isAnnotation()) { result += prettyPrintTypeAndMapping(node); } else { result += elseValue; } return result; } -} \ No newline at end of file +} diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/FormulasAndLineNumbersNodeFormat.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/FormulasAndLineNumbersNodeFormat.java index bdb3996d5..21d47929e 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/FormulasAndLineNumbersNodeFormat.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/FormulasAndLineNumbersNodeFormat.java @@ -3,7 +3,7 @@ import org.variantsync.diffdetective.diff.difftree.DiffNode; /** - * Produces labels of kind fromLine-toLine: CodeType, suffixed by the node's formula if it is a macro. + * Produces labels of kind fromLine-toLine: NodeType, suffixed by the node's formula if it is an annotation. * The line numbers reference the line numbers in the diff. * @see DiffNode#getFromLine() * @see DiffNode#getToLine() @@ -13,8 +13,8 @@ public class FormulasAndLineNumbersNodeFormat implements DiffNodeLabelFormat { @Override public String toLabel(DiffNode node) { - final String lineNumbers = node.getFromLine().inDiff + "-" + node.getToLine().inDiff + ": " + node.codeType; - if (node.isMacro()) { + final String lineNumbers = node.getFromLine().inDiff + "-" + node.getToLine().inDiff + ": " + node.nodeType; + if (node.isAnnotation()) { return lineNumbers + " " + node.getDirectFeatureMapping(); } return lineNumbers; diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/MappingsDiffNodeFormat.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/MappingsDiffNodeFormat.java index 8295371f6..d3aae2ac2 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/MappingsDiffNodeFormat.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/MappingsDiffNodeFormat.java @@ -3,15 +3,15 @@ import org.variantsync.diffdetective.diff.difftree.DiffNode; /** - * Print CodeType and DiffType and Mappings of Macros. - * The produced label will be CodeType_DiffType_"macro formula" for mapping nodes, - * and CodeType_DiffType_"" for non-mapping nodes. - * @see DiffNodeLabelPrettyfier#prettyPrintIfMacroOr(DiffNode, String) + * Print NodeType and DiffType and Mappings of Annotations. + * The produced label will be NodeType"annotation formula" for mapping nodes, + * and NodeType"" for non-mapping nodes. + * @see DiffNodeLabelPrettyfier#prettyPrintIfAnnotationOr(DiffNode, String) * @author Paul Bittner, Kevin Jedelhauser */ public class MappingsDiffNodeFormat implements DiffNodeLabelFormat { @Override public String toLabel(final DiffNode node) { - return node.diffType + "_" + node.codeType + "_\"" + DiffNodeLabelPrettyfier.prettyPrintIfMacroOr(node, "") + "\""; + return node.diffType + "_" + node.nodeType + "_\"" + DiffNodeLabelPrettyfier.prettyPrintIfAnnotationOr(node, "") + "\""; } -} \ No newline at end of file +} diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/TypeDiffNodeFormat.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/TypeDiffNodeFormat.java index 64692b8fa..b68527b97 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/TypeDiffNodeFormat.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/serialize/nodeformat/TypeDiffNodeFormat.java @@ -3,12 +3,12 @@ import org.variantsync.diffdetective.diff.difftree.DiffNode; /** - * Labels are of the form CodeType_DiffType. + * Labels are of the form NodeType. * @author Paul Bittner, Kevin Jedelhauser */ public class TypeDiffNodeFormat implements DiffNodeLabelFormat { @Override public String toLabel(final DiffNode node) { - return node.diffType + "_" + node.codeType; + return node.diffType + "_" + node.nodeType; } -} \ No newline at end of file +} diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CollapseElementaryPatterns.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CollapseElementaryPatterns.java deleted file mode 100644 index 71a04429c..000000000 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CollapseElementaryPatterns.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.variantsync.diffdetective.diff.difftree.transform; - -import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.diff.difftree.DiffTree; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPatternCatalogue; - -import java.util.List; - -/** - * Collapses elementary patterns in a DiffTree. - * Contrary to its name, this transformation leaves a DiffTree's graph structure unchanged. - * This transformation uses the {@link RelabelNodes} transformer to relabel all nodes. - * All {@link DiffNode#isCode() artifact} nodes will be labeled by their respective elementary pattern. - * All other nodes will be labeled by the {@link org.variantsync.diffdetective.diff.difftree.CodeType#name name of their code type}. - * @author Paul Bittner - */ -public class CollapseElementaryPatterns implements DiffTreeTransformer { - private final DiffTreeTransformer relabelNodes; - - /** - * Creates a new transformation that will use the given catalog of elementary patterns - * to relabel {@link DiffNode#isCode() artifact} nodes. - * @param patterns Catalog of patterns to match on artifact nodes. - */ - public CollapseElementaryPatterns(final ElementaryPatternCatalogue patterns) { - relabelNodes = new RelabelNodes(d -> { - if (d.isCode()) { - return patterns.match(d).getName(); - } else { - return d.codeType.name; - } - }); - } - - @Override - public void transform(DiffTree diffTree) { - relabelNodes.transform(diffTree); - } - - @Override - public List> getDependencies() { - return relabelNodes.getDependencies(); - } -} diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CollapseNestedNonEditedMacros.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CollapseNestedNonEditedAnnotations.java similarity index 85% rename from src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CollapseNestedNonEditedMacros.java rename to src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CollapseNestedNonEditedAnnotations.java index adc367e69..737840218 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CollapseNestedNonEditedMacros.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CollapseNestedNonEditedAnnotations.java @@ -2,7 +2,7 @@ import org.prop4j.And; import org.prop4j.Node; -import org.variantsync.diffdetective.diff.difftree.CodeType; +import org.variantsync.diffdetective.diff.difftree.NodeType; import org.variantsync.diffdetective.diff.difftree.DiffNode; import org.variantsync.diffdetective.diff.difftree.DiffTree; import org.variantsync.diffdetective.diff.difftree.DiffType; @@ -14,11 +14,11 @@ import java.util.Stack; /** - * Collapses chains of nested non-edited macros. - * Imagine a macro node that is unchanged and has the same parent before and after the edit that - * is again an unchanged macro node that has the same parent before and after the edit, and so on. - * Such chains NON_IF -> NON_IF -> NON_IF -> ... -> NON_IF can be collapsed - * into a single unchanged macro node with the formulas of all nodes combined (by AND). + * Collapses chains of nested non-edited annotations. + * Imagine a annotation node that is unchanged and has the same parent before and after the edit + * that is again an unchanged annotation node that has the same parent before and after the edit, + * and so on. Such chains NON_IF -> NON_IF -> NON_IF -> ... -> NON_IF can be collapsed + * into a single unchanged annotation node with the formulas of all nodes combined (by AND). * This collapse is realized by this transformer. * * Fun fact: We implemented this transformation because of the @@ -26,7 +26,7 @@ * * @author Paul Bittner */ -public class CollapseNestedNonEditedMacros implements DiffTreeTransformer { +public class CollapseNestedNonEditedAnnotations implements DiffTreeTransformer { private final List> chainCandidates = new ArrayList<>(); private final List> chains = new ArrayList<>(); @@ -66,7 +66,7 @@ private void finalize(Stack chain) { } private void findChains(DiffTreeTraversal traversal, DiffNode subtree) { - if (subtree.isNon() && subtree.isMacro()) { + if (subtree.isNon() && subtree.isAnnotation()) { if (isHead(subtree)) { final Stack s = new Stack<>(); s.push(subtree); @@ -102,7 +102,7 @@ private static void collapseChain(Stack chain) { while (!chain.isEmpty()) { lastPopped = chain.pop(); - switch (lastPopped.codeType) { + switch (lastPopped.nodeType) { case IF -> featureMappings.add(lastPopped.getAfterFeatureMapping()); case ELSE, ELIF -> { @@ -113,9 +113,8 @@ private static void collapseChain(Stack chain) { lastPopped = chain.pop(); } } - case ROOT, CODE -> - throw new RuntimeException("Unexpected code type " + lastPopped.codeType + " within macro chain!"); - case ENDIF -> {} + case ARTIFACT -> + throw new RuntimeException("Unexpected node type " + lastPopped.nodeType + " within annotation chain!"); } } @@ -127,7 +126,7 @@ private static void collapseChain(Stack chain) { ArrayList lines = new ArrayList(); lines.add("$Collapsed Nested Annotations$"); final DiffNode merged = new DiffNode( - DiffType.NON, CodeType.IF, + DiffType.NON, NodeType.IF, head.getFromLine(), head.getToLine(), new And(featureMappings.toArray()), lines); @@ -178,6 +177,6 @@ private static boolean isEnd(DiffNode d) { @Override public String toString() { - return "CollapseNestedNonEditedMacros"; + return "CollapseNestedNonEditedAnnotations"; } } diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CutNonEditedSubtrees.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CutNonEditedSubtrees.java index fae5e9ed8..cdc954813 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CutNonEditedSubtrees.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/CutNonEditedSubtrees.java @@ -12,7 +12,7 @@ * A subtree is unedited, if all nodes in it are unchanged and all nodes have the same * before and after parent. * Such subtrees just model state but not an edit and thus are removed from the validation - * of our elementary edit patterns in our ESEC/FSE'22 paper. + * of our edit classes in our ESEC/FSE'22 paper. * @author Paul Bittner */ public class CutNonEditedSubtrees implements DiffTreeTransformer, DiffTreeVisitor { diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/FeatureExpressionFilter.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/FeatureExpressionFilter.java index 9d4851d69..de4037243 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/FeatureExpressionFilter.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/FeatureExpressionFilter.java @@ -17,13 +17,13 @@ public record FeatureExpressionFilter(Predicate isFeatureAnnotation) i public void transform(DiffTree diffTree) { final List illegalNodes = new ArrayList<>(); diffTree.forAll(node -> { - if (node.isMacro() && !isFeatureAnnotation.test(node)) { + if (node.isAnnotation() && !isFeatureAnnotation.test(node)) { illegalNodes.add(node); } }); - for (final DiffNode illegalMacro : illegalNodes) { - diffTree.removeNode(illegalMacro); + for (final DiffNode illegalAnnotation : illegalNodes) { + diffTree.removeNode(illegalAnnotation); } } } diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/LabelWithEditClass.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/LabelWithEditClass.java new file mode 100644 index 000000000..d64a5fa55 --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/LabelWithEditClass.java @@ -0,0 +1,43 @@ +package org.variantsync.diffdetective.diff.difftree.transform; + +import org.variantsync.diffdetective.diff.difftree.DiffNode; +import org.variantsync.diffdetective.diff.difftree.DiffTree; +import org.variantsync.diffdetective.editclass.EditClassCatalogue; + +import java.util.List; + +/** + * Label all nodes with their edit class. + * This transformation leaves the graph structure of the {@link DiffTree} unchanged. + * All {@link DiffNode#isArtifact() artifact} nodes will be labeled by their respective edit class. + * All other nodes will be labeled by the {@link org.variantsync.diffdetective.diff.difftree.NodeType#name name of their node type}. + * @author Paul Bittner + */ +public class LabelWithEditClass implements DiffTreeTransformer { + private final DiffTreeTransformer relabelNodes; + + /** + * Creates a new transformation that will use the given catalog of edit classes + * to relabel {@link DiffNode#isArtifact() artifact} nodes. + * @param editClasses Catalog of edit classes to match on artifact nodes. + */ + public LabelWithEditClass(final EditClassCatalogue editClasses) { + relabelNodes = new RelabelNodes(d -> { + if (d.isArtifact()) { + return editClasses.match(d).getName(); + } else { + return d.nodeType.name; + } + }); + } + + @Override + public void transform(DiffTree diffTree) { + relabelNodes.transform(diffTree); + } + + @Override + public List> getDependencies() { + return relabelNodes.getDependencies(); + } +} diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/NaiveMovedCodeDetection.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/NaiveMovedArtifactDetection.java similarity index 62% rename from src/main/java/org/variantsync/diffdetective/diff/difftree/transform/NaiveMovedCodeDetection.java rename to src/main/java/org/variantsync/diffdetective/diff/difftree/transform/NaiveMovedArtifactDetection.java index e6a48347c..9882b19ee 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/NaiveMovedCodeDetection.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/NaiveMovedArtifactDetection.java @@ -10,16 +10,16 @@ import java.util.List; /** - * Finds code nodes whose label is exactly equal. If one of those nodes was added and the other one was removed, - * MovedCodeDetection merges them and interprets this edit as a move instead of separate insertion and deletion. - * A possible future extension would be to account for multiline code nodes to not only check for exact equality of text + * Finds artifact nodes whose label is exactly equal. If one of those nodes was added and the other one was removed, + * NaiveMovedArtifactDetection merges them and interprets this edit as a move instead of separate insertion and deletion. + * A possible future extension would be to account for multiline artifact nodes to not only check for exact equality of text * but for each line in the nodes individually. * @author Paul Bittner */ -public class NaiveMovedCodeDetection implements DiffTreeTransformer { +public class NaiveMovedArtifactDetection implements DiffTreeTransformer { @Override public void transform(final DiffTree diffTree) { - final List> twins = findCodeTwins(diffTree); + final List> twins = findArtifactTwins(diffTree); for (final Pair twin : twins) { final DiffNode added; @@ -46,22 +46,22 @@ public void transform(final DiffTree diffTree) { } } - private static List> findCodeTwins(final DiffTree diffTree) { - final List codeNodes = diffTree.computeCodeNodes(); + private static List> findArtifactTwins(final DiffTree diffTree) { + final List artifactNodes = diffTree.computeArtifactNodes(); final List> twins = new ArrayList<>(); - while (!codeNodes.isEmpty()) { + while (!artifactNodes.isEmpty()) { // Always inspect last element as it's the cheapest to remove. - final DiffNode code = codeNodes.get(codeNodes.size() - 1); - codeNodes.remove(code); + final DiffNode artifact = artifactNodes.get(artifactNodes.size() - 1); + artifactNodes.remove(artifact); // If the node was inserted or removed ... - if (!code.isNon()) { - // ... check if the opposite operation was applied to the same code somewhere else. - final DiffNode twin = findTwinOf(code, codeNodes); + if (!artifact.isNon()) { + // ... check if the opposite operation was applied to the same artifact somewhere else. + final DiffNode twin = findTwinOf(artifact, artifactNodes); if (twin != null) { - twins.add(new Pair<>(code, twin)); - codeNodes.remove(twin); + twins.add(new Pair<>(artifact, twin)); + artifactNodes.remove(twin); } } } @@ -69,17 +69,17 @@ private static List> findCodeTwins(final DiffTree diffT return twins; } - private static DiffNode findTwinOf(final DiffNode code, final List codeNodes) { - final DiffType weAreLookingFor = code.diffType.inverse(); - final String text = code.getLabel().trim(); + private static DiffNode findTwinOf(final DiffNode artifact, final List artifactNodes) { + final DiffType weAreLookingFor = artifact.diffType.inverse(); + final String text = artifact.getLabel().trim(); if (text.isEmpty()) { return null; } - // We assert the following as we removed the code node in transform. - // assert(!codeNodes.contains(code)); - for (final DiffNode other : codeNodes) { + // We assert the following as we removed the artifact node in transform. + // assert(!artifactNodes.contains(artifact)); + for (final DiffNode other : artifactNodes) { if (other.diffType == weAreLookingFor && text.equals(other.getLabel().trim())) { return other; } @@ -97,6 +97,6 @@ private static DiffNode merge(final DiffNode added, final DiffNode removed) { final DiffLineNumber from = new DiffLineNumber(Math.min(addFrom.inDiff, remFrom.inDiff), remFrom.beforeEdit, addFrom.afterEdit); final DiffLineNumber to = new DiffLineNumber(Math.max(addTo.inDiff, remTo.inDiff), remTo.beforeEdit, addTo.afterEdit); - return DiffNode.createCode(DiffType.NON, from, to, added.getLabel() /* equals removed.getText() */); + return DiffNode.createArtifact(DiffType.NON, from, to, added.getLabel() /* equals removed.getText() */); } } diff --git a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/Starfold.java b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/Starfold.java index 1d1dffedb..1baae6711 100644 --- a/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/Starfold.java +++ b/src/main/java/org/variantsync/diffdetective/diff/difftree/transform/Starfold.java @@ -12,8 +12,8 @@ /** * Starfold reduces redundancy in edited leaves. * It identifies stars and simplifies its arms. - * A star is a non-edited macro node together with all its children - * that are code nodes and leaves. + * A star is a non-edited annotation node together with all its children + * that are artifact nodes and leaves. * The Starfold collapses all these children to a single child for each time. * This means, all inserted star-children will be merged into a single child, and for deletions respectively. * @author Paul Bittner, Benjamin Moosherr @@ -46,11 +46,11 @@ public static Starfold IgnoreNodeOrder() { @Override public void transform(DiffTree diffTree) { // All non-artifact nodes are potential roots of stars. - final List macroNodes = diffTree.computeAllNodesThat(Starfold::isStarRoot); -// System.out.println("Inspecting " + macroNodes.size() + " star roots."); - for (DiffNode macro : macroNodes) { -// System.out.println("Found star root " + macro); - foldStar(macro); + final List annotations = diffTree.computeAllNodesThat(Starfold::isStarRoot); +// System.out.println("Inspecting " + annotations.size() + " star roots."); + for (DiffNode annotation : annotations) { +// System.out.println("Found star root " + annotation); + foldStar(annotation); } } @@ -90,7 +90,7 @@ private void mergeArms(final DiffNode starRoot, Time time, final DiffType target final int targetIndex = starRoot.indexOfChild(starArms.get(0)); starRoot.removeChildren(starArms); starRoot.insertChildAt( - DiffNode.createCode( + DiffNode.createArtifact( targetDiffType, DiffLineNumber.Invalid(), DiffLineNumber.Invalid(), @@ -103,10 +103,10 @@ private void mergeArms(final DiffNode starRoot, Time time, final DiffType target } private static boolean isStarRoot(final DiffNode node) { - return !node.isCode() && node.isNon(); + return !node.isArtifact() && node.isNon(); } private static boolean isStarArm(final DiffNode node) { - return node.isLeaf() && node.isCode(); + return node.isLeaf() && node.isArtifact(); } } diff --git a/src/main/java/org/variantsync/diffdetective/editclass/EditClass.java b/src/main/java/org/variantsync/diffdetective/editclass/EditClass.java new file mode 100644 index 000000000..18cbb94f5 --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/editclass/EditClass.java @@ -0,0 +1,52 @@ +package org.variantsync.diffdetective.editclass; + +import org.variantsync.diffdetective.diff.difftree.DiffNode; +import org.variantsync.diffdetective.diff.difftree.DiffTree; +import org.variantsync.diffdetective.diff.difftree.DiffType; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; + +/** + * Abstract edit class according to our ESEC/FSE'22 paper. + * @author Paul Bittner, Sören Viegener + */ +public abstract class EditClass extends Pattern { + private final DiffType diffType; + + /** + * Each edit class handles exactly one DiffType. + * @param name unique identifier (see {@link Pattern}). + * @param diffType This edit class matches only {@link DiffNode}s of the given {@link DiffType}. + */ + public EditClass(final String name, final DiffType diffType) { + super(name); + this.diffType = diffType; + } + + /** + * Returns the diff type nodes matched by this edit class. + */ + public DiffType getDiffType() { + return diffType; + } + + /** + * Returns true iff the given node matches this edit class. + * @param artifactNode Node which has node type ARTIFACT and whose DiffType is the same as {@link getDiffType()}. + */ + protected abstract boolean matchesArtifactNode(DiffNode artifactNode); + + /** + * Returns true if this edit class matches the given node and is an artifact. + */ + @Override + public final boolean matches(DiffNode node) { + return node.isArtifact() && node.diffType == diffType && matchesArtifactNode(node); + } + + /** + * Returns true iff this edit class matches at leat one node on the given tree. + */ + public boolean anyMatch(final DiffTree t) { + return t.anyMatch(this::matches); + } +} diff --git a/src/main/java/org/variantsync/diffdetective/editclass/EditClassCatalogue.java b/src/main/java/org/variantsync/diffdetective/editclass/EditClassCatalogue.java new file mode 100644 index 000000000..3a1709e57 --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/editclass/EditClassCatalogue.java @@ -0,0 +1,61 @@ +package org.variantsync.diffdetective.editclass; + +import org.variantsync.diffdetective.diff.difftree.DiffNode; +import org.variantsync.diffdetective.diff.difftree.DiffType; + +import java.util.List; +import java.util.Map; + +/** + * Interface for custom catalogs of edit classes. + * @author Paul Bittner + */ +public interface EditClassCatalogue { + /** + * Gives a list of all edit classes in this catalogue. + * The list should be constant and immutable (i.e., the very same list is returned each time all is invoked). + * The edit class should be immutable, too. + * @return a constant list of all edit classes in this catalogue. + */ + List all(); + + /** + * Returns a mapping from diff types to the edit classes that may match nodes of the given diff type. + * The returned map as well as all its values should be immutable and constant. * + * @return A classification of edit classes by their diff types. + */ + Map> byType(); + + /** + * Returns the edit class that matches the given node. + * Each node matches exactly one edit class. + * @param node The node of which to find its edit class. + * @return Returns the edit class that matches the given node. + */ + default EditClass match(DiffNode node) + { + if (!node.isArtifact()) { + throw new IllegalArgumentException("Expected an artifact node but got " + node.nodeType + "!"); + } + + final List classessToCheck = byType().get(node.diffType); + + EditClass match = null; + for (final EditClass p : classessToCheck) { + if (p.matches(node)) { + if (match != null) { + throw new RuntimeException("BUG: Error in edit class definition!\n" + + "Node " + node + " matched " + match + " and " + p + "!"); + } + match = p; + } + } + + if (match == null) { + throw new RuntimeException("BUG: Error in edit class definition!\n" + + "Node " + node + " did not match any edit class!"); + } + + return match; + } +} diff --git a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/AddToPC.java b/src/main/java/org/variantsync/diffdetective/editclass/proposed/AddToPC.java similarity index 50% rename from src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/AddToPC.java rename to src/main/java/org/variantsync/diffdetective/editclass/proposed/AddToPC.java index dac7b4e78..75eeb9dad 100644 --- a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/AddToPC.java +++ b/src/main/java/org/variantsync/diffdetective/editclass/proposed/AddToPC.java @@ -1,20 +1,20 @@ -package org.variantsync.diffdetective.pattern.elementary.proposed; +package org.variantsync.diffdetective.editclass.proposed; import org.variantsync.diffdetective.diff.difftree.DiffNode; import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; +import org.variantsync.diffdetective.editclass.EditClass; /** - * Our AddToPC pattern from the ESEC/FSE'22 paper. + * Our AddToPC edit class from the ESEC/FSE'22 paper. * @author Paul Bittner, Sören Viegener */ -final class AddToPC extends ElementaryPattern { +final class AddToPC extends EditClass { AddToPC() { super("AddToPC", DiffType.ADD); } @Override - protected boolean matchesCodeNode(DiffNode node) { + protected boolean matchesArtifactNode(DiffNode node) { return !node.getAfterParent().isAdd(); } } diff --git a/src/main/java/org/variantsync/diffdetective/editclass/proposed/AddWithMapping.java b/src/main/java/org/variantsync/diffdetective/editclass/proposed/AddWithMapping.java new file mode 100644 index 000000000..679a0255e --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/editclass/proposed/AddWithMapping.java @@ -0,0 +1,20 @@ +package org.variantsync.diffdetective.editclass.proposed; + +import org.variantsync.diffdetective.diff.difftree.DiffNode; +import org.variantsync.diffdetective.diff.difftree.DiffType; +import org.variantsync.diffdetective.editclass.EditClass; + +/** + * Our AddWithMapping edit class from the ESEC/FSE'22 paper. + * @author Paul Bittner, Sören Viegener + */ +final class AddWithMapping extends EditClass { + AddWithMapping() { + super("AddWithMapping", DiffType.ADD); + } + + @Override + protected boolean matchesArtifactNode(DiffNode artifactNode) { + return artifactNode.getAfterParent().isAdd(); + } +} diff --git a/src/main/java/org/variantsync/diffdetective/editclass/proposed/Generalization.java b/src/main/java/org/variantsync/diffdetective/editclass/proposed/Generalization.java new file mode 100644 index 000000000..8cfb6e4aa --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/editclass/proposed/Generalization.java @@ -0,0 +1,24 @@ +package org.variantsync.diffdetective.editclass.proposed; + +import org.prop4j.Node; +import org.variantsync.diffdetective.analysis.logic.SAT; +import org.variantsync.diffdetective.diff.difftree.DiffNode; +import org.variantsync.diffdetective.diff.difftree.DiffType; +import org.variantsync.diffdetective.editclass.EditClass; + +/** + * Our Generalization edit class from the ESEC/FSE'22 paper. + * @author Paul Bittner, Sören Viegener + */ +final class Generalization extends EditClass { + Generalization() { + super("Generalization", DiffType.NON); + } + + @Override + protected boolean matchesArtifactNode(DiffNode artifactNode) { + final Node pcb = artifactNode.getBeforeFeatureMapping(); + final Node pca = artifactNode.getAfterFeatureMapping(); + return SAT.implies(pcb, pca) && !SAT.implies(pca, pcb); + } +} diff --git a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/ProposedElementaryPatterns.java b/src/main/java/org/variantsync/diffdetective/editclass/proposed/ProposedEditClasses.java similarity index 57% rename from src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/ProposedElementaryPatterns.java rename to src/main/java/org/variantsync/diffdetective/editclass/proposed/ProposedEditClasses.java index c4cd95cf1..f8a3f278a 100644 --- a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/ProposedElementaryPatterns.java +++ b/src/main/java/org/variantsync/diffdetective/editclass/proposed/ProposedEditClasses.java @@ -1,78 +1,78 @@ -package org.variantsync.diffdetective.pattern.elementary.proposed; +package org.variantsync.diffdetective.editclass.proposed; import org.prop4j.Node; import org.variantsync.diffdetective.analysis.logic.SAT; import org.variantsync.diffdetective.diff.difftree.DiffNode; import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPatternCatalogue; import org.variantsync.diffdetective.util.Assert; +import org.variantsync.diffdetective.editclass.EditClass; +import org.variantsync.diffdetective.editclass.EditClassCatalogue; import java.util.*; /** - * The catalog of elementary edit patterns proposed in our ESEC/FSE'22 paper. + * The catalog of edit classes proposed in our ESEC/FSE'22 paper. * @author Paul Bittner */ -public class ProposedElementaryPatterns implements ElementaryPatternCatalogue { - public static final ElementaryPattern AddToPC = new AddToPC(); - public static final ElementaryPattern AddWithMapping = new AddWithMapping(); - public static final ElementaryPattern RemFromPC = new RemFromPC(); - public static final ElementaryPattern RemWithMapping = new RemWithMapping(); - public static final ElementaryPattern Specialization = new Specialization(); - public static final ElementaryPattern Generalization = new Generalization(); - public static final ElementaryPattern Reconfiguration = new Reconfiguration(); - public static final ElementaryPattern Refactoring = new Refactoring(); - public static final ElementaryPattern Untouched = new Untouched(); +public class ProposedEditClasses implements EditClassCatalogue { + public static final EditClass AddToPC = new AddToPC(); + public static final EditClass AddWithMapping = new AddWithMapping(); + public static final EditClass RemFromPC = new RemFromPC(); + public static final EditClass RemWithMapping = new RemWithMapping(); + public static final EditClass Specialization = new Specialization(); + public static final EditClass Generalization = new Generalization(); + public static final EditClass Reconfiguration = new Reconfiguration(); + public static final EditClass Refactoring = new Refactoring(); + public static final EditClass Untouched = new Untouched(); /** - * A list of all nine patterns in their order of appearance in the paper. + * A list of all nine edit classes in their order of appearance in the paper. */ - public static final List All = List.of( + public static final List All = List.of( AddToPC, AddWithMapping, RemFromPC, RemWithMapping, Specialization, Generalization, Reconfiguration, Refactoring, Untouched ); /** - * A map of all nine edit patterns, indexed by their DiffType. + * A map of all nine edit classes, indexed by their DiffType. */ - public static final Map> PatternsByType; + public static final Map> EditClassesByType; /** * Singleton instance of this catalog. */ - public static final ProposedElementaryPatterns Instance = new ProposedElementaryPatterns(); + public static final ProposedEditClasses Instance = new ProposedEditClasses(); static { - PatternsByType = new HashMap<>(); - for (final ElementaryPattern ap : All) { - PatternsByType.computeIfAbsent(ap.getDiffType(), d -> new ArrayList<>()).add(ap); + EditClassesByType = new HashMap<>(); + for (final EditClass ap : All) { + EditClassesByType.computeIfAbsent(ap.getDiffType(), d -> new ArrayList<>()).add(ap); } } - private ProposedElementaryPatterns() {} + private ProposedEditClasses() {} @Override - public List all() { + public List all() { return All; } @Override - public Map> byType() { - return PatternsByType; + public Map> byType() { + return EditClassesByType; } @Override - public ElementaryPattern match(DiffNode node) + public EditClass match(DiffNode node) { - // This is an inlined version of all patterns to optimize runtime when detecting the pattern of a certain node. + // This is an inlined version of all edit classes to optimize runtime when detecting the class of a certain node. // Because this compiles, we know that each branch terminates and returns a value. - // Each returned value is not null but an actual pattern object. - // Since the given node may be any node, we have proven that every node is classified by at least one pattern. - if (!node.isCode()) { - throw new IllegalArgumentException("Expected a code node but got " + node.codeType + "!"); + // Each returned value is not null but an actual edit class object. + // Since the given node may be any node, we have proven that every node is classified by at least one edit class. + if (!node.isArtifact()) { + throw new IllegalArgumentException("Expected an artifact node but got " + node.nodeType + "!"); } if (node.isAdd()) { @@ -133,11 +133,11 @@ public ElementaryPattern match(DiffNode node) } /** - * Returns the elementary edit pattern that has the given name. - * Returns empty of no pattern has the given name. + * Returns the edit class that has the given name. + * Returns empty of no edit class has the given name. */ - public Optional fromName(String label) { - for (final ElementaryPattern p : All) { + public Optional fromName(String label) { + for (final EditClass p : All) { if (p.getName().equals(label)) { return Optional.of(p); } diff --git a/src/main/java/org/variantsync/diffdetective/editclass/proposed/Reconfiguration.java b/src/main/java/org/variantsync/diffdetective/editclass/proposed/Reconfiguration.java new file mode 100644 index 000000000..cbe7de735 --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/editclass/proposed/Reconfiguration.java @@ -0,0 +1,24 @@ +package org.variantsync.diffdetective.editclass.proposed; + +import org.prop4j.Node; +import org.variantsync.diffdetective.analysis.logic.SAT; +import org.variantsync.diffdetective.diff.difftree.DiffNode; +import org.variantsync.diffdetective.diff.difftree.DiffType; +import org.variantsync.diffdetective.editclass.EditClass; + +/** + * Our Reconfiguration edit class from the ESEC/FSE'22 paper. + * @author Paul Bittner, Sören Viegener + */ +final class Reconfiguration extends EditClass { + Reconfiguration() { + super("Reconfiguration", DiffType.NON); + } + + @Override + protected boolean matchesArtifactNode(DiffNode artifactNode) { + final Node pcb = artifactNode.getBeforeFeatureMapping(); + final Node pca = artifactNode.getAfterFeatureMapping(); + return !SAT.implies(pcb, pca) && !SAT.implies(pca, pcb); + } +} diff --git a/src/main/java/org/variantsync/diffdetective/editclass/proposed/Refactoring.java b/src/main/java/org/variantsync/diffdetective/editclass/proposed/Refactoring.java new file mode 100644 index 000000000..e2a2c82ca --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/editclass/proposed/Refactoring.java @@ -0,0 +1,24 @@ +package org.variantsync.diffdetective.editclass.proposed; + +import org.prop4j.Node; +import org.variantsync.diffdetective.analysis.logic.SAT; +import org.variantsync.diffdetective.diff.difftree.DiffNode; +import org.variantsync.diffdetective.diff.difftree.DiffType; +import org.variantsync.diffdetective.editclass.EditClass; + +/** + * Our Refactoring edit class from the ESEC/FSE'22 paper. + * @author Paul Bittner, Sören Viegener + */ +final class Refactoring extends EditClass { + Refactoring() { + super("Refactoring", DiffType.NON); + } + + @Override + protected boolean matchesArtifactNode(DiffNode artifactNode) { + final Node pcb = artifactNode.getBeforeFeatureMapping(); + final Node pca = artifactNode.getAfterFeatureMapping(); + return SAT.equivalent(pcb, pca) && !artifactNode.beforePathEqualsAfterPath(); + } +} diff --git a/src/main/java/org/variantsync/diffdetective/editclass/proposed/RemFromPC.java b/src/main/java/org/variantsync/diffdetective/editclass/proposed/RemFromPC.java new file mode 100644 index 000000000..436684ccc --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/editclass/proposed/RemFromPC.java @@ -0,0 +1,20 @@ +package org.variantsync.diffdetective.editclass.proposed; + +import org.variantsync.diffdetective.diff.difftree.DiffNode; +import org.variantsync.diffdetective.diff.difftree.DiffType; +import org.variantsync.diffdetective.editclass.EditClass; + +/** + * Our RemFromPC edit class from the ESEC/FSE'22 paper. + * @author Paul Bittner, Sören Viegener + */ +final class RemFromPC extends EditClass { + RemFromPC() { + super("RemFromPC", DiffType.REM); + } + + @Override + protected boolean matchesArtifactNode(DiffNode artifactNode) { + return !artifactNode.getBeforeParent().isRem(); + } +} diff --git a/src/main/java/org/variantsync/diffdetective/editclass/proposed/RemWithMapping.java b/src/main/java/org/variantsync/diffdetective/editclass/proposed/RemWithMapping.java new file mode 100644 index 000000000..a527e7f9d --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/editclass/proposed/RemWithMapping.java @@ -0,0 +1,20 @@ +package org.variantsync.diffdetective.editclass.proposed; + +import org.variantsync.diffdetective.diff.difftree.DiffNode; +import org.variantsync.diffdetective.diff.difftree.DiffType; +import org.variantsync.diffdetective.editclass.EditClass; + +/** + * Our RemWithMapping edit class from the ESEC/FSE'22 paper. + * @author Paul Bittner, Sören Viegener + */ +final class RemWithMapping extends EditClass { + RemWithMapping() { + super("RemWithMapping", DiffType.REM); + } + + @Override + protected boolean matchesArtifactNode(DiffNode artifactNode) { + return artifactNode.getBeforeParent().isRem(); + } +} diff --git a/src/main/java/org/variantsync/diffdetective/editclass/proposed/Specialization.java b/src/main/java/org/variantsync/diffdetective/editclass/proposed/Specialization.java new file mode 100644 index 000000000..0ef55ac55 --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/editclass/proposed/Specialization.java @@ -0,0 +1,24 @@ +package org.variantsync.diffdetective.editclass.proposed; + +import org.prop4j.Node; +import org.variantsync.diffdetective.analysis.logic.SAT; +import org.variantsync.diffdetective.diff.difftree.DiffNode; +import org.variantsync.diffdetective.diff.difftree.DiffType; +import org.variantsync.diffdetective.editclass.EditClass; + +/** + * Our Specialization edit class from the ESEC/FSE'22 paper. + * @author Paul Bittner, Sören Viegener + */ +final class Specialization extends EditClass { + Specialization() { + super("Specialization", DiffType.NON); + } + + @Override + protected boolean matchesArtifactNode(DiffNode artifactNode) { + final Node pcb = artifactNode.getBeforeFeatureMapping(); + final Node pca = artifactNode.getAfterFeatureMapping(); + return !SAT.implies(pcb, pca) && SAT.implies(pca, pcb); + } +} diff --git a/src/main/java/org/variantsync/diffdetective/editclass/proposed/Untouched.java b/src/main/java/org/variantsync/diffdetective/editclass/proposed/Untouched.java new file mode 100644 index 000000000..488ab3fa8 --- /dev/null +++ b/src/main/java/org/variantsync/diffdetective/editclass/proposed/Untouched.java @@ -0,0 +1,24 @@ +package org.variantsync.diffdetective.editclass.proposed; + +import org.prop4j.Node; +import org.variantsync.diffdetective.analysis.logic.SAT; +import org.variantsync.diffdetective.diff.difftree.DiffNode; +import org.variantsync.diffdetective.diff.difftree.DiffType; +import org.variantsync.diffdetective.editclass.EditClass; + +/** + * Our Untouched edit class from the ESEC/FSE'22 paper. + * @author Paul Bittner, Sören Viegener + */ +public class Untouched extends EditClass { + Untouched() { + super("Untouched", DiffType.NON); + } + + @Override + protected boolean matchesArtifactNode(DiffNode artifactNode) { + final Node pcb = artifactNode.getBeforeFeatureMapping(); + final Node pca = artifactNode.getAfterFeatureMapping(); + return SAT.equivalent(pcb, pca) && artifactNode.beforePathEqualsAfterPath(); + } +} diff --git a/src/main/java/org/variantsync/diffdetective/metadata/ElementaryPatternCount.java b/src/main/java/org/variantsync/diffdetective/metadata/EditClassCount.java similarity index 58% rename from src/main/java/org/variantsync/diffdetective/metadata/ElementaryPatternCount.java rename to src/main/java/org/variantsync/diffdetective/metadata/EditClassCount.java index 91367e053..b5ed6af61 100644 --- a/src/main/java/org/variantsync/diffdetective/metadata/ElementaryPatternCount.java +++ b/src/main/java/org/variantsync/diffdetective/metadata/EditClassCount.java @@ -1,9 +1,9 @@ package org.variantsync.diffdetective.metadata; import org.variantsync.diffdetective.diff.CommitDiff; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPatternCatalogue; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.editclass.EditClass; +import org.variantsync.diffdetective.editclass.EditClassCatalogue; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.util.Assert; import org.variantsync.functjonal.Functjonal; import org.variantsync.functjonal.category.InplaceSemigroup; @@ -15,10 +15,10 @@ import java.util.stream.Collectors; /** - * Metadata that tracks how often elementary edit patterns were matched. + * Metadata that tracks how often edit classes were matched. * @author Paul Bittner */ -public class ElementaryPatternCount implements Metadata { +public class EditClassCount implements Metadata { /** * Counts the occurrences of a data point across commits. */ @@ -65,66 +65,67 @@ public String toString() { } /** - * Composes two pattern counts by composing their respective occurrence counts for elementary edit patterns. + * Composes two edit class counts by composing their respective occurrence counts for each edit + * class. * @see Occurrences#ISEMIGROUP */ - public static InplaceSemigroup ISEMIGROUP = (a, b) -> MergeMap.putAllValues( + public static InplaceSemigroup ISEMIGROUP = (a, b) -> MergeMap.putAllValues( a.occurences, b.occurences, Occurrences.ISEMIGROUP ); - private final LinkedHashMap occurences; + private final LinkedHashMap occurences; /** - * Create a new empty count with the {@link ProposedElementaryPatterns default pattern catalog}. + * Create a new empty count with the {@link ProposedEditClasses default edit class catalog}. */ - public ElementaryPatternCount() { - this(ProposedElementaryPatterns.Instance); + public EditClassCount() { + this(ProposedEditClasses.Instance); } /** - * Create a new empty count that reports occurrences of the given elementary edit patterns. - * @param patterns Patterns whose occurrences should be counted. + * Create a new empty count that reports occurrences of the given edit class. + * @param editClasses edit classes whose occurrences should be counted. */ - public ElementaryPatternCount(final ElementaryPatternCatalogue patterns) { + public EditClassCount(final EditClassCatalogue editClasses) { occurences = new LinkedHashMap<>(); - for (final ElementaryPattern p : patterns.all()) { + for (final EditClass p : editClasses.all()) { occurences.put(p, new Occurrences()); } } /** - * Report the match of the given pattern in the given commit diff. - * The count of the given pattern will be incremented and the commit will be memorized as - * one of the commits in which this elementary pattern was matched. - * @param pattern The pattern that was matched. - * @param commit The CommitDiff in which the pattern match occurred. - * @throws AssertionError when the given pattern is not a pattern of this counds catalog. - * @see #ElementaryPatternCount(ElementaryPatternCatalogue) + * Report the match of the given edit class in the given commit diff. + * The count of the given edit class will be incremented and the commit will be memorized as + * one of the commits in which this edit class was matched. + * @param editClass The edit class that was matched. + * @param commit The CommitDiff in which the edit class match occurred. + * @throws AssertionError when the given edit class is not present this counts catalog. + * @see #EditClassCount(EditClassCatalogue) */ - public void reportOccurrenceFor(final ElementaryPattern pattern, CommitDiff commit) { + public void reportOccurrenceFor(final EditClass editClass, CommitDiff commit) { Assert.assertTrue( - occurences.containsKey(pattern), - () -> "Reported unkown pattern \"" - + pattern.getName() + occurences.containsKey(editClass), + () -> "Reported unkown edit class \"" + + editClass.getName() + "\" but expected one of " + occurences.keySet().stream() - .map(ElementaryPattern::getName) + .map(EditClass::getName) .collect(Collectors.joining()) + "!" ); - occurences.get(pattern).increment(commit); + occurences.get(editClass).increment(commit); } /** - * Parses lines containing {@link ElementaryPattern elementary patterns} to {@link ElementaryPatternCount}. + * Parses lines containing {@link EditClass edit classes} to {@link EditClassCount}. * - * @param lines Lines containing {@link ElementaryPattern elementary patterns} to be parsed - * @return {@link ElementaryPatternCount} + * @param lines Lines containing {@link EditClass edit classes} to be parsed + * @return {@link EditClassCount} */ - public static ElementaryPatternCount parse(final List lines, final String uuid) { - ElementaryPatternCount count = new ElementaryPatternCount(); + public static EditClassCount parse(final List lines, final String uuid) { + EditClassCount count = new EditClassCount(); String[] keyValuePair; String key; String value; @@ -133,17 +134,17 @@ public static ElementaryPatternCount parse(final List lines, final Strin int commits; for (final String line : lines) { keyValuePair = line.split(": "); - key = keyValuePair[0]; // elementary pattern + key = keyValuePair[0]; // edit class value = keyValuePair[1]; // key value content value = value.replaceAll("[{} ]", ""); // remove unnecessary symbols innerKeyValuePair = value.split(";"); total = Integer.parseInt(innerKeyValuePair[0].split("=")[1]); // total count commits = Integer.parseInt(innerKeyValuePair[1].split("=")[1]); - // get pattern from key + // get edit class from key final String finalKey = key; - ElementaryPattern pattern = ProposedElementaryPatterns.Instance.fromName(key).orElseThrow( - () -> new RuntimeException("Could not find Elementary Pattern with name " + finalKey) + EditClass editClass = ProposedEditClasses.Instance.fromName(key).orElseThrow( + () -> new RuntimeException("Could not find EditClass with name " + finalKey) ); Occurrences occurence = new Occurrences(); @@ -155,7 +156,7 @@ public static ElementaryPatternCount parse(final List lines, final Strin } // add occurrence - count.occurences.put(pattern, occurence); + count.occurences.put(editClass, occurence); } return count; @@ -165,7 +166,7 @@ public static ElementaryPatternCount parse(final List lines, final Strin public LinkedHashMap snapshot() { return Functjonal.bimap( occurences, - ElementaryPattern::getName, + EditClass::getName, Occurrences::toString, LinkedHashMap::new ); @@ -175,14 +176,14 @@ public LinkedHashMap snapshot() { * Mutates and returns first element. */ @Override - public InplaceSemigroup semigroup() { + public InplaceSemigroup semigroup() { return ISEMIGROUP; } /** - * Returns the current occurrence count for each considered elementary edit pattern. + * Returns the current occurrence count for each considered edit class. */ - public LinkedHashMap getOccurences() { + public LinkedHashMap getOccurences() { return occurences; } } diff --git a/src/main/java/org/variantsync/diffdetective/mining/DiffTreeMiner.java b/src/main/java/org/variantsync/diffdetective/mining/DiffTreeMiner.java index 58f0f2562..eea3a1541 100644 --- a/src/main/java/org/variantsync/diffdetective/mining/DiffTreeMiner.java +++ b/src/main/java/org/variantsync/diffdetective/mining/DiffTreeMiner.java @@ -16,7 +16,7 @@ import org.variantsync.diffdetective.diff.difftree.serialize.GraphFormat; import org.variantsync.diffdetective.diff.difftree.serialize.edgeformat.EdgeLabelFormat; import org.variantsync.diffdetective.diff.difftree.serialize.treeformat.CommitDiffDiffTreeLabelFormat; -import org.variantsync.diffdetective.diff.difftree.transform.CollapseNestedNonEditedMacros; +import org.variantsync.diffdetective.diff.difftree.transform.CollapseNestedNonEditedAnnotations; import org.variantsync.diffdetective.diff.difftree.transform.CutNonEditedSubtrees; import org.variantsync.diffdetective.diff.difftree.transform.DiffTreeTransformer; import org.variantsync.diffdetective.diff.difftree.transform.Starfold; @@ -50,7 +50,7 @@ public static List Postprocessing(final Repository reposito RunningExampleFinder.DefaultExamplesDirectory.resolve(repository == null ? "unknown" : repository.getRepositoryName()) )); } - processing.add(new CollapseNestedNonEditedMacros()); + processing.add(new CollapseNestedNonEditedAnnotations()); processing.add(Starfold.IgnoreNodeOrder()); return processing; } @@ -82,10 +82,10 @@ public static DiffTreeLineGraphExportOptions MiningExportOptions(final Repositor , EdgeFormat(nodeFormat) , new ExplainedFilter<>( DiffTreeFilter.notEmpty(), - DiffTreeFilter.moreThanOneCodeNode(), + DiffTreeFilter.moreThanOneArtifactNode(), /// We want to exclude patches that do not edit variability. - /// In particular, we noticed that most edits just insert or delete code (or replace it). - /// This is reasonable and was also observed in previous studies: Edits to code are more frequent than edits to variability. + /// In particular, we noticed that most edits just insert or delete artifacts (or replace it). + /// This is reasonable and was also observed in previous studies: Edits to artifacts are more frequent than edits to variability. /// Yet, such edits cannot reveal compositions of more complex edits to variability. /// We thus filter them. DiffTreeFilter.hasAtLeastOneEditToVariability() diff --git a/src/main/java/org/variantsync/diffdetective/mining/MiningTask.java b/src/main/java/org/variantsync/diffdetective/mining/MiningTask.java index 4f5922dc3..d20f18267 100644 --- a/src/main/java/org/variantsync/diffdetective/mining/MiningTask.java +++ b/src/main/java/org/variantsync/diffdetective/mining/MiningTask.java @@ -11,8 +11,8 @@ import org.variantsync.diffdetective.diff.difftree.transform.DiffTreeTransformer; import org.variantsync.diffdetective.diff.result.CommitDiffResult; import org.variantsync.diffdetective.metadata.ExplainedFilterSummary; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.editclass.EditClass; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.util.Clock; import org.variantsync.diffdetective.util.FileUtils; @@ -48,8 +48,8 @@ public AnalysisResult call() throws Exception { } /* - * We export all difftrees that match our filter criteria (e.g., has more than one elementary pattern). - * However, we count elementary patterns of all DiffTrees, even those that are not exported to Linegraph. + * We export all difftrees that match our filter criteria (e.g., match more than one edit class). + * However, we count edit classes of all DiffTrees, even those that are not exported to Linegraph. */ final CommitDiff commitDiff = commitDiffResult.diff().get(); final StringBuilder lineGraph = new StringBuilder(); @@ -57,10 +57,10 @@ public AnalysisResult call() throws Exception { options.analysisStrategy().onCommit(commitDiff, lineGraph.toString()); options.exportOptions().treeFilter().resetExplanations(); - // Count elementary patterns + // Count edit classes int numDiffTrees = 0; for (final PatchDiff patch : commitDiff.getPatchDiffs()) { - final PatchStatistics thisPatchesStatistics = new PatchStatistics(patch, ProposedElementaryPatterns.Instance); + final PatchStatistics thisPatchesStatistics = new PatchStatistics(patch, ProposedEditClasses.Instance); if (patch.isValid()) { final DiffTree t = patch.getDiffTree(); @@ -72,13 +72,13 @@ public AnalysisResult call() throws Exception { } t.forAll(node -> { - if (node.isCode()) { - final ElementaryPattern nodePattern = ProposedElementaryPatterns.Instance.match(node); - miningResult.elementaryPatternCounts.reportOccurrenceFor( - nodePattern, + if (node.isArtifact()) { + final EditClass editClass = ProposedEditClasses.Instance.match(node); + miningResult.editClassCounts.reportOccurrenceFor( + editClass, commitDiff ); - thisPatchesStatistics.elementaryPatternCount().increment(nodePattern); + thisPatchesStatistics.editClassCount().increment(editClass); } }); diff --git a/src/main/java/org/variantsync/diffdetective/mining/RWCompositePatternNodeFormat.java b/src/main/java/org/variantsync/diffdetective/mining/RWCompositePatternNodeFormat.java index caa38be39..84e2e4a23 100644 --- a/src/main/java/org/variantsync/diffdetective/mining/RWCompositePatternNodeFormat.java +++ b/src/main/java/org/variantsync/diffdetective/mining/RWCompositePatternNodeFormat.java @@ -2,20 +2,19 @@ import org.variantsync.diffdetective.diff.difftree.DiffNode; import org.variantsync.diffdetective.mining.formats.DebugMiningDiffNodeFormat; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; public class RWCompositePatternNodeFormat extends DebugMiningDiffNodeFormat { @Override public String toLabel(final DiffNode node) { - if (node.isCode()) { - return ProposedElementaryPatterns.Instance.match(node).getName() + "
" + node.getLabel(); + if (node.isArtifact()) { + return ProposedEditClasses.Instance.match(node).getName() + "
" + node.getLabel(); } else { - return node.diffType + "_" + switch (node.codeType) { - case ROOT -> "r"; + return node.diffType + "_" + switch (node.nodeType) { case IF -> "mapping
" + node.getLabel(); case ELSE -> "else"; case ELIF -> "elif
" + node.getLabel(); - default -> node.codeType + "
" + node.getLabel(); + default -> node.nodeType + "
" + node.getLabel(); }; } } diff --git a/src/main/java/org/variantsync/diffdetective/mining/RunningExampleFinder.java b/src/main/java/org/variantsync/diffdetective/mining/RunningExampleFinder.java index 6873c824c..3027ba793 100644 --- a/src/main/java/org/variantsync/diffdetective/mining/RunningExampleFinder.java +++ b/src/main/java/org/variantsync/diffdetective/mining/RunningExampleFinder.java @@ -26,9 +26,9 @@ public class RunningExampleFinder { new TaggedPredicate<>("diff length <= " + DefaultMaxDiffLineCount, t -> diffIsNotLongerThan(t, DefaultMaxDiffLineCount)), new TaggedPredicate<>("has nesting before the edit", RunningExampleFinder::hasNestingBeforeEdit), new TaggedPredicate<>("has additions", t -> t.anyMatch(DiffNode::isAdd)), - new TaggedPredicate<>("code was edited", t -> t.anyMatch(n -> n.isCode() && !n.isNon())), + new TaggedPredicate<>("an artifact was edited", t -> t.anyMatch(n -> n.isArtifact() && !n.isNon())), DiffTreeFilter.hasAtLeastOneEditToVariability(), - DiffTreeFilter.moreThanOneCodeNode(), + DiffTreeFilter.moreThanOneArtifactNode(), new TaggedPredicate<>("has no annotated macros", t -> !RunningExampleFinder.hasAnnotatedMacros(t)), new TaggedPredicate<>("has a complex formula", RunningExampleFinder::hasAtLeastOneComplexFormulaBeforeTheEdit) ); @@ -72,7 +72,7 @@ private static boolean diffIsNotLongerThan(final DiffTree t, int maxLines) { } private static boolean hasAnnotatedMacros(final DiffTree diffTree) { - return diffTree.anyMatch(n -> n.isCode() && n.getLabel().trim().startsWith("#")); + return diffTree.anyMatch(n -> n.isArtifact() && n.getLabel().trim().startsWith("#")); } private static boolean hasNestingBeforeEdit(final DiffTree diffTree) { @@ -87,7 +87,7 @@ private static boolean hasAtLeastOneComplexFormulaBeforeTheEdit(final DiffTree d // We would like to have a complex formula in the tree (complex := not just a positive literal). return diffTree.anyMatch(n -> { // and the formula should be visible before the edit - if (n.isMacro() && !n.isAdd()) { + if (n.isAnnotation() && !n.isAdd()) { return isComplexFormula(n.getDirectFeatureMapping()); } diff --git a/src/main/java/org/variantsync/diffdetective/mining/formats/DebugMiningDiffNodeFormat.java b/src/main/java/org/variantsync/diffdetective/mining/formats/DebugMiningDiffNodeFormat.java index ad4ddcd20..5e6c745c4 100644 --- a/src/main/java/org/variantsync/diffdetective/mining/formats/DebugMiningDiffNodeFormat.java +++ b/src/main/java/org/variantsync/diffdetective/mining/formats/DebugMiningDiffNodeFormat.java @@ -1,49 +1,44 @@ package org.variantsync.diffdetective.mining.formats; -import org.variantsync.diffdetective.diff.difftree.CodeType; +import org.variantsync.diffdetective.diff.difftree.NodeType; import org.variantsync.diffdetective.diff.difftree.DiffNode; import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.editclass.EditClass; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.functjonal.Pair; import java.util.Arrays; /** * Analogous to {@link ReleaseMiningDiffNodeFormat} but produces human readable labels instead of using integers. - * Code nodes are labeled with the name of their matched elementary pattern. - * Macro nodes are labeled with DIFFTYPE_CODETYPE (e.g., an added IF node gets the label ADD_IF). + * Artifact nodes are labeled with the name of their matched edit class. + * Annotation nodes are labeled with DIFFTYPE_NODETYPE (e.g., an added IF node gets the label ADD_IF). */ public class DebugMiningDiffNodeFormat implements MiningNodeFormat { @Override public String toLabel(final DiffNode node) { - if (node.isCode()) { - return ProposedElementaryPatterns.Instance.match(node).getName(); - } else if (node.isRoot()) { - return node.diffType + "_" + CodeType.IF; + if (node.isArtifact()) { + return ProposedEditClasses.Instance.match(node).getName(); } else { - return node.diffType + "_" + node.codeType; + return node.diffType + "_" + node.nodeType; } } @Override - public Pair fromEncodedTypes(String tag) { + public Pair fromEncodedTypes(String tag) { // If the label starts with ADD, REM, or NON if (Arrays.stream(DiffType.values()).anyMatch(diffType -> tag.startsWith(diffType.toString()))) { - // then it is a macro node + // then it is an annotation node final DiffType dt = DiffType.fromName(tag); - final int codeTypeBegin = tag.indexOf("_") + 1; - final CodeType ct = CodeType.fromName(tag.substring(codeTypeBegin)); - if (ct == CodeType.ROOT) { - throw new IllegalArgumentException("There should be no roots in mined patterns!"); - } - return new Pair<>(dt, ct); + final int nodeTypeBegin = tag.indexOf("_") + 1; + final NodeType nt = NodeType.fromName(tag.substring(nodeTypeBegin)); + return new Pair<>(dt, nt); } else { - final ElementaryPattern pattern = ProposedElementaryPatterns.Instance.fromName(tag).orElseThrow( - () -> new IllegalStateException("Label \"" + tag + "\" is neither a macro label, nor an elementary pattern!") + final EditClass editClass = ProposedEditClasses.Instance.fromName(tag).orElseThrow( + () -> new IllegalStateException("Label \"" + tag + "\" is neither an annotation label, nor an edit class!") ); - return new Pair<>(pattern.getDiffType(), CodeType.CODE); + return new Pair<>(editClass.getDiffType(), NodeType.ARTIFACT); } } } diff --git a/src/main/java/org/variantsync/diffdetective/mining/formats/MiningNodeFormat.java b/src/main/java/org/variantsync/diffdetective/mining/formats/MiningNodeFormat.java index 8f5fba211..deb7080b1 100644 --- a/src/main/java/org/variantsync/diffdetective/mining/formats/MiningNodeFormat.java +++ b/src/main/java/org/variantsync/diffdetective/mining/formats/MiningNodeFormat.java @@ -1,7 +1,7 @@ package org.variantsync.diffdetective.mining.formats; import org.variantsync.diffdetective.diff.DiffLineNumber; -import org.variantsync.diffdetective.diff.difftree.CodeType; +import org.variantsync.diffdetective.diff.difftree.NodeType; import org.variantsync.diffdetective.diff.difftree.DiffNode; import org.variantsync.diffdetective.diff.difftree.DiffType; import org.variantsync.diffdetective.diff.difftree.serialize.nodeformat.DiffNodeLabelFormat; @@ -9,7 +9,7 @@ import org.variantsync.functjonal.Pair; public interface MiningNodeFormat extends DiffNodeLabelFormat { - Pair fromEncodedTypes(final String tag); + Pair fromEncodedTypes(final String tag); @Override default DiffNode fromLabelAndId(String lineGraphNodeLabel, int nodeId) { @@ -18,11 +18,11 @@ default DiffNode fromLabelAndId(String lineGraphNodeLabel, int nodeId) { final DiffLineNumber lineTo = new DiffLineNumber(nodeId, nodeId, nodeId); final String resultLabel = ""; - final Pair types = fromEncodedTypes(lineGraphNodeLabel); + final Pair types = fromEncodedTypes(lineGraphNodeLabel); lineFrom.as(types.first()); lineTo.as(types.first()); - if (types.second() == CodeType.CODE) { - return DiffNode.createCode(types.first(), + if (types.second() == NodeType.ARTIFACT) { + return DiffNode.createArtifact(types.first(), lineFrom, lineTo, resultLabel); } else { return new DiffNode(types.first(), types.second(), lineFrom, lineTo, FixTrueFalse.True, resultLabel); diff --git a/src/main/java/org/variantsync/diffdetective/mining/formats/ReleaseMiningDiffNodeFormat.java b/src/main/java/org/variantsync/diffdetective/mining/formats/ReleaseMiningDiffNodeFormat.java index 651ab1f2c..2edf88b4c 100644 --- a/src/main/java/org/variantsync/diffdetective/mining/formats/ReleaseMiningDiffNodeFormat.java +++ b/src/main/java/org/variantsync/diffdetective/mining/formats/ReleaseMiningDiffNodeFormat.java @@ -1,30 +1,30 @@ package org.variantsync.diffdetective.mining.formats; -import org.variantsync.diffdetective.diff.difftree.CodeType; +import org.variantsync.diffdetective.diff.difftree.NodeType; import org.variantsync.diffdetective.diff.difftree.DiffNode; import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.editclass.EditClass; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.util.Assert; import org.variantsync.functjonal.Pair; /** * Formats for DiffNodes for mining. - * The label of a node starts with c if it is a code node and with m (for macro) otherwise. - * The label of code nodes is followed by the index of its matched elementary pattern. - * The label of diff nodes is followed by the ordinal of its diff type and the ordinal of its code type. + * The label of a node starts with c (for code) if it is an artifact node and with m (for macro) otherwise. + * The label of artifact nodes is followed by the index of its matched edit class. + * The label of diff nodes is followed by the ordinal of its diff type and the ordinal of its node type. * * Examples: - * DiffNode with codeType=CODE and elementary pattern AddWithMapping gets the label "c1" because AddWithMapping has index 1. - * DiffNode with codeType=ELSE and difftype=REM gets the label "m23" because the ordinal or REM is 2 and the ordinal of ELSE is 3. + * DiffNode with nodeType=ARTIFACT and edit class AddWithMapping gets the label "c1" because AddWithMapping has index 1. + * DiffNode with nodeType=ELSE and difftype=REM gets the label "m23" because the ordinal or REM is 2 and the ordinal of ELSE is 3. */ public class ReleaseMiningDiffNodeFormat implements MiningNodeFormat { - public final static String CODE_PREFIX = "c"; - public final static String MACRO_PREFIX = "m"; + public final static String ARTIFACT_PREFIX = "c"; + public final static String ANNOTATION_PREFIX = "m"; - private static int toId(final ElementaryPattern p) { - for (int i = 0; i < ProposedElementaryPatterns.All.size(); ++i) { - if (p.equals(ProposedElementaryPatterns.All.get(i))) { + private static int toId(final EditClass p) { + for (int i = 0; i < ProposedEditClasses.All.size(); ++i) { + if (p.equals(ProposedEditClasses.All.get(i))) { return i; } } @@ -32,39 +32,35 @@ private static int toId(final ElementaryPattern p) { throw new IllegalArgumentException("bug"); } - private static ElementaryPattern fromId(int id) { - return ProposedElementaryPatterns.All.get(id); + private static EditClass fromId(int id) { + return ProposedEditClasses.All.get(id); } @Override public String toLabel(DiffNode node) { - if (node.isCode()) { - return CODE_PREFIX + toId(ProposedElementaryPatterns.Instance.match(node)); + if (node.isArtifact()) { + return ARTIFACT_PREFIX + toId(ProposedEditClasses.Instance.match(node)); } else { - final CodeType codeType = node.isRoot() ? CodeType.IF : node.codeType; - return MACRO_PREFIX + node.diffType.ordinal() + codeType.ordinal(); + return ANNOTATION_PREFIX + node.diffType.ordinal() + node.nodeType.ordinal(); } } @Override - public Pair fromEncodedTypes(String tag) { - if (tag.startsWith(CODE_PREFIX)) { - final ElementaryPattern pattern = fromId(Integer.parseInt(tag.substring(CODE_PREFIX.length()))); - return new Pair<>(pattern.getDiffType(), CodeType.CODE); + public Pair fromEncodedTypes(String tag) { + if (tag.startsWith(ARTIFACT_PREFIX)) { + final EditClass editClass = fromId(Integer.parseInt(tag.substring(ARTIFACT_PREFIX.length()))); + return new Pair<>(editClass.getDiffType(), NodeType.ARTIFACT); } else { - Assert.assertTrue(tag.startsWith(MACRO_PREFIX)); - final int diffTypeBegin = MACRO_PREFIX.length(); - final int codeTypeBegin = diffTypeBegin + 1; + Assert.assertTrue(tag.startsWith(ANNOTATION_PREFIX)); + final int diffTypeBegin = ANNOTATION_PREFIX.length(); + final int nodeTypeBegin = diffTypeBegin + 1; final DiffType diffType = DiffType.values()[Integer.parseInt( - tag.substring(diffTypeBegin, codeTypeBegin) + tag.substring(diffTypeBegin, nodeTypeBegin) )]; - final CodeType codeType = CodeType.values()[Integer.parseInt( - tag.substring(codeTypeBegin, codeTypeBegin + 1) + final NodeType nodeType = NodeType.values()[Integer.parseInt( + tag.substring(nodeTypeBegin, nodeTypeBegin + 1) )]; - if (codeType == CodeType.ROOT) { - throw new IllegalArgumentException("There should be no roots in mined patterns!"); - } - return new Pair<>(diffType, codeType); + return new Pair<>(diffType, nodeType); } } } diff --git a/src/main/java/org/variantsync/diffdetective/mining/postprocessing/MiningPostprocessing.java b/src/main/java/org/variantsync/diffdetective/mining/postprocessing/MiningPostprocessing.java index ea1018841..7549f240c 100644 --- a/src/main/java/org/variantsync/diffdetective/mining/postprocessing/MiningPostprocessing.java +++ b/src/main/java/org/variantsync/diffdetective/mining/postprocessing/MiningPostprocessing.java @@ -21,7 +21,7 @@ import java.util.stream.Collectors; /** - * Performs a postprocessing on mined frequent subgraphs in edits to find semantic edit patterns. + * Performs a postprocessing on mined frequent subgraphs in edits to find edit classes. */ public class MiningPostprocessing { private static final DiffTreeRenderer DefaultRenderer = DiffTreeRenderer.WithinDiffDetective(); @@ -70,7 +70,7 @@ public static void main(String[] args) throws IOException { outputPath ); -// for (Map.Entry entry : LineGraphImport.countRootTypes.entrySet()) { +// for (Map.Entry entry : LineGraphImport.countRootTypes.entrySet()) { // System.out.println(entry); // } } diff --git a/src/main/java/org/variantsync/diffdetective/mining/postprocessing/Postprocessor.java b/src/main/java/org/variantsync/diffdetective/mining/postprocessing/Postprocessor.java index 3da49df2d..be79af63a 100644 --- a/src/main/java/org/variantsync/diffdetective/mining/postprocessing/Postprocessor.java +++ b/src/main/java/org/variantsync/diffdetective/mining/postprocessing/Postprocessor.java @@ -39,7 +39,7 @@ private Postprocessor( * Creates the default filter to distill semantic patterns from frequent subgraphs. * This processor will * - filter ill-formed trees - * - filter trees with less than two elementary patterns + * - filter trees with less than two edit classes * - filter duplicates w.r.t. isomorphism * - {@link CutNonEditedSubtrees} * @return the default postprocessor. @@ -50,8 +50,7 @@ public static Postprocessor Default() { List.of( // Filter ill-formed patterns DiffTreeFilter.consistent(), - // filter patterns containing less than two elementary patterns - DiffTreeFilter.moreThanOneCodeNode(), + DiffTreeFilter.moreThanOneArtifactNode(), DiffTreeFilter.hasAtLeastOneEditToVariability() ) ); diff --git a/src/main/java/org/variantsync/diffdetective/pattern/elementary/ElementaryPattern.java b/src/main/java/org/variantsync/diffdetective/pattern/elementary/ElementaryPattern.java deleted file mode 100644 index 344f2f514..000000000 --- a/src/main/java/org/variantsync/diffdetective/pattern/elementary/ElementaryPattern.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.variantsync.diffdetective.pattern.elementary; - -import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.diff.difftree.DiffTree; -import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.EditPattern; - -/** - * Abstract class for elementary edit pattern according to our ESEC/FSE'22 paper. - * @author Paul Bittner, Sören Viegener - */ -public abstract class ElementaryPattern extends EditPattern { - private final DiffType diffType; - - /** - * Each elementary pattern handles exactly one DiffType. - * @param name unique identifier (see {@link EditPattern}). - * @param diffType This pattern matches only {@link DiffNode}s of the given {@link DiffType}. - */ - public ElementaryPattern(final String name, final DiffType diffType) { - super(name); - this.diffType = diffType; - } - - /** - * Returns the diff type nodes must have to be matched to this pattern. - */ - public DiffType getDiffType() { - return diffType; - } - - /** - * Returns true iff given node matches this pattern. - * @param codeNode Node which has code type CODE and whose DiffType is the same as this patterns DiffType. - */ - protected abstract boolean matchesCodeNode(DiffNode codeNode); - - /** - * Returns true if this pattern matches the given node and node is code. - */ - @Override - public final boolean matches(DiffNode node) { - return node.isCode() && node.diffType == diffType && matchesCodeNode(node); - } - - /** - * Returns true iff this pattern matches at leat one node on the given tree. - */ - public boolean anyMatch(final DiffTree t) { - return t.anyMatch(this::matches); - } -} diff --git a/src/main/java/org/variantsync/diffdetective/pattern/elementary/ElementaryPatternCatalogue.java b/src/main/java/org/variantsync/diffdetective/pattern/elementary/ElementaryPatternCatalogue.java deleted file mode 100644 index b0c9b2901..000000000 --- a/src/main/java/org/variantsync/diffdetective/pattern/elementary/ElementaryPatternCatalogue.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.variantsync.diffdetective.pattern.elementary; - -import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.diff.difftree.DiffType; - -import java.util.List; -import java.util.Map; - -/** - * Interface for custom catalogs of elementary edit patterns. - * @author Paul Bittner - */ -public interface ElementaryPatternCatalogue { - /** - * Gives a list of all elementary patterns in this catalogue. - * The list should be constant and immutable (i.e., the very same list is returned each time all is invoked). - * The elementary patterns should be immutable, too. - * @return a constant list of all elementary patterns in this catalogue. - */ - List all(); - - /** - * Returns a mapping from diff types to the elementary patterns that may match nodes of the given diff type. - * The returned map as well as all its values should be immutable and constant. * - * @return A classification of elementary patterns by their diff types. - */ - Map> byType(); - - /** - * Returns the elementary pattern that matches the given node. - * Each node matches exactly one pattern. - * @param node The node of which to find its elementary pattern. - * @return Returns the elementary pattern that matches the given node. - */ - default ElementaryPattern match(DiffNode node) - { - if (!node.isCode()) { - throw new IllegalArgumentException("Expected a code node but got " + node.codeType + "!"); - } - - final List patternsToCheck = byType().get(node.diffType); - - ElementaryPattern match = null; - for (final ElementaryPattern p : patternsToCheck) { - if (p.matches(node)) { - if (match != null) { - throw new RuntimeException("BUG: Error in elementary pattern definition!\n" - + "Node " + node + " matched " + match + " and " + p + "!"); - } - match = p; - } - } - - if (match == null) { - throw new RuntimeException("BUG: Error in elementary pattern definition!\n" - + "Node " + node + " did not match any pattern!"); - } - - return match; - } -} diff --git a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/AddWithMapping.java b/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/AddWithMapping.java deleted file mode 100644 index 88a933a2b..000000000 --- a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/AddWithMapping.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.variantsync.diffdetective.pattern.elementary.proposed; - -import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; - -/** - * Our AddWithMapping pattern from the ESEC/FSE'22 paper. - * @author Paul Bittner, Sören Viegener - */ -final class AddWithMapping extends ElementaryPattern { - AddWithMapping() { - super("AddWithMapping", DiffType.ADD); - } - - @Override - protected boolean matchesCodeNode(DiffNode codeNode) { - return codeNode.getAfterParent().isAdd(); - } -} diff --git a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Generalization.java b/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Generalization.java deleted file mode 100644 index 10bdc6ef9..000000000 --- a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Generalization.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.variantsync.diffdetective.pattern.elementary.proposed; - -import org.prop4j.Node; -import org.variantsync.diffdetective.analysis.logic.SAT; -import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; - -/** - * Our Generalization pattern from the ESEC/FSE'22 paper. - * @author Paul Bittner, Sören Viegener - */ -final class Generalization extends ElementaryPattern { - Generalization() { - super("Generalization", DiffType.NON); - } - - @Override - protected boolean matchesCodeNode(DiffNode codeNode) { - final Node pcb = codeNode.getBeforeFeatureMapping(); - final Node pca = codeNode.getAfterFeatureMapping(); - return SAT.implies(pcb, pca) && !SAT.implies(pca, pcb); - } -} diff --git a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Reconfiguration.java b/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Reconfiguration.java deleted file mode 100644 index 28a829328..000000000 --- a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Reconfiguration.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.variantsync.diffdetective.pattern.elementary.proposed; - -import org.prop4j.Node; -import org.variantsync.diffdetective.analysis.logic.SAT; -import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; - -/** - * Our Reconfiguration pattern from the ESEC/FSE'22 paper. - * @author Paul Bittner, Sören Viegener - */ -final class Reconfiguration extends ElementaryPattern { - Reconfiguration() { - super("Reconfiguration", DiffType.NON); - } - - @Override - protected boolean matchesCodeNode(DiffNode codeNode) { - final Node pcb = codeNode.getBeforeFeatureMapping(); - final Node pca = codeNode.getAfterFeatureMapping(); - return !SAT.implies(pcb, pca) && !SAT.implies(pca, pcb); - } -} diff --git a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Refactoring.java b/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Refactoring.java deleted file mode 100644 index f0067f44a..000000000 --- a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Refactoring.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.variantsync.diffdetective.pattern.elementary.proposed; - -import org.prop4j.Node; -import org.variantsync.diffdetective.analysis.logic.SAT; -import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; - -/** - * Our Refactoring pattern from the ESEC/FSE'22 paper. - * @author Paul Bittner, Sören Viegener - */ -final class Refactoring extends ElementaryPattern { - Refactoring() { - super("Refactoring", DiffType.NON); - } - - @Override - protected boolean matchesCodeNode(DiffNode codeNode) { - final Node pcb = codeNode.getBeforeFeatureMapping(); - final Node pca = codeNode.getAfterFeatureMapping(); - return SAT.equivalent(pcb, pca) && !codeNode.beforePathEqualsAfterPath(); - } -} diff --git a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/RemFromPC.java b/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/RemFromPC.java deleted file mode 100644 index 2e043a19a..000000000 --- a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/RemFromPC.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.variantsync.diffdetective.pattern.elementary.proposed; - -import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; - -/** - * Our RemFromPC pattern from the ESEC/FSE'22 paper. - * @author Paul Bittner, Sören Viegener - */ -final class RemFromPC extends ElementaryPattern { - RemFromPC() { - super("RemFromPC", DiffType.REM); - } - - @Override - protected boolean matchesCodeNode(DiffNode codeNode) { - return !codeNode.getBeforeParent().isRem(); - } -} diff --git a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/RemWithMapping.java b/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/RemWithMapping.java deleted file mode 100644 index 7ec0b6ae8..000000000 --- a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/RemWithMapping.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.variantsync.diffdetective.pattern.elementary.proposed; - -import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; - -/** - * Our RemWithMapping pattern from the ESEC/FSE'22 paper. - * @author Paul Bittner, Sören Viegener - */ -final class RemWithMapping extends ElementaryPattern { - RemWithMapping() { - super("RemWithMapping", DiffType.REM); - } - - @Override - protected boolean matchesCodeNode(DiffNode codeNode) { - return codeNode.getBeforeParent().isRem(); - } -} diff --git a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Specialization.java b/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Specialization.java deleted file mode 100644 index 1648b5555..000000000 --- a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Specialization.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.variantsync.diffdetective.pattern.elementary.proposed; - -import org.prop4j.Node; -import org.variantsync.diffdetective.analysis.logic.SAT; -import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; - -/** - * Our Specialization pattern from the ESEC/FSE'22 paper. - * @author Paul Bittner, Sören Viegener - */ -final class Specialization extends ElementaryPattern { - Specialization() { - super("Specialization", DiffType.NON); - } - - @Override - protected boolean matchesCodeNode(DiffNode codeNode) { - final Node pcb = codeNode.getBeforeFeatureMapping(); - final Node pca = codeNode.getAfterFeatureMapping(); - return !SAT.implies(pcb, pca) && SAT.implies(pca, pcb); - } -} diff --git a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Untouched.java b/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Untouched.java deleted file mode 100644 index 2e9269512..000000000 --- a/src/main/java/org/variantsync/diffdetective/pattern/elementary/proposed/Untouched.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.variantsync.diffdetective.pattern.elementary.proposed; - -import org.prop4j.Node; -import org.variantsync.diffdetective.analysis.logic.SAT; -import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.diff.difftree.DiffType; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; - -/** - * Our Untouched pattern from the ESEC/FSE'22 paper. - * @author Paul Bittner, Sören Viegener - */ -public class Untouched extends ElementaryPattern { - Untouched() { - super("Untouched", DiffType.NON); - } - - @Override - protected boolean matchesCodeNode(DiffNode codeNode) { - final Node pcb = codeNode.getBeforeFeatureMapping(); - final Node pca = codeNode.getAfterFeatureMapping(); - return SAT.equivalent(pcb, pca) && codeNode.beforePathEqualsAfterPath(); - } -} \ No newline at end of file diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/analysis/GDAnalyzer.java b/src/main/java/org/variantsync/diffdetective/preliminary/analysis/GDAnalyzer.java index eaa8bdc51..086b93c90 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/analysis/GDAnalyzer.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/analysis/GDAnalyzer.java @@ -2,7 +2,7 @@ import org.variantsync.diffdetective.diff.CommitDiff; import org.variantsync.diffdetective.diff.PatchDiff; -import org.variantsync.diffdetective.pattern.EditPattern; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; import org.variantsync.diffdetective.preliminary.GitDiff; import org.variantsync.diffdetective.preliminary.analysis.data.CommitDiffAnalysisResult; import org.variantsync.diffdetective.preliminary.analysis.data.GDAnalysisResult; @@ -25,7 +25,7 @@ public abstract class GDAnalyzer { public GDAnalyzer(GitDiff gitDiff, List> patterns) { this.gitDiff = gitDiff; -// List> patternList = new ArrayList<>(Arrays.asList(patterns)); +// List> patternList = new ArrayList<>(Arrays.asList(patterns)); // patternList.add(0, new InvalidPatchPattern<>()); this.patterns = patterns; } @@ -34,7 +34,7 @@ public List> getReverseEngineerings() { return patterns; } - public List> getPatterns() { + public List> getPatterns() { return patterns.stream().map(FeatureContextReverseEngineering::getPattern).collect(Collectors.toList()); } diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/analysis/TreeGDAnalyzer.java b/src/main/java/org/variantsync/diffdetective/preliminary/analysis/TreeGDAnalyzer.java index fc6ee0b3f..0a519cb77 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/analysis/TreeGDAnalyzer.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/analysis/TreeGDAnalyzer.java @@ -3,7 +3,7 @@ import org.variantsync.diffdetective.diff.PatchDiff; import org.variantsync.diffdetective.diff.difftree.DiffNode; import org.variantsync.diffdetective.diff.difftree.DiffTree; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; +import org.variantsync.diffdetective.editclass.EditClass; import org.variantsync.diffdetective.preliminary.GitDiff; import org.variantsync.diffdetective.preliminary.analysis.data.PatchDiffAnalysisResult; import org.variantsync.diffdetective.preliminary.analysis.data.PatternMatch; @@ -67,9 +67,9 @@ protected PatchDiffAnalysisResult analyzePatch(PatchDiff patchDiff) { DiffTree diffTree = patchDiff.getDiffTree(); if(diffTree != null) { // match atomic patterns - for (DiffNode diffNode : diffTree.computeCodeNodes()) { + for (DiffNode diffNode : diffTree.computeArtifactNodes()) { for (FeatureContextReverseEngineering pattern : patterns) { - if (pattern.getPattern() instanceof ElementaryPattern) { + if (pattern.getPattern() instanceof EditClass) { results.add(pattern.createMatch(diffNode)); // pattern.match(diffNode).ifPresent(results::add); } diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/analysis/data/PatternMatch.java b/src/main/java/org/variantsync/diffdetective/preliminary/analysis/data/PatternMatch.java index bda24c55c..7c9c9e421 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/analysis/data/PatternMatch.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/analysis/data/PatternMatch.java @@ -1,7 +1,7 @@ package org.variantsync.diffdetective.preliminary.analysis.data; import org.prop4j.Node; -import org.variantsync.diffdetective.pattern.EditPattern; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; import org.variantsync.diffdetective.preliminary.evaluation.FeatureContext; import org.variantsync.diffdetective.preliminary.pattern.FeatureContextReverseEngineering; @@ -50,7 +50,7 @@ public String getPatternName() { return pattern.getPattern().getName(); } - public EditPattern getPattern() { + public Pattern getPattern() { return pattern.getPattern(); } diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/evaluation/GDEvaluator.java b/src/main/java/org/variantsync/diffdetective/preliminary/evaluation/GDEvaluator.java index 4c4dbb62e..3ecc7178f 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/evaluation/GDEvaluator.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/evaluation/GDEvaluator.java @@ -8,7 +8,7 @@ import org.tinylog.Logger; import org.variantsync.diffdetective.diff.PatchDiff; import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.pattern.EditPattern; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; import org.variantsync.diffdetective.preliminary.analysis.GDAnalyzer; import org.variantsync.diffdetective.preliminary.analysis.data.CommitDiffAnalysisResult; import org.variantsync.diffdetective.preliminary.analysis.data.GDAnalysisResult; @@ -68,7 +68,7 @@ private List getEvaluations() { * @param patterns The patterns to search for * @return An int array containing the amount of matches for each pattern */ - public int[] getPatternCounts(List> patterns) { + public int[] getPatternCounts(List> patterns) { int[] patternCounts = new int[patterns.size()]; for (PatternMatchEvaluation pme : pmEvaluations) { @@ -105,7 +105,7 @@ public int[] getPatchesWithPatternCounts(List int[] getLineCounts(List> patterns) { + private int[] getLineCounts(List> patterns) { int[] lineCounts = new int[patterns.size()]; for (PatternMatchEvaluation pme : pmEvaluations) { diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/FeatureContextReverseEngineering.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/FeatureContextReverseEngineering.java index f93f7d364..17ad208bf 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/FeatureContextReverseEngineering.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/FeatureContextReverseEngineering.java @@ -1,6 +1,6 @@ package org.variantsync.diffdetective.preliminary.pattern; -import org.variantsync.diffdetective.pattern.EditPattern; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; import org.variantsync.diffdetective.preliminary.analysis.data.PatternMatch; import org.variantsync.diffdetective.preliminary.evaluation.FeatureContext; @@ -8,7 +8,7 @@ @Deprecated public interface FeatureContextReverseEngineering { - EditPattern getPattern(); + Pattern getPattern(); /** * Creates a PatternMatch object for the given element. * Assumes {@code matches(codeNode) == true}. diff --git a/src/main/java/org/variantsync/diffdetective/pattern/EditPattern.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/Pattern.java similarity index 85% rename from src/main/java/org/variantsync/diffdetective/pattern/EditPattern.java rename to src/main/java/org/variantsync/diffdetective/preliminary/pattern/Pattern.java index c832df8ee..cd0e021dd 100644 --- a/src/main/java/org/variantsync/diffdetective/pattern/EditPattern.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/Pattern.java @@ -1,4 +1,4 @@ -package org.variantsync.diffdetective.pattern; +package org.variantsync.diffdetective.preliminary.pattern; /** * Abstract class for edit patterns. @@ -6,7 +6,7 @@ * @param Type of elements on which the pattern may be matched. * @author Sören Viegener, Paul Bittner */ -public abstract class EditPattern { +public abstract class Pattern { /** * The name that uniquely identifies this pattern. */ @@ -16,7 +16,7 @@ public abstract class EditPattern { * Create a new pattern with the given name. * @param name Unique identifier. */ - public EditPattern(final String name) { + public Pattern(final String name) { this.name = name; } diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfAddToPC.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfAddToPC.java index 671655574..d88b2a11b 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfAddToPC.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfAddToPC.java @@ -3,8 +3,8 @@ import org.prop4j.Node; import org.variantsync.diffdetective.diff.Lines; import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.pattern.EditPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.preliminary.analysis.data.PatternMatch; import org.variantsync.diffdetective.preliminary.evaluation.FeatureContext; import org.variantsync.diffdetective.preliminary.pattern.FeatureContextReverseEngineering; @@ -12,8 +12,8 @@ @Deprecated public final class FeatureContextOfAddToPC implements FeatureContextReverseEngineering { @Override - public EditPattern getPattern() { - return ProposedElementaryPatterns.AddToPC; + public Pattern getPattern() { + return ProposedEditClasses.AddToPC; } @Override diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfAddWithMapping.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfAddWithMapping.java index d2c63a6ab..883ec9177 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfAddWithMapping.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfAddWithMapping.java @@ -3,8 +3,8 @@ import org.prop4j.Node; import org.variantsync.diffdetective.diff.Lines; import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.pattern.EditPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.preliminary.analysis.data.PatternMatch; import org.variantsync.diffdetective.preliminary.evaluation.FeatureContext; import org.variantsync.diffdetective.preliminary.pattern.FeatureContextReverseEngineering; @@ -12,8 +12,8 @@ @Deprecated public final class FeatureContextOfAddWithMapping implements FeatureContextReverseEngineering { @Override - public EditPattern getPattern() { - return ProposedElementaryPatterns.AddWithMapping; + public Pattern getPattern() { + return ProposedEditClasses.AddWithMapping; } @Override diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfGeneralization.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfGeneralization.java index 4bf86a327..b5dade470 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfGeneralization.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfGeneralization.java @@ -2,8 +2,8 @@ import org.variantsync.diffdetective.diff.Lines; import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.pattern.EditPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.preliminary.analysis.data.PatternMatch; import org.variantsync.diffdetective.preliminary.evaluation.FeatureContext; import org.variantsync.diffdetective.preliminary.pattern.FeatureContextReverseEngineering; @@ -11,8 +11,8 @@ @Deprecated public final class FeatureContextOfGeneralization implements FeatureContextReverseEngineering { @Override - public EditPattern getPattern() { - return ProposedElementaryPatterns.Generalization; + public Pattern getPattern() { + return ProposedEditClasses.Generalization; } @Override diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfReconfiguration.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfReconfiguration.java index 8ce8e34f2..5feebca18 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfReconfiguration.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfReconfiguration.java @@ -2,8 +2,8 @@ import org.variantsync.diffdetective.diff.Lines; import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.pattern.EditPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.preliminary.analysis.data.PatternMatch; import org.variantsync.diffdetective.preliminary.evaluation.FeatureContext; import org.variantsync.diffdetective.preliminary.pattern.FeatureContextReverseEngineering; @@ -11,8 +11,8 @@ @Deprecated public final class FeatureContextOfReconfiguration implements FeatureContextReverseEngineering { @Override - public EditPattern getPattern() { - return ProposedElementaryPatterns.Reconfiguration; + public Pattern getPattern() { + return ProposedEditClasses.Reconfiguration; } @Override diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfRefactoring.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfRefactoring.java index fda24e346..64bb2bec7 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfRefactoring.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfRefactoring.java @@ -2,8 +2,8 @@ import org.variantsync.diffdetective.diff.Lines; import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.pattern.EditPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.preliminary.analysis.data.PatternMatch; import org.variantsync.diffdetective.preliminary.evaluation.FeatureContext; import org.variantsync.diffdetective.preliminary.pattern.FeatureContextReverseEngineering; @@ -11,8 +11,8 @@ @Deprecated public final class FeatureContextOfRefactoring implements FeatureContextReverseEngineering { @Override - public EditPattern getPattern() { - return ProposedElementaryPatterns.Refactoring; + public Pattern getPattern() { + return ProposedEditClasses.Refactoring; } @Override diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfRemFromPC.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfRemFromPC.java index 8550745d2..d8ab176fe 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfRemFromPC.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfRemFromPC.java @@ -3,8 +3,8 @@ import org.prop4j.Node; import org.variantsync.diffdetective.diff.Lines; import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.pattern.EditPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.preliminary.analysis.data.PatternMatch; import org.variantsync.diffdetective.preliminary.evaluation.FeatureContext; import org.variantsync.diffdetective.preliminary.pattern.FeatureContextReverseEngineering; @@ -12,8 +12,8 @@ @Deprecated public final class FeatureContextOfRemFromPC implements FeatureContextReverseEngineering { @Override - public EditPattern getPattern() { - return ProposedElementaryPatterns.RemFromPC; + public Pattern getPattern() { + return ProposedEditClasses.RemFromPC; } @Override diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfRemWithMapping.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfRemWithMapping.java index d4e70f820..af21ac27e 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfRemWithMapping.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfRemWithMapping.java @@ -3,8 +3,8 @@ import org.prop4j.Node; import org.variantsync.diffdetective.diff.Lines; import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.pattern.EditPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.preliminary.analysis.data.PatternMatch; import org.variantsync.diffdetective.preliminary.evaluation.FeatureContext; import org.variantsync.diffdetective.preliminary.pattern.FeatureContextReverseEngineering; @@ -12,8 +12,8 @@ @Deprecated public final class FeatureContextOfRemWithMapping implements FeatureContextReverseEngineering { @Override - public EditPattern getPattern() { - return ProposedElementaryPatterns.RemWithMapping; + public Pattern getPattern() { + return ProposedEditClasses.RemWithMapping; } @Override diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfSpecialization.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfSpecialization.java index f418034ed..527f92b21 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfSpecialization.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfSpecialization.java @@ -2,8 +2,8 @@ import org.variantsync.diffdetective.diff.Lines; import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.pattern.EditPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.preliminary.analysis.data.PatternMatch; import org.variantsync.diffdetective.preliminary.evaluation.FeatureContext; import org.variantsync.diffdetective.preliminary.pattern.FeatureContextReverseEngineering; @@ -11,8 +11,8 @@ @Deprecated public final class FeatureContextOfSpecialization implements FeatureContextReverseEngineering { @Override - public EditPattern getPattern() { - return ProposedElementaryPatterns.Specialization; + public Pattern getPattern() { + return ProposedEditClasses.Specialization; } @Override diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfUntouched.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfUntouched.java index df3deead1..191d6dbe0 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfUntouched.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/elementary/FeatureContextOfUntouched.java @@ -2,8 +2,8 @@ import org.variantsync.diffdetective.diff.Lines; import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.pattern.EditPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.preliminary.analysis.data.PatternMatch; import org.variantsync.diffdetective.preliminary.evaluation.FeatureContext; import org.variantsync.diffdetective.preliminary.pattern.FeatureContextReverseEngineering; @@ -11,8 +11,8 @@ @Deprecated public class FeatureContextOfUntouched implements FeatureContextReverseEngineering { @Override - public EditPattern getPattern() { - return ProposedElementaryPatterns.Untouched; + public Pattern getPattern() { + return ProposedEditClasses.Untouched; } @Override diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefElif.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefElif.java index 312c194c1..f649a2c23 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefElif.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefElif.java @@ -31,7 +31,7 @@ public Optional> match(DiffNode annotationNode) { boolean addedCodeInIf = false; DiffNode elifNode = null; for(DiffNode child : annotationNode.getAllChildren()){ - if(child.isCode() && child.isAdd()){ + if(child.isArtifact() && child.isAdd()){ addedCodeInIf = true; } if(child.isElif() && child.isAdd()){ @@ -60,7 +60,7 @@ private boolean isValidElif(DiffNode elifNode, List mappings) { DiffNode nextNode = null; for(DiffNode child : elifNode.getAllChildren()){ - if(child.isCode() && child.isAdd()){ + if(child.isArtifact() && child.isAdd()){ addedCode = true; } if((child.isElif() || child.isElse()) && child.isAdd()){ diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefElse.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefElse.java index 61ea00a65..e7552cb6d 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefElse.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefElse.java @@ -30,7 +30,7 @@ public Optional> match(DiffNode annotationNode) { if(child.isElif()){ return Optional.empty(); } - if(child.isCode() && child.isAdd()){ + if(child.isArtifact() && child.isAdd()){ addedCodeInIf = true; } if(child.isElse() && child.isAdd()){ @@ -44,7 +44,7 @@ public Optional> match(DiffNode annotationNode) { boolean addedCodeInElse = false; for(DiffNode child : elseNode.getAllChildren()) { - if(child.isCode() && child.isAdd()){ + if(child.isArtifact() && child.isAdd()){ addedCodeInElse = true; } } diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefWrapElse.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefWrapElse.java index 07857a3e9..de0746ee1 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefWrapElse.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefWrapElse.java @@ -29,7 +29,7 @@ public Optional> match(DiffNode annotationNode) { if(child.isElif()){ return Optional.empty(); } - if(child.isCode() && child.isAdd()){ + if(child.isArtifact() && child.isAdd()){ addedCodeInIf = true; } if(child.isElse() && child.isAdd()){ @@ -43,7 +43,7 @@ public Optional> match(DiffNode annotationNode) { boolean noneCodeInElse = false; for(DiffNode child : elseNode.getAllChildren()){ - if(child.isCode() && child.isNon()){ + if(child.isArtifact() && child.isNon()){ noneCodeInElse = true; } } diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefWrapThen.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefWrapThen.java index 35d3291b2..ab673caae 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefWrapThen.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/AddIfdefWrapThen.java @@ -30,7 +30,7 @@ public Optional> match(DiffNode annotationNode) { if(child.isElif()){ return Optional.empty(); } - if(child.isCode() && child.isNon()){ + if(child.isArtifact() && child.isNon()){ nonCodeInIf = true; } if(child.isElse() && child.isAdd()){ @@ -44,7 +44,7 @@ public Optional> match(DiffNode annotationNode) { boolean addedCodeInElse = false; for(DiffNode child : elseNode.getAllChildren()){ - if(child.isCode() && child.isAdd()){ + if(child.isArtifact() && child.isAdd()){ addedCodeInElse = true; } } diff --git a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/SemanticPattern.java b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/SemanticPattern.java index 4194e582e..9aede0b44 100644 --- a/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/SemanticPattern.java +++ b/src/main/java/org/variantsync/diffdetective/preliminary/pattern/semantic/SemanticPattern.java @@ -1,7 +1,7 @@ package org.variantsync.diffdetective.preliminary.pattern.semantic; import org.variantsync.diffdetective.diff.difftree.DiffNode; -import org.variantsync.diffdetective.pattern.EditPattern; +import org.variantsync.diffdetective.preliminary.pattern.Pattern; import org.variantsync.diffdetective.preliminary.analysis.data.PatternMatch; import org.variantsync.diffdetective.preliminary.pattern.FeatureContextReverseEngineering; @@ -9,7 +9,7 @@ import java.util.Optional; @Deprecated -public abstract class SemanticPattern extends EditPattern implements FeatureContextReverseEngineering { +public abstract class SemanticPattern extends Pattern implements FeatureContextReverseEngineering { public static final SemanticPattern AddIfdefElif = new AddIfdefElif(); public static final SemanticPattern AddIfdefElse = new AddIfdefElse(); public static final SemanticPattern AddIfdefWrapElse = new AddIfdefWrapElse(); @@ -37,7 +37,7 @@ public PatternMatch createMatch(DiffNode diffNode) { } @Override - public EditPattern getPattern() { + public Pattern getPattern() { return this; } } diff --git a/src/main/java/org/variantsync/diffdetective/shell/ShellException.java b/src/main/java/org/variantsync/diffdetective/shell/ShellException.java index c88fcb1e2..f98c25115 100644 --- a/src/main/java/org/variantsync/diffdetective/shell/ShellException.java +++ b/src/main/java/org/variantsync/diffdetective/shell/ShellException.java @@ -21,7 +21,7 @@ public ShellException(Exception e) { /** * Constructs a {@code ShellException} on command failures indicated by an exit code. - * If possible both {@code stdout} and {@code stderr} should be provided in @{code output}. + * If possible both {@code stdout} and {@code stderr} should be provided in {@code output}. */ public ShellException(List output) { super(convert(output)); diff --git a/src/main/java/org/variantsync/diffdetective/tablegen/MiningResultAccumulator.java b/src/main/java/org/variantsync/diffdetective/tablegen/MiningResultAccumulator.java index 45d7d2a37..1012d9e80 100644 --- a/src/main/java/org/variantsync/diffdetective/tablegen/MiningResultAccumulator.java +++ b/src/main/java/org/variantsync/diffdetective/tablegen/MiningResultAccumulator.java @@ -93,8 +93,8 @@ public static AnalysisResult computeTotalMetadataResult(final Collection *
  • Whether the results are filtered to only include the biggest datasets. *
  • Whether the amount of each edit type is given in absolute or relative numbers. - *
  • Whether the edit count of each pattern or only the share of edit pattern editing the - * variability is included. + *
  • Whether the edit count of each edit class or only the share of edit classes editing + * the variability is included. * * * @see getAllTotalResultsIn diff --git a/src/main/java/org/variantsync/diffdetective/tablegen/styles/ShortTable.java b/src/main/java/org/variantsync/diffdetective/tablegen/styles/ShortTable.java index 9b4def3d6..b235094e9 100644 --- a/src/main/java/org/variantsync/diffdetective/tablegen/styles/ShortTable.java +++ b/src/main/java/org/variantsync/diffdetective/tablegen/styles/ShortTable.java @@ -1,9 +1,9 @@ package org.variantsync.diffdetective.tablegen.styles; import org.apache.commons.lang3.function.TriFunction; -import org.variantsync.diffdetective.metadata.ElementaryPatternCount; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.metadata.EditClassCount; +import org.variantsync.diffdetective.editclass.EditClass; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.tablegen.ColumnDefinition; import org.variantsync.diffdetective.tablegen.Row; import org.variantsync.diffdetective.tablegen.TableDefinition; @@ -24,8 +24,8 @@ *
  • a dataset description *
  • commit counts *
  • diff counts - *
  • the number of artefact nodes - *
  • elementary pattern counts, either absolute or relative to the total count of all patterns + *
  • the number of artifact nodes + *
  • edit class counts, either absolute or relative to the total count of all edit classes *
  • processing time * * @@ -43,7 +43,7 @@ private ShortTable(boolean filtered) { } /** - * Constructs a table template with absolute pattern counts. + * Constructs a table template with absolute edit class counts. * * @param filtered if {@code true}, the rows will be filtered to only contain the biggest * datasets @@ -55,7 +55,7 @@ public static ShortTable Absolute(boolean filtered) { } /** - * Constructs a table template with relative pattern counts. + * Constructs a table template with relative edit class counts. * * @param filtered if {@code true}, the rows will be filtered to only contain the biggest * datasets @@ -70,9 +70,9 @@ public static ShortTable Relative(boolean filtered) { * Returns a list of all columns contained in this table. * * @param t instance to this class, used for formatting with {@link makeReadable} - * @param getPatternCount function to extract the pattern count of a row + * @param getEditClassCount function to extract the edit class count of a row */ - private static List columns(final ShortTable t, final TriFunction getPatternCount) { + private static List columns(final ShortTable t, final TriFunction getEditClassCount) { final List cols = new ArrayList<>(List.of( col("Name", LEFT, row -> row.dataset().name().toLowerCase(Locale.US)), col("Domain", LEFT_DASH, row -> row.dataset().domain()), @@ -81,17 +81,17 @@ private static List columns(final ShortTable t, final TriFunct col("\\#diffs", RIGHT, row -> t.makeReadable(row.results().exportedTrees)), col("\\#artifact nodes", RIGHT_DASH, row -> t.makeReadable(row .results() - .elementaryPatternCounts + .editClassCounts .getOccurences() .values().stream() - .map(ElementaryPatternCount.Occurrences::getTotalAmount) + .map(EditClassCount.Occurrences::getTotalAmount) .reduce(0, Integer::sum) )) )); - for (final ElementaryPattern a : ProposedElementaryPatterns.Instance.all()) { - if (a != ProposedElementaryPatterns.Untouched) { - cols.add(col(a.getName(), RIGHT, row -> getPatternCount.apply(t, a, row))); + for (final EditClass a : ProposedEditClasses.Instance.all()) { + if (a != ProposedEditClasses.Untouched) { + cols.add(col(a.getName(), RIGHT, row -> getEditClassCount.apply(t, a, row))); } } @@ -103,39 +103,39 @@ private static List columns(final ShortTable t, final TriFunct } /** - * Returns a formatted string of the absolute number of occurrences of {@code pattern} in + * Returns a formatted string of the absolute number of occurrences of {@code editClass} in * {@code row}. * The signature of this method is suitable to be passed to {@link column}. * * @param t an instance of this class contained in the column definition - * @param pattern the pattern to count - * @param row the data to count {@code pattern} in + * @param editClass the edit class to count + * @param row the data to count {@code editClass} in * @see column */ - private static String absoluteCountOf(final ShortTable t, final ElementaryPattern pattern, final ContentRow row) { - return t.makeReadable(row.results().elementaryPatternCounts.getOccurences().get(pattern).getTotalAmount()); + private static String absoluteCountOf(final ShortTable t, final EditClass editClass, final ContentRow row) { + return t.makeReadable(row.results().editClassCounts.getOccurences().get(editClass).getTotalAmount()); } /** - * Returns a formatted string of the relative number of occurrences of {@code pattern} in + * Returns a formatted string of the relative number of occurrences of {@code editClass} in * {@code row}. * The signature of this method is suitable to be passed to {@link column}. * * @param t an instance of this class contained in the column definition - * @param pattern the pattern to count - * @param row the data to count {@code pattern} in + * @param editClass the edit class to count + * @param row the data to count {@code editClass} in * @see column */ - private static String relativeCountOf(final ShortTable t, final ElementaryPattern pattern, final ContentRow row) { - final LinkedHashMap patternOccurrences = - row.results().elementaryPatternCounts.getOccurences(); + private static String relativeCountOf(final ShortTable t, final EditClass editClass, final ContentRow row) { + final LinkedHashMap editClassOccurrences = + row.results().editClassCounts.getOccurences(); int numTotalMatches = 0; - for (final Map.Entry occurrence : patternOccurrences.entrySet()) { + for (final Map.Entry occurrence : editClassOccurrences.entrySet()) { numTotalMatches += occurrence.getValue().getTotalAmount(); } - return t.makeReadable(100.0 * ((double) patternOccurrences.get(pattern).getTotalAmount()) / ((double) numTotalMatches)) + "\\%"; + return t.makeReadable(100.0 * ((double) editClassOccurrences.get(editClass).getTotalAmount()) / ((double) numTotalMatches)) + "\\%"; } /** diff --git a/src/main/java/org/variantsync/diffdetective/tablegen/styles/Table1.java b/src/main/java/org/variantsync/diffdetective/tablegen/styles/Table1.java index 1f64342b8..fa502418b 100644 --- a/src/main/java/org/variantsync/diffdetective/tablegen/styles/Table1.java +++ b/src/main/java/org/variantsync/diffdetective/tablegen/styles/Table1.java @@ -1,7 +1,7 @@ package org.variantsync.diffdetective.tablegen.styles; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.editclass.EditClass; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.tablegen.Row; import org.variantsync.diffdetective.tablegen.TableDefinition; import org.variantsync.diffdetective.tablegen.TableGenerator; @@ -21,7 +21,7 @@ *
  • a dataset description *
  • commit counts *
  • diff counts - *
  • elementary pattern counts + *
  • edit class counts *
  • processing time * */ @@ -37,8 +37,8 @@ public Table1() { col("\\#diffs", RIGHT, row -> makeReadable(row.results().exportedTrees)) )); - for (final ElementaryPattern a : ProposedElementaryPatterns.Instance.all()) { - this.columnDefinitions.add(col(a.getName(), RIGHT, row -> makeReadable(row.results().elementaryPatternCounts.getOccurences().get(a).getTotalAmount()))); + for (final EditClass a : ProposedEditClasses.Instance.all()) { + this.columnDefinitions.add(col(a.getName(), RIGHT, row -> makeReadable(row.results().editClassCounts.getOccurences().get(a).getTotalAmount()))); } this.columnDefinitions.add(col("runtime (s)", RIGHT, row -> makeReadable(row.results().runtimeInSeconds))); diff --git a/src/main/java/org/variantsync/diffdetective/tablegen/styles/VariabilityShare.java b/src/main/java/org/variantsync/diffdetective/tablegen/styles/VariabilityShare.java index 246a27ce2..4b0471401 100644 --- a/src/main/java/org/variantsync/diffdetective/tablegen/styles/VariabilityShare.java +++ b/src/main/java/org/variantsync/diffdetective/tablegen/styles/VariabilityShare.java @@ -1,8 +1,8 @@ package org.variantsync.diffdetective.tablegen.styles; -import org.variantsync.diffdetective.metadata.ElementaryPatternCount; -import org.variantsync.diffdetective.pattern.elementary.ElementaryPattern; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.metadata.EditClassCount; +import org.variantsync.diffdetective.editclass.EditClass; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.tablegen.Row; import org.variantsync.diffdetective.tablegen.TableDefinition; import org.variantsync.diffdetective.tablegen.rows.ContentRow; @@ -22,7 +22,7 @@ *
      *
    • the name of the dataset *
    • the total number of edits to variability - *
    • a relative occurrence count for each pattern changing variability + *
    • a relative occurrence count for each edit class changing variability *
    */ public class VariabilityShare extends TableDefinition { @@ -38,38 +38,38 @@ public VariabilityShare(final Supplier inner) { col("\\#edits to\\\\ variability", RIGHT_DASH, row -> makeReadable(countEditsToVariability(row))) )); - for (final ElementaryPattern a : ProposedElementaryPatterns.Instance.all()) { + for (final EditClass a : ProposedEditClasses.Instance.all()) { if (isEditToVariability(a)) { this.columnDefinitions.add(col(a.getName(), RIGHT, row -> getRelativeShareOf(a, row))); } } } - /** Returns if the pattern {@code p} should be present in this table. */ - private static boolean isEditToVariability(final ElementaryPattern p) { - return p != ProposedElementaryPatterns.Untouched && p != ProposedElementaryPatterns.AddToPC && p != ProposedElementaryPatterns.RemFromPC; + /** Returns if the edit class {@code c} should be present in this table. */ + private static boolean isEditToVariability(final EditClass c) { + return c != ProposedEditClasses.Untouched && c != ProposedEditClasses.AddToPC && c != ProposedEditClasses.RemFromPC; } - /** Returns the number of occurrences of patterns present in the table. */ - private static Stream> getVariationalPatterns(final ContentRow row) { - return row.results().elementaryPatternCounts.getOccurences().entrySet().stream() + /** Returns the number of occurrences of edit classes present in the table. */ + private static Stream> getVariationalEditClasses(final ContentRow row) { + return row.results().editClassCounts.getOccurences().entrySet().stream() .filter(entry -> isEditToVariability(entry.getKey())); } - /** Compute the total sum of all occurrences of patterns present in this table. */ + /** Compute the total sum of all occurrences of edit classes present in this table. */ private static int countEditsToVariability(final ContentRow row) { - return getVariationalPatterns(row) + return getVariationalEditClasses(row) .map(entry -> entry.getValue().getTotalAmount()) .reduce(0, Integer::sum); } /** - * Compute the number of occurrences of {@code pattern} relative to the patterns actually + * Compute the number of occurrences of {@code editClass} relative to the edit classes actually * present in this table. */ - private String getRelativeShareOf(final ElementaryPattern pattern, final ContentRow row) { + private String getRelativeShareOf(final EditClass editClass, final ContentRow row) { final int totalAmount = countEditsToVariability(row); - return makeReadable(100.0 * ((double)row.results().elementaryPatternCounts.getOccurences().get(pattern).getTotalAmount()) / ((double) totalAmount)) + "\\%"; + return makeReadable(100.0 * ((double)row.results().editClassCounts.getOccurences().get(editClass).getTotalAmount()) / ((double) totalAmount)) + "\\%"; } /** diff --git a/src/main/java/org/variantsync/diffdetective/validation/PatternValidationTask.java b/src/main/java/org/variantsync/diffdetective/validation/EditClassValidationTask.java similarity index 91% rename from src/main/java/org/variantsync/diffdetective/validation/PatternValidationTask.java rename to src/main/java/org/variantsync/diffdetective/validation/EditClassValidationTask.java index fee108007..38ce99370 100644 --- a/src/main/java/org/variantsync/diffdetective/validation/PatternValidationTask.java +++ b/src/main/java/org/variantsync/diffdetective/validation/EditClassValidationTask.java @@ -13,7 +13,7 @@ import org.variantsync.diffdetective.diff.difftree.transform.DiffTreeTransformer; import org.variantsync.diffdetective.diff.result.CommitDiffResult; import org.variantsync.diffdetective.metadata.ExplainedFilterSummary; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.util.Clock; import org.variantsync.diffdetective.util.FileUtils; @@ -24,8 +24,8 @@ * Task for performing the ESEC/FSE'22 validation on a set of commits from a given repository. * @author Paul Bittner */ -public class PatternValidationTask extends CommitHistoryAnalysisTask { - public PatternValidationTask(Options options) { +public class EditClassValidationTask extends CommitHistoryAnalysisTask { + public EditClassValidationTask(Options options) { super(options); } @@ -61,7 +61,7 @@ public AnalysisResult call() throws Exception { final CommitDiff commitDiff = commitDiffResult.diff().get(); options.analysisStrategy().onCommit(commitDiff, ""); - // Count elementary edit pattern matches + // Count edit class matches int numDiffTrees = 0; for (final PatchDiff patch : commitDiff.getPatchDiffs()) { if (patch.isValid()) { @@ -74,9 +74,9 @@ public AnalysisResult call() throws Exception { } t.forAll(node -> { - if (node.isCode()) { - miningResult.elementaryPatternCounts.reportOccurrenceFor( - ProposedElementaryPatterns.Instance.match(node), + if (node.isArtifact()) { + miningResult.editClassCounts.reportOccurrenceFor( + ProposedEditClasses.Instance.match(node), commitDiff ); } diff --git a/src/main/java/org/variantsync/diffdetective/validation/Validation.java b/src/main/java/org/variantsync/diffdetective/validation/Validation.java index 1196bd501..431ac5aa4 100644 --- a/src/main/java/org/variantsync/diffdetective/validation/Validation.java +++ b/src/main/java/org/variantsync/diffdetective/validation/Validation.java @@ -49,10 +49,10 @@ public class Validation { /** * The {@link CommitHistoryAnalysisTaskFactory} for the {@link HistoryAnalysis} that will run our validation. - * This factory creates {@link PatternValidationTask}s with the respective settings. + * This factory creates {@link EditClassValidationTask}s with the respective settings. */ public static final CommitHistoryAnalysisTaskFactory VALIDATION_TASK_FACTORY = - (repo, differ, outputPath, commits) -> new PatternValidationTask(new CommitHistoryAnalysisTask.Options( + (repo, differ, outputPath, commits) -> new EditClassValidationTask(new CommitHistoryAnalysisTask.Options( repo, differ, outputPath, diff --git a/src/main/resources/tikz_header.tex b/src/main/resources/tikz_header.tex index 9cbe189d5..3d021847a 100644 --- a/src/main/resources/tikz_header.tex +++ b/src/main/resources/tikz_header.tex @@ -41,7 +41,7 @@ \tikzset{ text centered, annotation/.style = {draw=vtdAnnotationBorderColor, circle, inner sep=0pt, minimum size=6.5mm, font=\footnotesize, line width=.4mm, fill=black!5}, - artefact/.style = {draw=vtdCodeColor, circle, inner sep=0pt, minimum size=6.5mm, font=\footnotesize, line width=.4mm, fill=black!5}, + artifact/.style = {draw=vtdCodeColor, circle, inner sep=0pt, minimum size=6.5mm, font=\footnotesize, line width=.4mm, fill=black!5}, non/.style = {}, add/.style = {fill=diffAddColour}, rem/.style = {fill=diffRemColour, dashed}, diff --git a/src/test/java/ElementaryPatternsTest.java b/src/test/java/EditClassesTest.java similarity index 71% rename from src/test/java/ElementaryPatternsTest.java rename to src/test/java/EditClassesTest.java index 81a55281b..4ec3adc13 100644 --- a/src/test/java/ElementaryPatternsTest.java +++ b/src/test/java/EditClassesTest.java @@ -1,12 +1,12 @@ import org.junit.Assert; import org.junit.Test; import org.variantsync.diffdetective.diff.difftree.DiffTree; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import java.io.IOException; import java.nio.file.Path; -public class ElementaryPatternsTest { +public class EditClassesTest { private final static Path testDir = Constants.RESOURCE_DIR.resolve("patterns"); @Test @@ -14,10 +14,10 @@ public void testAtomics() throws IOException { final Path path = testDir.resolve("elementary.diff"); final DiffTree t = DiffTree.fromFile(path, false, true).unwrap().getSuccess(); t.forAll(node -> { - if (node.isCode()) { + if (node.isArtifact()) { Assert.assertEquals( node.getLabel(), - ProposedElementaryPatterns.Instance.match(node).getName() + ProposedEditClasses.Instance.match(node).getName() ); } }); diff --git a/src/test/java/LinuxParsingTest.java b/src/test/java/LinuxParsingTest.java index b2641f6fc..9bad73fe7 100644 --- a/src/test/java/LinuxParsingTest.java +++ b/src/test/java/LinuxParsingTest.java @@ -26,7 +26,7 @@ public void test1() throws IOException { // new FeatureExpressionFilter(LinuxKernel::isFeature).transform(t); t.forAll(n -> { - if (n.isMacro()) { + if (n.isAnnotation()) { Assert.assertTrue(n.getLabel().contains("CONFIG_"), () -> "Macro node " + n + " is not a feature annotation!"); } }); diff --git a/src/test/java/MarlinDebug.java b/src/test/java/MarlinDebug.java index 88625640e..b2d0e4340 100644 --- a/src/test/java/MarlinDebug.java +++ b/src/test/java/MarlinDebug.java @@ -23,7 +23,7 @@ import org.variantsync.diffdetective.feature.CPPAnnotationParser; import org.variantsync.diffdetective.mining.DiffTreeMiner; import org.variantsync.diffdetective.mining.MiningTask; -import org.variantsync.diffdetective.pattern.elementary.proposed.ProposedElementaryPatterns; +import org.variantsync.diffdetective.editclass.proposed.ProposedEditClasses; import org.variantsync.diffdetective.util.Clock; import org.variantsync.diffdetective.validation.Validation; @@ -102,9 +102,9 @@ public static void testCommit(final RepoInspection repoInspection, final String Logger.info(" Begin elementary pattern matching"); clock.start(); t.forAll(node -> { - if (node.isCode()) { + if (node.isArtifact()) { try { - Logger.info(ProposedElementaryPatterns.Instance.match(node)); + Logger.info(ProposedEditClasses.Instance.match(node)); } catch (Exception e) { //DiffTreeLineGraphExportOptions.RenderError().accept(patch, e); Logger.error(e); @@ -114,7 +114,7 @@ public static void testCommit(final RepoInspection repoInspection, final String Logger.info("isAdd: {}", node.isAdd()); Logger.info("isRem: {}", node.isRem()); Logger.info("isNon: {}", node.isNon()); - Logger.info("isCode: {}", node.isCode()); + Logger.info("isArtifact: {}", node.isArtifact()); // throw e; System.exit(0); } diff --git a/src/test/java/MoveDetectionTest.java b/src/test/java/MoveDetectionTest.java index 66e23a712..2ca98a82d 100644 --- a/src/test/java/MoveDetectionTest.java +++ b/src/test/java/MoveDetectionTest.java @@ -1,6 +1,6 @@ import org.variantsync.diffdetective.diff.difftree.DiffTree; import org.variantsync.diffdetective.diff.difftree.render.DiffTreeRenderer; -import org.variantsync.diffdetective.diff.difftree.transform.NaiveMovedCodeDetection; +import org.variantsync.diffdetective.diff.difftree.transform.NaiveMovedArtifactDetection; import java.io.IOException; import java.nio.file.Path; @@ -14,7 +14,7 @@ public void simpleTest() throws IOException { final DiffTree t = DiffTree.fromFile(resDir.resolve("simple.txt"), true, true).unwrap().getSuccess(); final DiffTreeRenderer renderer = DiffTreeRenderer.WithinDiffDetective(); renderer.render(t, "MoveDetectionTestSimpleTest_Before", genDir); - new NaiveMovedCodeDetection().transform(t); + new NaiveMovedArtifactDetection().transform(t); renderer.render(t, "MoveDetectionTestSimpleTest_After", genDir); } } diff --git a/src/test/java/PCTest.java b/src/test/java/PCTest.java index c80857c16..f19f33231 100644 --- a/src/test/java/PCTest.java +++ b/src/test/java/PCTest.java @@ -57,7 +57,7 @@ private void test(final TestCase testCase) throws IOException { final Path path = testDir.resolve(testCase.file); final DiffTree t = DiffTree.fromFile(path, false, true).unwrap().getSuccess(); t.forAll(node -> { - if (node.isCode()) { + if (node.isArtifact()) { final String text = node.getLabel().trim(); final ExpectedPC expectedPC = testCase.expectedResult.getOrDefault(text, null); if (expectedPC != null) { diff --git a/src/test/java/TestLineNumbers.java b/src/test/java/TestLineNumbers.java index 3fe80c794..e692cd86e 100644 --- a/src/test/java/TestLineNumbers.java +++ b/src/test/java/TestLineNumbers.java @@ -22,38 +22,38 @@ public void initTestCases() { // Testcases rely on stability of IDs final var elifchain_map = new HashMap>(); - elifchain_map.put(149, new Pair<>(new DiffLineNumber(1, 1, 1), new DiffLineNumber(11, 9, 10))); - elifchain_map.put(148, new Pair<>(new DiffLineNumber(1, 1, 1), new DiffLineNumber(2, 2, 2))); + elifchain_map.put(16, new Pair<>(DiffLineNumber.Invalid(), DiffLineNumber.Invalid())); + elifchain_map.put(147, new Pair<>(new DiffLineNumber(1, 1, 1), new DiffLineNumber(2, 2, 2))); elifchain_map.put(208, new Pair<>(new DiffLineNumber(2, 2, 2), new DiffLineNumber(4, 4, 4))); - elifchain_map.put(276, new Pair<>(new DiffLineNumber(3, 3, 3), new DiffLineNumber(4, 4, 4))); - elifchain_map.put(339, new Pair<>(new DiffLineNumber(4, 4, 4), new DiffLineNumber(8, 6, 6))); - elifchain_map.put(404, new Pair<>(new DiffLineNumber(5, 5, 5), new DiffLineNumber(6, 6, 6))); - elifchain_map.put(451, new Pair<>(new DiffLineNumber(6, -1, 6), new DiffLineNumber(10, -1, 9))); - elifchain_map.put(516, new Pair<>(new DiffLineNumber(7, -1, 7), new DiffLineNumber(8, -1, 8))); - elifchain_map.put(660, new Pair<>(new DiffLineNumber(9, 7, 8), new DiffLineNumber(10, 8, 9))); - elifchain_map.put(587, new Pair<>(new DiffLineNumber(8, 6, -1), new DiffLineNumber(10, 8, -1))); + elifchain_map.put(275, new Pair<>(new DiffLineNumber(3, 3, 3), new DiffLineNumber(4, 4, 4))); + elifchain_map.put(338, new Pair<>(new DiffLineNumber(4, 4, 4), new DiffLineNumber(8, 6, 6))); + elifchain_map.put(403, new Pair<>(new DiffLineNumber(5, 5, 5), new DiffLineNumber(6, 6, 6))); + elifchain_map.put(450, new Pair<>(new DiffLineNumber(6, -1, 6), new DiffLineNumber(10, -1, 9))); + elifchain_map.put(515, new Pair<>(new DiffLineNumber(7, -1, 7), new DiffLineNumber(8, -1, 8))); + elifchain_map.put(659, new Pair<>(new DiffLineNumber(9, 7, 8), new DiffLineNumber(10, 8, 9))); + elifchain_map.put(586, new Pair<>(new DiffLineNumber(8, 6, -1), new DiffLineNumber(10, 8, -1))); TestCase elifchain = new TestCase("elifchain.txt", elifchain_map); final var lineno1_map = new HashMap>(); - lineno1_map.put(149, new Pair<>(new DiffLineNumber(1, 1, 1), new DiffLineNumber(17, 14, 12))); - lineno1_map.put(148, new Pair<>(new DiffLineNumber(1, 1, 1), new DiffLineNumber(2, 2, 2))); + lineno1_map.put(16, new Pair<>(DiffLineNumber.Invalid(), DiffLineNumber.Invalid())); + lineno1_map.put(147, new Pair<>(new DiffLineNumber(1, 1, 1), new DiffLineNumber(2, 2, 2))); lineno1_map.put(208, new Pair<>(new DiffLineNumber(2, 2, 2), new DiffLineNumber(4, 4, 4))); - lineno1_map.put(276, new Pair<>(new DiffLineNumber(3, 3, 3), new DiffLineNumber(4, 4, 4))); - lineno1_map.put(404, new Pair<>(new DiffLineNumber(5, 5, 5), new DiffLineNumber(6, 6, 6))); - lineno1_map.put(452, new Pair<>(new DiffLineNumber(6, -1, 6), new DiffLineNumber(7, -1, 7))); - lineno1_map.put(524, new Pair<>(new DiffLineNumber(7, 6, -1), new DiffLineNumber(8, 7, -1))); - lineno1_map.put(596, new Pair<>(new DiffLineNumber(8, 7, 7), new DiffLineNumber(9, 8, 8))); + lineno1_map.put(275, new Pair<>(new DiffLineNumber(3, 3, 3), new DiffLineNumber(4, 4, 4))); + lineno1_map.put(403, new Pair<>(new DiffLineNumber(5, 5, 5), new DiffLineNumber(6, 6, 6))); + lineno1_map.put(451, new Pair<>(new DiffLineNumber(6, -1, 6), new DiffLineNumber(7, -1, 7))); + lineno1_map.put(523, new Pair<>(new DiffLineNumber(7, 6, -1), new DiffLineNumber(8, 7, -1))); + lineno1_map.put(595, new Pair<>(new DiffLineNumber(8, 7, 7), new DiffLineNumber(9, 8, 8))); lineno1_map.put(640, new Pair<>(new DiffLineNumber(9, -1, 8), new DiffLineNumber(11, -1, 10))); - lineno1_map.put(724, new Pair<>(new DiffLineNumber(10, 8, 9), new DiffLineNumber(11, 9, 10))); - lineno1_map.put(852, new Pair<>(new DiffLineNumber(12, 9, 11), new DiffLineNumber(13, 10, 12))); + lineno1_map.put(723, new Pair<>(new DiffLineNumber(10, 8, 9), new DiffLineNumber(11, 9, 10))); + lineno1_map.put(851, new Pair<>(new DiffLineNumber(12, 9, 11), new DiffLineNumber(13, 10, 12))); lineno1_map.put(904, new Pair<>(new DiffLineNumber(13, 10, -1), new DiffLineNumber(16, 13, -1))); - lineno1_map.put(1036, new Pair<>(new DiffLineNumber(15, 12, -1), new DiffLineNumber(16, 13, -1))); + lineno1_map.put(1035, new Pair<>(new DiffLineNumber(15, 12, -1), new DiffLineNumber(16, 13, -1))); TestCase lineno1 = new TestCase("lineno1.txt", lineno1_map); final var deleteMLM_map = new HashMap>(); - deleteMLM_map.put(149, new Pair<>(new DiffLineNumber(1, 1, 1), new DiffLineNumber(5, 5, 1))); + deleteMLM_map.put(16, new Pair<>(DiffLineNumber.Invalid(), DiffLineNumber.Invalid())); deleteMLM_map.put(136, new Pair<>(new DiffLineNumber(1, 1, -1), new DiffLineNumber(4, 4, -1))); - deleteMLM_map.put(268, new Pair<>(new DiffLineNumber(3, 3, -1), new DiffLineNumber(4, 4, -1))); + deleteMLM_map.put(267, new Pair<>(new DiffLineNumber(3, 3, -1), new DiffLineNumber(4, 4, -1))); TestCase deleteMLM = new TestCase("deleteMLM.txt", deleteMLM_map); testCases = List.of(elifchain, lineno1, deleteMLM); @@ -66,7 +66,7 @@ private static DiffTree loadFullDiff(final Path p) throws IOException { private static void printLineNumbers(final DiffTree diffTree) { diffTree.forAll(node -> System.out.println(node.diffType.symbol - + " " + node.codeType + + " " + node.nodeType + " \"" + node.getLabel().trim() + " with ID " + node.getID() + "\" old: " + node.getLinesBeforeEdit() diff --git a/src/test/resources/debug/test b/src/test/resources/debug/test index fd0416801..4dfe8792a 100644 --- a/src/test/resources/debug/test +++ b/src/test/resources/debug/test @@ -1,224 +1,224 @@ t # Marlin/src/inc/Conditionals_post.h$$$0e60c8b7e04a6cd2758108bcc80f2ab57deec23c -v 131589 m20 +v 131584 m20 v 12845568 m20 v 12910848 m10 -v 13042180 c6 -v 13107714 m22 +v 13042179 c6 +v 13107713 m22 v 12976128 m00 v 161743104 m10 -v 162005508 c7 +v 162005507 c7 v 161742848 m00 -e 131589 12845568 ba>m20>m20 +e 131584 12845568 ba>m20>m20 e 12845568 12910848 b>m20>m10 -e 12910848 13042180 b>m10>c6 -e 12976128 13042180 a>m00>c6 -e 12910848 13107714 b>m10>m22 -e 12976128 13107714 a>m00>m22 +e 12910848 13042179 b>m10>c6 +e 12976128 13042179 a>m00>c6 +e 12910848 13107713 b>m10>m22 +e 12976128 13107713 a>m00>m22 e 12845568 12976128 a>m20>m00 -e 131589 161743104 b>m20>m10 -e 161743104 162005508 b>m10>c7 -e 161742848 162005508 a>m00>c7 -e 131589 161742848 a>m20>m00 +e 131584 161743104 b>m20>m10 +e 161743104 162005507 b>m10>c7 +e 161742848 162005507 a>m00>c7 +e 131584 161742848 a>m20>m00 t # Marlin/src/module/endstops.cpp$$$0e60c8b7e04a6cd2758108bcc80f2ab57deec23c -v 131589 m20 +v 131584 m20 v 40698112 m10 -v 40829444 c6 +v 40829443 c6 v 40763392 m00 v 41484544 m10 -v 41615876 c6 -v 41681410 m22 +v 41615875 c6 +v 41681409 m22 v 41549824 m00 v 41877760 m10 -v 42009092 c6 -v 42074626 m22 +v 42009091 c6 +v 42074625 m22 v 41943040 m00 v 72876544 m20 v 73138688 m20 v 73269504 m10 -v 73400836 c6 -v 73466371 m23 +v 73400835 c6 +v 73466370 m23 v 73334784 m00 v 73990656 m20 v 74121472 m10 -v 74252804 c6 -v 74318339 m23 +v 74252803 c6 +v 74318338 m23 v 74186752 m00 -e 131589 40698112 b>m20>m10 -e 40698112 40829444 b>m10>c6 -e 40763392 40829444 a>m00>c6 -e 131589 40763392 a>m20>m00 -e 131589 41484544 b>m20>m10 -e 41484544 41615876 b>m10>c6 -e 41549824 41615876 a>m00>c6 -e 41484544 41681410 b>m10>m22 -e 41549824 41681410 a>m00>m22 -e 131589 41549824 a>m20>m00 -e 131589 41877760 b>m20>m10 -e 41877760 42009092 b>m10>c6 -e 41943040 42009092 a>m00>c6 -e 41877760 42074626 b>m10>m22 -e 41943040 42074626 a>m00>m22 -e 131589 41943040 a>m20>m00 -e 131589 72876544 ba>m20>m20 +e 131584 40698112 b>m20>m10 +e 40698112 40829443 b>m10>c6 +e 40763392 40829443 a>m00>c6 +e 131584 40763392 a>m20>m00 +e 131584 41484544 b>m20>m10 +e 41484544 41615875 b>m10>c6 +e 41549824 41615875 a>m00>c6 +e 41484544 41681409 b>m10>m22 +e 41549824 41681409 a>m00>m22 +e 131584 41549824 a>m20>m00 +e 131584 41877760 b>m20>m10 +e 41877760 42009091 b>m10>c6 +e 41943040 42009091 a>m00>c6 +e 41877760 42074625 b>m10>m22 +e 41943040 42074625 a>m00>m22 +e 131584 41943040 a>m20>m00 +e 131584 72876544 ba>m20>m20 e 72876544 73138688 ba>m20>m20 e 73138688 73269504 b>m20>m10 -e 73269504 73400836 b>m10>c6 -e 73334784 73400836 a>m00>c6 -e 73269504 73466371 b>m10>m23 -e 73334784 73466371 a>m00>m23 +e 73269504 73400835 b>m10>c6 +e 73334784 73400835 a>m00>c6 +e 73269504 73466370 b>m10>m23 +e 73334784 73466370 a>m00>m23 e 73138688 73334784 a>m20>m00 e 72876544 73990656 ba>m20>m20 e 73990656 74121472 b>m20>m10 -e 74121472 74252804 b>m10>c6 -e 74186752 74252804 a>m00>c6 -e 74121472 74318339 b>m10>m23 -e 74186752 74318339 a>m00>m23 +e 74121472 74252803 b>m10>c6 +e 74186752 74252803 a>m00>c6 +e 74121472 74318338 b>m10>m23 +e 74186752 74318338 a>m00>m23 e 73990656 74186752 a>m20>m00 t # Marlin/src/module/motion.cpp$$$0e60c8b7e04a6cd2758108bcc80f2ab57deec23c -v 131589 m20 +v 131584 m20 v 85262848 m20 v 88867328 m20 v 89457152 m20 v 89850112 m10 -v 89981444 c6 -v 90046979 m23 +v 89981443 c6 +v 90046978 m23 v 89915392 m00 v 90374656 m20 v 90767616 m10 -v 90898948 c6 -v 90964483 m23 +v 90898947 c6 +v 90964482 m23 v 90832896 m00 v 94634496 m20 v 95027456 m10 -v 95158788 c6 -v 95224323 m23 +v 95158787 c6 +v 95224322 m23 v 95092736 m00 v 95552000 m20 v 95944960 m10 -v 96076292 c6 -v 96141827 m23 +v 96076291 c6 +v 96141826 m23 v 96010240 m00 v 131006976 m20 -v 132317442 m12 -v 132514308 c7 -v 132382722 m02 +v 132317441 m12 +v 132514307 c7 +v 132382721 m02 v 133431808 m20 v 134349056 m10 -v 134480388 c6 +v 134480387 c6 v 134414336 m00 -e 131589 85262848 ba>m20>m20 +e 131584 85262848 ba>m20>m20 e 85262848 88867328 ba>m20>m20 e 88867328 89457152 ba>m20>m20 e 89457152 89850112 b>m20>m10 -e 89850112 89981444 b>m10>c6 -e 89915392 89981444 a>m00>c6 -e 89850112 90046979 b>m10>m23 -e 89915392 90046979 a>m00>m23 +e 89850112 89981443 b>m10>c6 +e 89915392 89981443 a>m00>c6 +e 89850112 90046978 b>m10>m23 +e 89915392 90046978 a>m00>m23 e 89457152 89915392 a>m20>m00 e 88867328 90374656 ba>m20>m20 e 90374656 90767616 b>m20>m10 -e 90767616 90898948 b>m10>c6 -e 90832896 90898948 a>m00>c6 -e 90767616 90964483 b>m10>m23 -e 90832896 90964483 a>m00>m23 +e 90767616 90898947 b>m10>c6 +e 90832896 90898947 a>m00>c6 +e 90767616 90964482 b>m10>m23 +e 90832896 90964482 a>m00>m23 e 90374656 90832896 a>m20>m00 e 88867328 94634496 ba>m20>m20 e 94634496 95027456 b>m20>m10 -e 95027456 95158788 b>m10>c6 -e 95092736 95158788 a>m00>c6 -e 95027456 95224323 b>m10>m23 -e 95092736 95224323 a>m00>m23 +e 95027456 95158787 b>m10>c6 +e 95092736 95158787 a>m00>c6 +e 95027456 95224322 b>m10>m23 +e 95092736 95224322 a>m00>m23 e 94634496 95092736 a>m20>m00 e 88867328 95552000 ba>m20>m20 e 95552000 95944960 b>m20>m10 -e 95944960 96076292 b>m10>c6 -e 96010240 96076292 a>m00>c6 -e 95944960 96141827 b>m10>m23 -e 96010240 96141827 a>m00>m23 +e 95944960 96076291 b>m10>c6 +e 96010240 96076291 a>m00>c6 +e 95944960 96141826 b>m10>m23 +e 96010240 96141826 a>m00>m23 e 95552000 96010240 a>m20>m00 e 85262848 131006976 ba>m20>m20 -e 131006976 132317442 b>m20>m12 -e 132317442 132514308 b>m12>c7 -e 132382722 132514308 a>m02>c7 -e 131006976 132382722 a>m20>m02 +e 131006976 132317441 b>m20>m12 +e 132317441 132514307 b>m12>c7 +e 132382721 132514307 a>m02>c7 +e 131006976 132382721 a>m20>m02 e 85262848 133431808 ba>m20>m20 e 133431808 134349056 b>m20>m10 -e 134349056 134480388 b>m10>c6 -e 134414336 134480388 a>m00>c6 +e 134349056 134480387 b>m10>c6 +e 134414336 134480387 a>m00>c6 e 133431808 134414336 a>m20>m00 t # Marlin/src/module/planner.cpp$$$0e60c8b7e04a6cd2758108bcc80f2ab57deec23c -v 131589 m20 +v 131584 m20 v 113181184 m20 -v 114491651 m13 -v 114688516 c6 -v 115671554 m22 -v 114556931 m03 +v 114491650 m13 +v 114688515 c6 +v 115671553 m22 +v 114556930 m03 v 125960448 m10 -v 126025988 c3 -v 126353924 c6 -v 126419204 c3 -v 126550275 m13 -v 126615812 c3 -v 126943491 m13 -v 127009028 c3 -v 129106435 m23 -v 129171716 c2 -v 129499140 c0 -v 129630211 m03 -v 129695748 c1 -v 129827330 m22 +v 126025987 c3 +v 126353923 c6 +v 126419203 c3 +v 126550274 m13 +v 126615811 c3 +v 126943490 m13 +v 127009027 c3 +v 129106434 m23 +v 129171715 c2 +v 129499139 c0 +v 129630210 m03 +v 129695747 c1 +v 129827329 m22 v 126156800 m00 -v 126222340 c1 +v 126222339 c1 v 127401984 m00 v 127467520 m00 -v 127533060 c1 -v 127664131 m03 -v 127729668 c1 -v 128057347 m03 -v 128122884 c1 +v 127533059 c1 +v 127664130 m03 +v 127729667 c1 +v 128057346 m03 +v 128122883 c1 v 128516096 m00 -v 128581636 c1 +v 128581635 c1 v 128712704 m00 -v 128778244 c1 +v 128778243 c1 v 128909312 m00 -v 128974852 c1 +v 128974851 c1 v 130547968 m10 v 130613504 m10 -v 130679044 c3 +v 130679043 c3 v 130810112 m10 -v 130875652 c3 +v 130875651 c3 v 131006720 m10 -v 131072260 c3 -v 131334404 c2 +v 131072259 c3 +v 131334403 c2 v 131465728 m20 -v 131530756 c0 +v 131530755 c0 v 134676736 m10 -v 134808068 c6 +v 134808067 c6 v 134742016 m00 v 135069696 m00 -v 135135236 c1 +v 135135235 c1 v 135397888 m20 v 135463424 m20 -v 135528708 c2 -v 137298435 m23 -v 137363716 c2 -v 137691139 m03 -v 137756676 c1 -v 137888258 m22 +v 135528707 c2 +v 137298434 m23 +v 137363715 c2 +v 137691138 m03 +v 137756675 c1 +v 137888257 m22 v 139919616 m10 -v 140050948 c6 -v 140313091 m23 +v 140050947 c6 +v 140313090 m23 v 139984896 m00 v 145162496 m10 -v 145293828 c6 +v 145293827 c6 v 145555968 m20 -v 145752579 m23 +v 145752578 m23 v 145227776 m00 v 147194112 m10 v 147325440 m20 @@ -226,158 +226,158 @@ v 147522048 m20 v 147718656 m20 v 147259392 m00 v 167313920 m20 -v 170721540 c2 -v 170786820 c0 +v 170721539 c2 +v 170786819 c0 v 132973056 m20 -v 133628419 m23 -v 133496835 m03 -v 133562372 c1 -e 131589 113181184 ba>m20>m20 -e 113181184 114491651 b>m20>m13 -e 114491651 114688516 b>m13>c6 -e 114556931 114688516 a>m03>c6 -e 114491651 115671554 b>m13>m22 -e 114556931 115671554 a>m03>m22 -e 113181184 114556931 a>m20>m03 -e 131589 125960448 b>m20>m10 -e 125960448 126025988 b>m10>c3 -e 125960448 126353924 b>m10>c6 -e 126156800 126353924 a>m00>c6 -e 125960448 126419204 b>m10>c3 -e 125960448 126550275 b>m10>m13 -e 126550275 126615812 b>m13>c3 -e 126550275 126943491 b>m13>m13 -e 126943491 127009028 b>m13>c3 -e 126943491 129106435 b>m13>m23 -e 127401984 129106435 a>m00>m23 -e 129106435 129171716 b>m23>c2 -e 129106435 129499140 a>m23>c0 -e 129106435 129630211 a>m23>m03 -e 129630211 129695748 a>m03>c1 -e 129106435 129827330 b>m23>m22 -e 129630211 129827330 a>m03>m22 -e 131589 126156800 a>m20>m00 -e 126156800 126222340 a>m00>c1 -e 131589 127401984 a>m20>m00 +v 133628418 m23 +v 133496834 m03 +v 133562371 c1 +e 131584 113181184 ba>m20>m20 +e 113181184 114491650 b>m20>m13 +e 114491650 114688515 b>m13>c6 +e 114556930 114688515 a>m03>c6 +e 114491650 115671553 b>m13>m22 +e 114556930 115671553 a>m03>m22 +e 113181184 114556930 a>m20>m03 +e 131584 125960448 b>m20>m10 +e 125960448 126025987 b>m10>c3 +e 125960448 126353923 b>m10>c6 +e 126156800 126353923 a>m00>c6 +e 125960448 126419203 b>m10>c3 +e 125960448 126550274 b>m10>m13 +e 126550274 126615811 b>m13>c3 +e 126550274 126943490 b>m13>m13 +e 126943490 127009027 b>m13>c3 +e 126943490 129106434 b>m13>m23 +e 127401984 129106434 a>m00>m23 +e 129106434 129171715 b>m23>c2 +e 129106434 129499139 a>m23>c0 +e 129106434 129630210 a>m23>m03 +e 129630210 129695747 a>m03>c1 +e 129106434 129827329 b>m23>m22 +e 129630210 129827329 a>m03>m22 +e 131584 126156800 a>m20>m00 +e 126156800 126222339 a>m00>c1 +e 131584 127401984 a>m20>m00 e 127401984 127467520 a>m00>m00 -e 127467520 127533060 a>m00>c1 -e 127467520 127664131 a>m00>m03 -e 127664131 127729668 a>m03>c1 -e 127664131 128057347 a>m03>m03 -e 128057347 128122884 a>m03>c1 +e 127467520 127533059 a>m00>c1 +e 127467520 127664130 a>m00>m03 +e 127664130 127729667 a>m03>c1 +e 127664130 128057346 a>m03>m03 +e 128057346 128122883 a>m03>c1 e 127401984 128516096 a>m00>m00 -e 128516096 128581636 a>m00>c1 +e 128516096 128581635 a>m00>c1 e 127401984 128712704 a>m00>m00 -e 128712704 128778244 a>m00>c1 +e 128712704 128778243 a>m00>c1 e 127401984 128909312 a>m00>m00 -e 128909312 128974852 a>m00>c1 -e 131589 130547968 b>m20>m10 +e 128909312 128974851 a>m00>c1 +e 131584 130547968 b>m20>m10 e 130547968 130613504 b>m10>m10 -e 130613504 130679044 b>m10>c3 +e 130613504 130679043 b>m10>c3 e 130547968 130810112 b>m10>m10 -e 130810112 130875652 b>m10>c3 +e 130810112 130875651 b>m10>c3 e 130547968 131006720 b>m10>m10 -e 131006720 131072260 b>m10>c3 -e 131589 131334404 b>m20>c2 -e 131589 131465728 ba>m20>m20 -e 131465728 131530756 a>m20>c0 -e 131589 134676736 b>m20>m10 -e 134676736 134808068 b>m10>c6 -e 134742016 134808068 a>m00>c6 -e 131589 134742016 a>m20>m00 -e 131589 135069696 a>m20>m00 -e 135069696 135135236 a>m00>c1 -e 131589 135397888 ba>m20>m20 +e 131006720 131072259 b>m10>c3 +e 131584 131334403 b>m20>c2 +e 131584 131465728 ba>m20>m20 +e 131465728 131530755 a>m20>c0 +e 131584 134676736 b>m20>m10 +e 134676736 134808067 b>m10>c6 +e 134742016 134808067 a>m00>c6 +e 131584 134742016 a>m20>m00 +e 131584 135069696 a>m20>m00 +e 135069696 135135235 a>m00>c1 +e 131584 135397888 ba>m20>m20 e 135397888 135463424 ba>m20>m20 -e 135463424 135528708 b>m20>c2 -e 135397888 137298435 ba>m20>m23 -e 137298435 137363716 b>m23>c2 -e 137298435 137691139 a>m23>m03 -e 137691139 137756676 a>m03>c1 -e 137298435 137888258 b>m23>m22 -e 137691139 137888258 a>m03>m22 -e 131589 139919616 b>m20>m10 -e 139919616 140050948 b>m10>c6 -e 139984896 140050948 a>m00>c6 -e 139919616 140313091 b>m10>m23 -e 139984896 140313091 a>m00>m23 -e 131589 139984896 a>m20>m00 -e 131589 145162496 b>m20>m10 -e 145162496 145293828 b>m10>c6 -e 145227776 145293828 a>m00>c6 +e 135463424 135528707 b>m20>c2 +e 135397888 137298434 ba>m20>m23 +e 137298434 137363715 b>m23>c2 +e 137298434 137691138 a>m23>m03 +e 137691138 137756675 a>m03>c1 +e 137298434 137888257 b>m23>m22 +e 137691138 137888257 a>m03>m22 +e 131584 139919616 b>m20>m10 +e 139919616 140050947 b>m10>c6 +e 139984896 140050947 a>m00>c6 +e 139919616 140313090 b>m10>m23 +e 139984896 140313090 a>m00>m23 +e 131584 139984896 a>m20>m00 +e 131584 145162496 b>m20>m10 +e 145162496 145293827 b>m10>c6 +e 145227776 145293827 a>m00>c6 e 145162496 145555968 b>m10>m20 e 145227776 145555968 a>m00>m20 -e 145162496 145752579 b>m10>m23 -e 145227776 145752579 a>m00>m23 -e 131589 145227776 a>m20>m00 -e 131589 147194112 b>m20>m10 +e 145162496 145752578 b>m10>m23 +e 145227776 145752578 a>m00>m23 +e 131584 145227776 a>m20>m00 +e 131584 147194112 b>m20>m10 e 147194112 147325440 b>m10>m20 e 147259392 147325440 a>m00>m20 e 147194112 147522048 b>m10>m20 e 147259392 147522048 a>m00>m20 e 147194112 147718656 b>m10>m20 e 147259392 147718656 a>m00>m20 -e 131589 147259392 a>m20>m00 -e 131589 167313920 ba>m20>m20 -e 167313920 170721540 b>m20>c2 -e 167313920 170786820 a>m20>c0 -e 131589 132973056 ba>m20>m20 -e 132973056 133628419 b>m20>m23 -e 133496835 133628419 a>m03>m23 -e 132973056 133496835 a>m20>m03 -e 133496835 133562372 a>m03>c1 +e 131584 147259392 a>m20>m00 +e 131584 167313920 ba>m20>m20 +e 167313920 170721539 b>m20>c2 +e 167313920 170786819 a>m20>c0 +e 131584 132973056 ba>m20>m20 +e 132973056 133628418 b>m20>m23 +e 133496834 133628418 a>m03>m23 +e 132973056 133496834 a>m20>m03 +e 133496834 133562371 a>m03>c1 t # Marlin/src/module/stepper.cpp$$$0e60c8b7e04a6cd2758108bcc80f2ab57deec23c -v 131589 m20 +v 131584 m20 v 144310784 m20 -v 145227779 m03 -v 145293316 c1 -v 145359362 m22 +v 145227778 m03 +v 145293315 c1 +v 145359361 m22 v 183894272 m10 -v 185008644 c6 -v 185074178 m22 +v 185008643 c6 +v 185074177 m22 v 184025600 m20 -v 184811523 m03 -v 184877060 c1 +v 184811522 m03 +v 184877059 c1 v 183959552 m00 v 191693056 m10 -v 191824388 c6 +v 191824387 c6 v 191758336 m00 v 191955200 m10 -v 192086532 c6 +v 192086531 c6 v 192020480 m00 v 189006336 m20 -v 189858306 m22 -v 189595651 m03 -v 189661188 c1 -e 131589 144310784 ba>m20>m20 -e 144310784 145227779 a>m20>m03 -e 145227779 145293316 a>m03>c1 -e 144310784 145359362 b>m20>m22 -e 145227779 145359362 a>m03>m22 -e 131589 183894272 b>m20>m10 -e 183894272 185008644 b>m10>c6 -e 183959552 185008644 a>m00>c6 -e 183894272 185074178 b>m10>m22 -e 183959552 185074178 a>m00>m22 +v 189858305 m22 +v 189595650 m03 +v 189661187 c1 +e 131584 144310784 ba>m20>m20 +e 144310784 145227778 a>m20>m03 +e 145227778 145293315 a>m03>c1 +e 144310784 145359361 b>m20>m22 +e 145227778 145359361 a>m03>m22 +e 131584 183894272 b>m20>m10 +e 183894272 185008643 b>m10>c6 +e 183959552 185008643 a>m00>c6 +e 183894272 185074177 b>m10>m22 +e 183959552 185074177 a>m00>m22 e 183894272 184025600 b>m10>m20 e 183959552 184025600 a>m00>m20 -e 184025600 184811523 a>m20>m03 -e 184811523 184877060 a>m03>c1 -e 131589 183959552 a>m20>m00 -e 131589 191693056 b>m20>m10 -e 191693056 191824388 b>m10>c6 -e 191758336 191824388 a>m00>c6 -e 131589 191758336 a>m20>m00 -e 131589 191955200 b>m20>m10 -e 191955200 192086532 b>m10>c6 -e 192020480 192086532 a>m00>c6 -e 131589 192020480 a>m20>m00 -e 131589 189006336 ba>m20>m20 -e 189006336 189858306 b>m20>m22 -e 189595651 189858306 a>m03>m22 -e 189006336 189595651 a>m20>m03 -e 189595651 189661188 a>m03>c1 +e 184025600 184811522 a>m20>m03 +e 184811522 184877059 a>m03>c1 +e 131584 183959552 a>m20>m00 +e 131584 191693056 b>m20>m10 +e 191693056 191824387 b>m10>c6 +e 191758336 191824387 a>m00>c6 +e 131584 191758336 a>m20>m00 +e 131584 191955200 b>m20>m10 +e 191955200 192086531 b>m10>c6 +e 192020480 192086531 a>m00>c6 +e 131584 192020480 a>m20>m00 +e 131584 189006336 ba>m20>m20 +e 189006336 189858305 b>m20>m22 +e 189595650 189858305 a>m03>m22 +e 189006336 189595650 a>m20>m03 +e 189595650 189661187 a>m03>c1 diff --git a/src/test/resources/line_graph/vulkan_structs.hpp$$$fd641ac85c6170c34845db5e345d3bf9cedce8d7.lg b/src/test/resources/line_graph/vulkan_structs.hpp$$$fd641ac85c6170c34845db5e345d3bf9cedce8d7.lg index 37652194f..10cea2dc1 100644 --- a/src/test/resources/line_graph/vulkan_structs.hpp$$$fd641ac85c6170c34845db5e345d3bf9cedce8d7.lg +++ b/src/test/resources/line_graph/vulkan_structs.hpp$$$fd641ac85c6170c34845db5e345d3bf9cedce8d7.lg @@ -1,1937 +1,1937 @@ t # thirdparty/vulkan/include/vulkan/vulkan_structs.hpp$$$fd641ac85c6170c34845db5e345d3bf9cedce8d7 -v 149 NON_ROOT_"" +v 144 NON_ROOT_"" v 592 NON_IF_"if -VULKAN_STRUCTS_HPP" -v 900 ADD_CODE_"" +v 899 ADD_CODE_"" v 3200 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3284 NON_CODE_"" +v 3283 NON_CODE_"" v 8192 ADD_IF_"if -VULKAN_HPP_NO_UNION_CONSTRUCTORS" -v 8276 NON_CODE_"" +v 8275 NON_CODE_"" v 9024 ADD_IF_"if -VULKAN_HPP_NO_UNION_SETTERS" -v 9108 NON_CODE_"" +v 9107 NON_CODE_"" v 14464 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 14548 NON_CODE_"" +v 14547 NON_CODE_"" v 22272 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 22356 NON_CODE_"" +v 22355 NON_CODE_"" v 27648 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 27732 NON_CODE_"" +v 27731 NON_CODE_"" v 30976 ADD_IF_"if -VULKAN_HPP_NO_UNION_CONSTRUCTORS" -v 31060 NON_CODE_"" +v 31059 NON_CODE_"" v 32384 ADD_IF_"if -VULKAN_HPP_NO_UNION_SETTERS" -v 32468 NON_CODE_"" +v 32467 NON_CODE_"" v 37632 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 37716 NON_CODE_"" +v 37715 NON_CODE_"" v 41344 ADD_IF_"if -VULKAN_HPP_NO_UNION_CONSTRUCTORS" -v 41428 NON_CODE_"" +v 41427 NON_CODE_"" v 42112 ADD_IF_"if -VULKAN_HPP_NO_UNION_SETTERS" -v 42196 NON_CODE_"" +v 42195 NON_CODE_"" v 50112 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 50196 NON_CODE_"" +v 50195 NON_CODE_"" v 53696 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 53780 NON_CODE_"" -v 54484 NON_CODE_"" +v 53779 NON_CODE_"" +v 54483 NON_CODE_"" v 54976 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 55060 NON_CODE_"" -v 55764 NON_CODE_"" +v 55059 NON_CODE_"" +v 55763 NON_CODE_"" v 53640 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 54920 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 60672 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 60756 NON_CODE_"" +v 60755 NON_CODE_"" v 66880 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 66964 NON_CODE_"" +v 66963 NON_CODE_"" v 74176 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 74260 NON_CODE_"" +v 74259 NON_CODE_"" v 83264 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 83348 NON_CODE_"" +v 83347 NON_CODE_"" v 93440 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 93524 NON_CODE_"" +v 93523 NON_CODE_"" v 99712 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 99796 NON_CODE_"" +v 99795 NON_CODE_"" v 104512 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 104596 NON_CODE_"" +v 104595 NON_CODE_"" v 112000 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 112084 NON_CODE_"" +v 112083 NON_CODE_"" v 114560 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 114644 NON_CODE_"" +v 114643 NON_CODE_"" v 114504 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 120320 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 120404 NON_CODE_"" +v 120403 NON_CODE_"" v 126464 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 126548 NON_CODE_"" +v 126547 NON_CODE_"" v 132160 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 132244 NON_CODE_"" +v 132243 NON_CODE_"" v 136384 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 136468 NON_CODE_"" +v 136467 NON_CODE_"" v 141184 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 141268 NON_CODE_"" +v 141267 NON_CODE_"" v 149056 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 149140 NON_CODE_"" +v 149139 NON_CODE_"" v 157184 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 157268 NON_CODE_"" +v 157267 NON_CODE_"" v 163392 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 163476 NON_CODE_"" +v 163475 NON_CODE_"" v 170688 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 170772 NON_CODE_"" +v 170771 NON_CODE_"" v 182592 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 182676 NON_CODE_"" +v 182675 NON_CODE_"" v 188608 ADD_IF_"if -VULKAN_HPP_NO_UNION_CONSTRUCTORS" -v 188692 NON_CODE_"" +v 188691 NON_CODE_"" v 190144 ADD_IF_"if -VULKAN_HPP_NO_UNION_SETTERS" -v 190228 NON_CODE_"" +v 190227 NON_CODE_"" v 195584 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 195668 NON_CODE_"" +v 195667 NON_CODE_"" v 200256 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 200340 NON_CODE_"" +v 200339 NON_CODE_"" v 205888 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 205972 NON_CODE_"" +v 205971 NON_CODE_"" v 213056 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 213140 NON_CODE_"" +v 213139 NON_CODE_"" v 219136 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 219220 NON_CODE_"" +v 219219 NON_CODE_"" v 225984 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 226068 NON_CODE_"" +v 226067 NON_CODE_"" v 245968 NON_IF_"if VK_USE_PLATFORM_ANDROID_KHR" v 247872 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 247956 NON_CODE_"" +v 247955 NON_CODE_"" v 254016 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 254100 NON_CODE_"" +v 254099 NON_CODE_"" v 261888 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 261972 NON_CODE_"" +v 261971 NON_CODE_"" v 271104 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 271188 NON_CODE_"" +v 271187 NON_CODE_"" v 280576 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 280660 NON_CODE_"" +v 280659 NON_CODE_"" v 286400 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 286484 NON_CODE_"" +v 286483 NON_CODE_"" v 291328 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 291412 NON_CODE_"" +v 291411 NON_CODE_"" v 297600 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 297684 NON_CODE_"" +v 297683 NON_CODE_"" v 302528 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 302612 NON_CODE_"" +v 302611 NON_CODE_"" v 306944 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 307028 NON_CODE_"" +v 307027 NON_CODE_"" v 312896 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 312980 NON_CODE_"" +v 312979 NON_CODE_"" v 315136 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 315220 NON_CODE_"" +v 315219 NON_CODE_"" v 315080 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 320576 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 320660 NON_CODE_"" +v 320659 NON_CODE_"" v 325056 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 325140 NON_CODE_"" +v 325139 NON_CODE_"" v 328960 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 329044 NON_CODE_"" +v 329043 NON_CODE_"" v 334912 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 334996 NON_CODE_"" +v 334995 NON_CODE_"" v 337472 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 337556 NON_CODE_"" +v 337555 NON_CODE_"" v 337416 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 343552 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 343636 NON_CODE_"" +v 343635 NON_CODE_"" v 344832 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 344916 NON_CODE_"" +v 344915 NON_CODE_"" v 344776 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 350272 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 350356 NON_CODE_"" +v 350355 NON_CODE_"" v 356032 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 356116 NON_CODE_"" +v 356115 NON_CODE_"" v 360320 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 360404 NON_CODE_"" +v 360403 NON_CODE_"" v 366144 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 366228 NON_CODE_"" +v 366227 NON_CODE_"" v 367424 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 367508 NON_CODE_"" -v 368148 NON_CODE_"" +v 367507 NON_CODE_"" +v 368147 NON_CODE_"" v 369088 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 369172 NON_CODE_"" +v 369171 NON_CODE_"" v 367368 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 369032 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 374848 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 374932 NON_CODE_"" +v 374931 NON_CODE_"" v 381120 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 381204 NON_CODE_"" +v 381203 NON_CODE_"" v 386880 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 386964 NON_CODE_"" +v 386963 NON_CODE_"" v 392256 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 392340 NON_CODE_"" +v 392339 NON_CODE_"" v 397312 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 397396 NON_CODE_"" +v 397395 NON_CODE_"" v 401792 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 401876 NON_CODE_"" +v 401875 NON_CODE_"" v 408512 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 408596 NON_CODE_"" +v 408595 NON_CODE_"" v 409792 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 409876 NON_CODE_"" +v 409875 NON_CODE_"" v 409736 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 415168 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 415252 NON_CODE_"" +v 415251 NON_CODE_"" v 416512 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 416596 NON_CODE_"" +v 416595 NON_CODE_"" v 416456 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 421184 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 421268 NON_CODE_"" +v 421267 NON_CODE_"" v 426112 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 426196 NON_CODE_"" +v 426195 NON_CODE_"" v 431168 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 431252 NON_CODE_"" +v 431251 NON_CODE_"" v 436672 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 436756 NON_CODE_"" +v 436755 NON_CODE_"" v 443904 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 443988 NON_CODE_"" +v 443987 NON_CODE_"" v 445248 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 445332 NON_CODE_"" +v 445331 NON_CODE_"" v 445192 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 452608 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 452692 NON_CODE_"" +v 452691 NON_CODE_"" v 453888 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 453972 NON_CODE_"" -v 454676 NON_CODE_"" +v 453971 NON_CODE_"" +v 454675 NON_CODE_"" v 455552 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 455636 NON_CODE_"" -v 456340 NON_CODE_"" +v 455635 NON_CODE_"" +v 456339 NON_CODE_"" v 457216 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 457300 NON_CODE_"" -v 458004 NON_CODE_"" +v 457299 NON_CODE_"" +v 458003 NON_CODE_"" v 458880 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 458964 NON_CODE_"" -v 459668 NON_CODE_"" +v 458963 NON_CODE_"" +v 459667 NON_CODE_"" v 460544 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 460628 NON_CODE_"" +v 460627 NON_CODE_"" v 453832 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 455496 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 457160 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 458824 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 460488 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 466496 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 466580 NON_CODE_"" +v 466579 NON_CODE_"" v 471872 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 471956 NON_CODE_"" +v 471955 NON_CODE_"" v 477824 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 477908 NON_CODE_"" +v 477907 NON_CODE_"" v 486528 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 486612 NON_CODE_"" +v 486611 NON_CODE_"" v 489344 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 489428 NON_CODE_"" -v 490132 NON_CODE_"" +v 489427 NON_CODE_"" +v 490131 NON_CODE_"" v 489288 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 495296 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 495380 NON_CODE_"" +v 495379 NON_CODE_"" v 500480 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 500564 NON_CODE_"" +v 500563 NON_CODE_"" v 508032 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 508116 NON_CODE_"" +v 508115 NON_CODE_"" v 510848 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 510932 NON_CODE_"" +v 510931 NON_CODE_"" v 510792 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 516416 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 516500 NON_CODE_"" +v 516499 NON_CODE_"" v 521600 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 521684 NON_CODE_"" +v 521683 NON_CODE_"" v 527168 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 527252 NON_CODE_"" +v 527251 NON_CODE_"" v 534336 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 534420 NON_CODE_"" +v 534419 NON_CODE_"" v 542656 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 542740 NON_CODE_"" +v 542739 NON_CODE_"" v 551616 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 551700 NON_CODE_"" +v 551699 NON_CODE_"" v 560832 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 560916 NON_CODE_"" +v 560915 NON_CODE_"" v 566208 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 566292 NON_CODE_"" +v 566291 NON_CODE_"" v 571968 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 572052 NON_CODE_"" +v 572051 NON_CODE_"" v 579072 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 579156 NON_CODE_"" +v 579155 NON_CODE_"" v 591488 ADD_IF_"if -VULKAN_HPP_NO_UNION_CONSTRUCTORS" -v 591572 NON_CODE_"" +v 591571 NON_CODE_"" v 592320 ADD_IF_"if -VULKAN_HPP_NO_UNION_SETTERS" -v 592404 NON_CODE_"" +v 592403 NON_CODE_"" v 596544 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 596628 NON_CODE_"" +v 596627 NON_CODE_"" v 599616 ADD_IF_"if -VULKAN_HPP_NO_UNION_CONSTRUCTORS" -v 599700 NON_CODE_"" +v 599699 NON_CODE_"" v 600320 ADD_IF_"if -VULKAN_HPP_NO_UNION_SETTERS" -v 600404 NON_CODE_"" +v 600403 NON_CODE_"" v 604544 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 604628 NON_CODE_"" +v 604627 NON_CODE_"" v 608576 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 608660 NON_CODE_"" +v 608659 NON_CODE_"" v 613568 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 613652 NON_CODE_"" +v 613651 NON_CODE_"" v 619840 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 619924 NON_CODE_"" +v 619923 NON_CODE_"" v 621632 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 621716 NON_CODE_"" +v 621715 NON_CODE_"" v 621576 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 626880 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 626964 NON_CODE_"" +v 626963 NON_CODE_"" v 633728 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 633812 NON_CODE_"" +v 633811 NON_CODE_"" v 641664 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 641748 NON_CODE_"" +v 641747 NON_CODE_"" v 647744 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 647828 NON_CODE_"" +v 647827 NON_CODE_"" v 653696 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 653780 NON_CODE_"" +v 653779 NON_CODE_"" v 659840 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 659924 NON_CODE_"" +v 659923 NON_CODE_"" v 666880 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 666964 NON_CODE_"" +v 666963 NON_CODE_"" v 673408 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 673492 NON_CODE_"" +v 673491 NON_CODE_"" v 679232 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 679316 NON_CODE_"" +v 679315 NON_CODE_"" v 684800 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 684884 NON_CODE_"" +v 684883 NON_CODE_"" v 690816 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 690900 NON_CODE_"" +v 690899 NON_CODE_"" v 691776 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 691860 NON_CODE_"" -v 692564 NON_CODE_"" +v 691859 NON_CODE_"" +v 692563 NON_CODE_"" v 693376 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 693460 NON_CODE_"" +v 693459 NON_CODE_"" v 691720 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 693320 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 698752 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 698836 NON_CODE_"" +v 698835 NON_CODE_"" v 706432 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 706516 NON_CODE_"" +v 706515 NON_CODE_"" v 713984 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 714068 NON_CODE_"" +v 714067 NON_CODE_"" v 720320 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 720404 NON_CODE_"" +v 720403 NON_CODE_"" v 726912 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 726996 NON_CODE_"" +v 726995 NON_CODE_"" v 735744 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 735828 NON_CODE_"" +v 735827 NON_CODE_"" v 742656 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 742740 NON_CODE_"" +v 742739 NON_CODE_"" v 749312 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 749396 NON_CODE_"" +v 749395 NON_CODE_"" v 751360 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 751444 NON_CODE_"" +v 751443 NON_CODE_"" v 751304 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 758144 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 758228 NON_CODE_"" +v 758227 NON_CODE_"" v 760704 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 760788 NON_CODE_"" +v 760787 NON_CODE_"" v 760648 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 766336 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 766420 NON_CODE_"" +v 766419 NON_CODE_"" v 772352 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 772436 NON_CODE_"" +v 772435 NON_CODE_"" v 780736 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 780820 NON_CODE_"" +v 780819 NON_CODE_"" v 789504 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 789588 NON_CODE_"" +v 789587 NON_CODE_"" v 792320 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 792404 NON_CODE_"" +v 792403 NON_CODE_"" v 792264 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 799360 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 799444 NON_CODE_"" +v 799443 NON_CODE_"" v 801920 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 802004 NON_CODE_"" +v 802003 NON_CODE_"" v 801864 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 808064 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 808148 NON_CODE_"" +v 808147 NON_CODE_"" v 813632 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 813716 NON_CODE_"" +v 813715 NON_CODE_"" v 817808 NON_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" v 819968 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 820036 ADD_CODE_"" +v 820035 ADD_CODE_"" v 822208 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 822292 NON_CODE_"" +v 822291 NON_CODE_"" v 826496 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 826564 ADD_CODE_"" -v 827156 NON_CODE_"" +v 826563 ADD_CODE_"" +v 827155 NON_CODE_"" v 827904 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 827972 ADD_CODE_"" +v 827971 ADD_CODE_"" v 833728 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 833812 NON_CODE_"" +v 833811 NON_CODE_"" v 837584 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 840384 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 840468 NON_CODE_"" +v 840467 NON_CODE_"" v 841664 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 841748 NON_CODE_"" -v 842388 NON_CODE_"" +v 841747 NON_CODE_"" +v 842387 NON_CODE_"" v 843200 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 843284 NON_CODE_"" +v 843283 NON_CODE_"" v 841608 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 843144 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 848832 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 848916 NON_CODE_"" +v 848915 NON_CODE_"" v 854784 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 854868 NON_CODE_"" +v 854867 NON_CODE_"" v 862528 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 862612 NON_CODE_"" +v 862611 NON_CODE_"" v 865024 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 865108 NON_CODE_"" +v 865107 NON_CODE_"" v 864968 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 870848 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 870932 NON_CODE_"" +v 870931 NON_CODE_"" v 877056 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 877140 NON_CODE_"" +v 877139 NON_CODE_"" v 883008 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 883092 NON_CODE_"" +v 883091 NON_CODE_"" v 892096 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 892180 NON_CODE_"" +v 892179 NON_CODE_"" v 895040 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 895124 NON_CODE_"" -v 895828 NON_CODE_"" +v 895123 NON_CODE_"" +v 895827 NON_CODE_"" v 896704 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 896788 NON_CODE_"" -v 897492 NON_CODE_"" +v 896787 NON_CODE_"" +v 897491 NON_CODE_"" v 898368 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 898452 NON_CODE_"" +v 898451 NON_CODE_"" v 894984 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 896648 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 898312 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 904960 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 905044 NON_CODE_"" +v 905043 NON_CODE_"" v 913792 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 913876 NON_CODE_"" +v 913875 NON_CODE_"" v 916224 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 916308 NON_CODE_"" +v 916307 NON_CODE_"" v 916168 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 921920 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 922004 NON_CODE_"" +v 922003 NON_CODE_"" v 927360 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 927444 NON_CODE_"" +v 927443 NON_CODE_"" v 932992 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 933076 NON_CODE_"" +v 933075 NON_CODE_"" v 939072 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 939156 NON_CODE_"" +v 939155 NON_CODE_"" v 946048 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 946132 NON_CODE_"" +v 946131 NON_CODE_"" v 953344 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 953428 NON_CODE_"" +v 953427 NON_CODE_"" v 965120 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 965204 NON_CODE_"" +v 965203 NON_CODE_"" v 966848 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 966932 NON_CODE_"" -v 967636 NON_CODE_"" +v 966931 NON_CODE_"" +v 967635 NON_CODE_"" v 968512 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 968596 NON_CODE_"" -v 969300 NON_CODE_"" +v 968595 NON_CODE_"" +v 969299 NON_CODE_"" v 970176 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 970260 NON_CODE_"" +v 970259 NON_CODE_"" v 966792 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 968456 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 970120 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 975936 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 976020 NON_CODE_"" +v 976019 NON_CODE_"" v 981120 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 981204 NON_CODE_"" +v 981203 NON_CODE_"" v 986176 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 986260 NON_CODE_"" +v 986259 NON_CODE_"" v 992000 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 992084 NON_CODE_"" +v 992083 NON_CODE_"" v 994112 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 994196 NON_CODE_"" +v 994195 NON_CODE_"" v 994056 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 999744 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 999828 NON_CODE_"" +v 999827 NON_CODE_"" v 1006144 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1006228 NON_CODE_"" +v 1006227 NON_CODE_"" v 1007936 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1008020 NON_CODE_"" +v 1008019 NON_CODE_"" v 1007880 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1014528 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1014612 NON_CODE_"" +v 1014611 NON_CODE_"" v 1016704 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1016788 NON_CODE_"" +v 1016787 NON_CODE_"" v 1016648 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1022656 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1022740 NON_CODE_"" +v 1022739 NON_CODE_"" v 1024000 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1024084 NON_CODE_"" +v 1024083 NON_CODE_"" v 1023944 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1030272 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1030356 NON_CODE_"" +v 1030355 NON_CODE_"" v 1032064 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1032148 NON_CODE_"" +v 1032147 NON_CODE_"" v 1032008 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1042688 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1042772 NON_CODE_"" +v 1042771 NON_CODE_"" v 1044096 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1044180 NON_CODE_"" +v 1044179 NON_CODE_"" v 1044040 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1054784 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1054868 NON_CODE_"" +v 1054867 NON_CODE_"" v 1064128 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1064212 NON_CODE_"" +v 1064211 NON_CODE_"" v 1065984 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1066068 NON_CODE_"" -v 1066772 NON_CODE_"" +v 1066067 NON_CODE_"" +v 1066771 NON_CODE_"" v 1065928 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1075136 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1075220 NON_CODE_"" +v 1075219 NON_CODE_"" v 1077184 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1077268 NON_CODE_"" +v 1077267 NON_CODE_"" v 1077128 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1089216 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1089300 NON_CODE_"" +v 1089299 NON_CODE_"" v 1124352 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1124436 NON_CODE_"" +v 1124435 NON_CODE_"" v 1126080 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1126164 NON_CODE_"" -v 1126868 NON_CODE_"" +v 1126163 NON_CODE_"" +v 1126867 NON_CODE_"" v 1127680 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1127764 NON_CODE_"" -v 1128404 NON_CODE_"" +v 1127763 NON_CODE_"" +v 1128403 NON_CODE_"" v 1129216 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1129300 NON_CODE_"" -v 1130004 NON_CODE_"" +v 1129299 NON_CODE_"" +v 1130003 NON_CODE_"" v 1126024 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1127624 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1129160 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1135936 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1136020 NON_CODE_"" +v 1136019 NON_CODE_"" v 1142336 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1142420 NON_CODE_"" +v 1142419 NON_CODE_"" v 1147648 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1147732 NON_CODE_"" +v 1147731 NON_CODE_"" v 1152896 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1152980 NON_CODE_"" +v 1152979 NON_CODE_"" v 1158720 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1158804 NON_CODE_"" +v 1158803 NON_CODE_"" v 1164736 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1164820 NON_CODE_"" +v 1164819 NON_CODE_"" v 1166080 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1166164 NON_CODE_"" +v 1166163 NON_CODE_"" v 1166024 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1173388 REM_CODE_"" -v 1173444 ADD_CODE_"" +v 1173387 REM_CODE_"" +v 1173443 ADD_CODE_"" v 1177152 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1177236 NON_CODE_"" +v 1177235 NON_CODE_"" v 1178432 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1178516 NON_CODE_"" -v 1179156 NON_CODE_"" +v 1178515 NON_CODE_"" +v 1179155 NON_CODE_"" v 1178376 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1185152 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1185236 NON_CODE_"" +v 1185235 NON_CODE_"" v 1186880 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1186964 NON_CODE_"" +v 1186963 NON_CODE_"" v 1186824 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1193792 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1193876 NON_CODE_"" +v 1193875 NON_CODE_"" v 1195136 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1195220 NON_CODE_"" -v 1195924 NON_CODE_"" +v 1195219 NON_CODE_"" +v 1195923 NON_CODE_"" v 1196800 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1196884 NON_CODE_"" -v 1197588 NON_CODE_"" +v 1196883 NON_CODE_"" +v 1197587 NON_CODE_"" v 1198464 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1198548 NON_CODE_"" +v 1198547 NON_CODE_"" v 1195080 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1196744 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1198408 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1204288 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1204372 NON_CODE_"" +v 1204371 NON_CODE_"" v 1209728 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1209812 NON_CODE_"" +v 1209811 NON_CODE_"" v 1215296 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1215380 NON_CODE_"" -v 1223500 REM_CODE_"" -v 1223556 ADD_CODE_"" +v 1215379 NON_CODE_"" +v 1223499 REM_CODE_"" +v 1223555 ADD_CODE_"" v 1226688 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1226772 NON_CODE_"" +v 1226771 NON_CODE_"" v 1232320 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1232404 NON_CODE_"" +v 1232403 NON_CODE_"" v 1237696 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1237780 NON_CODE_"" +v 1237779 NON_CODE_"" v 1242064 NON_IF_"if VK_USE_PLATFORM_DIRECTFB_EXT" v 1244096 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1244180 NON_CODE_"" +v 1244179 NON_CODE_"" v 1250304 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1250388 NON_CODE_"" +v 1250387 NON_CODE_"" v 1255488 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1255572 NON_CODE_"" +v 1255571 NON_CODE_"" v 1260480 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1260564 NON_CODE_"" +v 1260563 NON_CODE_"" v 1265344 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1265428 NON_CODE_"" +v 1265427 NON_CODE_"" v 1293504 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1293588 NON_CODE_"" +v 1293587 NON_CODE_"" v 1307328 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1307412 NON_CODE_"" +v 1307411 NON_CODE_"" v 1312640 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1312724 NON_CODE_"" +v 1312723 NON_CODE_"" v 1328896 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1328980 NON_CODE_"" +v 1328979 NON_CODE_"" v 1338176 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1338260 NON_CODE_"" +v 1338259 NON_CODE_"" v 1344512 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1344596 NON_CODE_"" +v 1344595 NON_CODE_"" v 1350080 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1350164 NON_CODE_"" +v 1350163 NON_CODE_"" v 1364224 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1364308 NON_CODE_"" +v 1364307 NON_CODE_"" v 1369280 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1369364 NON_CODE_"" +v 1369363 NON_CODE_"" v 1372816 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 1374848 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1374932 NON_CODE_"" +v 1374931 NON_CODE_"" v 1381056 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1381140 NON_CODE_"" +v 1381139 NON_CODE_"" v 1386368 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1386452 NON_CODE_"" +v 1386451 NON_CODE_"" v 1389904 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 1391936 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1392020 NON_CODE_"" +v 1392019 NON_CODE_"" v 1396432 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 1398336 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1398420 NON_CODE_"" +v 1398419 NON_CODE_"" v 1404160 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1404244 NON_CODE_"" +v 1404243 NON_CODE_"" v 1407760 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 1409856 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1409940 NON_CODE_"" +v 1409939 NON_CODE_"" v 1431376 NON_IF_"if VK_USE_PLATFORM_ANDROID_KHR" v 1433088 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1433172 NON_CODE_"" +v 1433171 NON_CODE_"" v 1451648 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1451732 NON_CODE_"" +v 1451731 NON_CODE_"" v 1457024 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1457108 NON_CODE_"" +v 1457107 NON_CODE_"" v 1462400 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1462484 NON_CODE_"" +v 1462483 NON_CODE_"" v 1472512 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1472596 NON_CODE_"" +v 1472595 NON_CODE_"" v 1477760 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1477844 NON_CODE_"" +v 1477843 NON_CODE_"" v 1481808 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 1483840 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1483924 NON_CODE_"" +v 1483923 NON_CODE_"" v 1503168 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1503252 NON_CODE_"" +v 1503251 NON_CODE_"" v 1511040 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1511124 NON_CODE_"" +v 1511123 NON_CODE_"" v 1514304 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1514388 NON_CODE_"" +v 1514387 NON_CODE_"" v 1514248 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1520768 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1520852 NON_CODE_"" +v 1520851 NON_CODE_"" v 1522176 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1522260 NON_CODE_"" +v 1522259 NON_CODE_"" v 1522120 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1529408 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1529492 NON_CODE_"" +v 1529491 NON_CODE_"" v 1531456 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1531540 NON_CODE_"" -v 1532244 NON_CODE_"" +v 1531539 NON_CODE_"" +v 1532243 NON_CODE_"" v 1531400 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1543488 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1543572 NON_CODE_"" +v 1543571 NON_CODE_"" v 1551680 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1551764 NON_CODE_"" +v 1551763 NON_CODE_"" v 1554304 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1554388 NON_CODE_"" -v 1555092 NON_CODE_"" +v 1554387 NON_CODE_"" +v 1555091 NON_CODE_"" v 1554248 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1564736 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1564820 NON_CODE_"" +v 1564819 NON_CODE_"" v 1571840 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1571924 NON_CODE_"" +v 1571923 NON_CODE_"" v 1577280 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1577364 NON_CODE_"" +v 1577363 NON_CODE_"" v 1584704 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1584788 NON_CODE_"" +v 1584787 NON_CODE_"" v 1586560 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1586644 NON_CODE_"" -v 1587348 NON_CODE_"" +v 1586643 NON_CODE_"" +v 1587347 NON_CODE_"" v 1588288 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1588372 NON_CODE_"" +v 1588371 NON_CODE_"" v 1586504 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1588232 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1594368 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1594452 NON_CODE_"" +v 1594451 NON_CODE_"" v 1601024 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1601108 NON_CODE_"" +v 1601107 NON_CODE_"" v 1608192 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1608276 NON_CODE_"" +v 1608275 NON_CODE_"" v 1609984 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1610068 NON_CODE_"" -v 1610772 NON_CODE_"" +v 1610067 NON_CODE_"" +v 1610771 NON_CODE_"" v 1611648 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1611732 NON_CODE_"" +v 1611731 NON_CODE_"" v 1609928 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1611592 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1618624 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1618708 NON_CODE_"" +v 1618707 NON_CODE_"" v 1630144 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1630228 NON_CODE_"" +v 1630227 NON_CODE_"" v 1639168 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1639252 NON_CODE_"" +v 1639251 NON_CODE_"" v 1647488 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1647572 NON_CODE_"" +v 1647571 NON_CODE_"" v 1658240 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1658324 NON_CODE_"" +v 1658323 NON_CODE_"" v 1668160 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1668244 NON_CODE_"" +v 1668243 NON_CODE_"" v 1670784 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1670868 NON_CODE_"" -v 1671572 NON_CODE_"" +v 1670867 NON_CODE_"" +v 1671571 NON_CODE_"" v 1670728 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1677760 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1677844 NON_CODE_"" +v 1677843 NON_CODE_"" v 1679552 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1679636 NON_CODE_"" +v 1679635 NON_CODE_"" v 1679496 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1689472 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1689556 NON_CODE_"" +v 1689555 NON_CODE_"" v 1691200 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1691284 NON_CODE_"" -v 1691988 NON_CODE_"" +v 1691283 NON_CODE_"" +v 1691987 NON_CODE_"" v 1691144 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1705152 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1705236 NON_CODE_"" +v 1705235 NON_CODE_"" v 1706496 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1706580 NON_CODE_"" -v 1707284 NON_CODE_"" +v 1706579 NON_CODE_"" +v 1707283 NON_CODE_"" v 1706440 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1714304 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1714388 NON_CODE_"" +v 1714387 NON_CODE_"" v 1715648 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1715732 NON_CODE_"" -v 1716436 NON_CODE_"" +v 1715731 NON_CODE_"" +v 1716435 NON_CODE_"" v 1717312 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1717396 NON_CODE_"" +v 1717395 NON_CODE_"" v 1715592 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1717256 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1722496 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1722580 NON_CODE_"" +v 1722579 NON_CODE_"" v 1727872 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1727956 NON_CODE_"" +v 1727955 NON_CODE_"" v 1736512 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1736596 NON_CODE_"" +v 1736595 NON_CODE_"" v 1740048 NON_IF_"if VK_USE_PLATFORM_IOS_MVK" v 1741888 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1741972 NON_CODE_"" +v 1741971 NON_CODE_"" v 1747584 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1747668 NON_CODE_"" +v 1747667 NON_CODE_"" v 1753408 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1753492 NON_CODE_"" +v 1753491 NON_CODE_"" v 1762944 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1763028 NON_CODE_"" +v 1763027 NON_CODE_"" v 1768064 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1768148 NON_CODE_"" -v 1768788 NON_CODE_"" +v 1768147 NON_CODE_"" +v 1768787 NON_CODE_"" v 1768008 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1780032 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1780116 NON_CODE_"" +v 1780115 NON_CODE_"" v 1781888 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1781972 NON_CODE_"" +v 1781971 NON_CODE_"" v 1781832 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1788224 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1788308 NON_CODE_"" +v 1788307 NON_CODE_"" v 1789632 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1789716 NON_CODE_"" +v 1789715 NON_CODE_"" v 1789576 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1800000 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1800084 NON_CODE_"" +v 1800083 NON_CODE_"" v 1801344 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1801428 NON_CODE_"" +v 1801427 NON_CODE_"" v 1801288 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1811840 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1811924 NON_CODE_"" +v 1811923 NON_CODE_"" v 1820416 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1820500 NON_CODE_"" +v 1820499 NON_CODE_"" v 1823952 NON_IF_"if VK_USE_PLATFORM_FUCHSIA" v 1825984 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1826068 NON_CODE_"" +v 1826067 NON_CODE_"" v 1831936 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1832020 NON_CODE_"" +v 1832019 NON_CODE_"" v 1837440 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1837524 NON_CODE_"" +v 1837523 NON_CODE_"" v 1843968 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1844052 NON_CODE_"" +v 1844051 NON_CODE_"" v 1851328 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1851412 NON_CODE_"" +v 1851411 NON_CODE_"" v 1856640 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1856724 NON_CODE_"" +v 1856723 NON_CODE_"" v 1862016 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1862100 NON_CODE_"" +v 1862099 NON_CODE_"" v 1867264 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1867348 NON_CODE_"" +v 1867347 NON_CODE_"" v 1877696 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1877780 NON_CODE_"" +v 1877779 NON_CODE_"" v 1885568 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1885652 NON_CODE_"" +v 1885651 NON_CODE_"" v 1891712 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1891796 NON_CODE_"" +v 1891795 NON_CODE_"" v 1895184 NON_IF_"if VK_USE_PLATFORM_ANDROID_KHR" v 1897216 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1897300 NON_CODE_"" +v 1897299 NON_CODE_"" v 1902848 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1902932 NON_CODE_"" +v 1902931 NON_CODE_"" v 1907792 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 1910208 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1910292 NON_CODE_"" +v 1910291 NON_CODE_"" v 1917568 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1917652 NON_CODE_"" +v 1917651 NON_CODE_"" v 1923520 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1923604 NON_CODE_"" +v 1923603 NON_CODE_"" v 1927632 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 1929792 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1929876 NON_CODE_"" +v 1929875 NON_CODE_"" v 1934416 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 1936384 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1936468 NON_CODE_"" +v 1936467 NON_CODE_"" v 1940496 NON_IF_"if VK_USE_PLATFORM_FUCHSIA" v 1942656 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1942740 NON_CODE_"" +v 1942739 NON_CODE_"" v 1948992 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1949076 NON_CODE_"" +v 1949075 NON_CODE_"" v 1953936 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 1956416 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1956500 NON_CODE_"" +v 1956499 NON_CODE_"" v 1962064 NON_IF_"if VK_USE_PLATFORM_FUCHSIA" v 1964544 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1964628 NON_CODE_"" +v 1964627 NON_CODE_"" v 1975808 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1975892 NON_CODE_"" +v 1975891 NON_CODE_"" v 1981312 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1981396 NON_CODE_"" -v 1982100 NON_CODE_"" +v 1981395 NON_CODE_"" +v 1982099 NON_CODE_"" v 1982528 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1982612 NON_CODE_"" +v 1982611 NON_CODE_"" v 1981256 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1982472 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1990720 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 1990804 NON_CODE_"" +v 1990803 NON_CODE_"" v 1992960 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1993044 NON_CODE_"" -v 1993748 NON_CODE_"" +v 1993043 NON_CODE_"" +v 1993747 NON_CODE_"" v 1994560 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 1994644 NON_CODE_"" +v 1994643 NON_CODE_"" v 1992904 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 1994504 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 2000192 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2000276 NON_CODE_"" +v 2000275 NON_CODE_"" v 2005504 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2005588 NON_CODE_"" +v 2005587 NON_CODE_"" v 2012416 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2012500 NON_CODE_"" +v 2012499 NON_CODE_"" v 2014528 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 2014612 NON_CODE_"" -v 2015316 NON_CODE_"" +v 2014611 NON_CODE_"" +v 2015315 NON_CODE_"" v 2016128 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 2016212 NON_CODE_"" +v 2016211 NON_CODE_"" v 2014472 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 2016072 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 2024080 NON_IF_"if VK_USE_PLATFORM_MACOS_MVK" v 2025984 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2026068 NON_CODE_"" +v 2026067 NON_CODE_"" v 2031872 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2031956 NON_CODE_"" +v 2031955 NON_CODE_"" v 2038016 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2038100 NON_CODE_"" +v 2038099 NON_CODE_"" v 2043776 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2043860 NON_CODE_"" +v 2043859 NON_CODE_"" v 2049408 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2049492 NON_CODE_"" +v 2049491 NON_CODE_"" v 2055104 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2055188 NON_CODE_"" +v 2055187 NON_CODE_"" v 2067984 NON_IF_"if VK_USE_PLATFORM_ANDROID_KHR" v 2070080 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2070164 NON_CODE_"" +v 2070163 NON_CODE_"" v 2075648 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2075732 NON_CODE_"" -v 2079684 ADD_CODE_"" +v 2075731 NON_CODE_"" +v 2079683 ADD_CODE_"" v 2080000 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 2080068 ADD_CODE_"" -v 2081092 ADD_CODE_"" +v 2080067 ADD_CODE_"" +v 2081091 ADD_CODE_"" v 2081664 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2081732 ADD_CODE_"" -v 2083012 ADD_CODE_"" +v 2081731 ADD_CODE_"" +v 2083011 ADD_CODE_"" v 2083648 ADD_IF_"if VULKAN_HPP_HAS_SPACESHIP_OPERATOR" -v 2083716 ADD_CODE_"" -v 2083778 ADD_ELSE_"else" -v 2083844 ADD_CODE_"" -v 2084612 ADD_CODE_"" +v 2083715 ADD_CODE_"" +v 2083777 ADD_ELSE_"else" +v 2083843 ADD_CODE_"" +v 2084611 ADD_CODE_"" v 2085776 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 2087808 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2087892 NON_CODE_"" +v 2087891 NON_CODE_"" v 2091984 NON_IF_"if VK_USE_PLATFORM_FUCHSIA" v 2094016 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2094100 NON_CODE_"" +v 2094099 NON_CODE_"" v 2107968 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2108052 NON_CODE_"" +v 2108051 NON_CODE_"" v 2113280 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2113364 NON_CODE_"" +v 2113363 NON_CODE_"" v 2137360 NON_IF_"if VK_USE_PLATFORM_METAL_EXT" v 2139264 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2139348 NON_CODE_"" +v 2139347 NON_CODE_"" v 2144960 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2145044 NON_CODE_"" +v 2145043 NON_CODE_"" v 2149888 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2149972 NON_CODE_"" +v 2149971 NON_CODE_"" v 2159424 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2159508 NON_CODE_"" +v 2159507 NON_CODE_"" v 2160384 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 2160468 NON_CODE_"" +v 2160467 NON_CODE_"" v 2160328 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 2166016 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2166100 NON_CODE_"" +v 2166099 NON_CODE_"" v 2167424 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 2167508 NON_CODE_"" +v 2167507 NON_CODE_"" v 2167368 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 2177600 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2177684 NON_CODE_"" -v 2185164 REM_CODE_"" -v 2185220 ADD_CODE_"" -v 2190284 REM_CODE_"" -v 2190340 ADD_CODE_"" +v 2177683 NON_CODE_"" +v 2185163 REM_CODE_"" +v 2185219 ADD_CODE_"" +v 2190283 REM_CODE_"" +v 2190339 ADD_CODE_"" v 2191616 ADD_IF_"if -VULKAN_HPP_NO_UNION_CONSTRUCTORS" -v 2191700 NON_CODE_"" +v 2191699 NON_CODE_"" v 2192832 ADD_IF_"if -VULKAN_HPP_NO_UNION_SETTERS" -v 2192916 NON_CODE_"" +v 2192915 NON_CODE_"" v 2198464 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2198548 NON_CODE_"" +v 2198547 NON_CODE_"" v 2204032 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2204116 NON_CODE_"" +v 2204115 NON_CODE_"" v 2210304 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2210388 NON_CODE_"" +v 2210387 NON_CODE_"" v 2215488 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2215572 NON_CODE_"" +v 2215571 NON_CODE_"" v 2219072 ADD_IF_"if -VULKAN_HPP_NO_UNION_CONSTRUCTORS" -v 2219156 NON_CODE_"" +v 2219155 NON_CODE_"" v 2220032 ADD_IF_"if -VULKAN_HPP_NO_UNION_SETTERS" -v 2220116 NON_CODE_"" +v 2220115 NON_CODE_"" v 2225728 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2225812 NON_CODE_"" +v 2225811 NON_CODE_"" v 2230080 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2230164 NON_CODE_"" +v 2230163 NON_CODE_"" v 2237504 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2237588 NON_CODE_"" +v 2237587 NON_CODE_"" v 2243712 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2243796 NON_CODE_"" +v 2243795 NON_CODE_"" v 2250432 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2250516 NON_CODE_"" +v 2250515 NON_CODE_"" v 2256576 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2256660 NON_CODE_"" +v 2256659 NON_CODE_"" v 2271232 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2271316 NON_CODE_"" +v 2271315 NON_CODE_"" v 2283264 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2283348 NON_CODE_"" +v 2283347 NON_CODE_"" v 2290368 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2290452 NON_CODE_"" +v 2290451 NON_CODE_"" v 2297152 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2297236 NON_CODE_"" +v 2297235 NON_CODE_"" v 2302720 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2302804 NON_CODE_"" +v 2302803 NON_CODE_"" v 2308480 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2308564 NON_CODE_"" +v 2308563 NON_CODE_"" v 2314880 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2314964 NON_CODE_"" +v 2314963 NON_CODE_"" v 2328064 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2328148 NON_CODE_"" +v 2328147 NON_CODE_"" v 2339008 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2339092 NON_CODE_"" +v 2339091 NON_CODE_"" v 2344640 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2344724 NON_CODE_"" +v 2344723 NON_CODE_"" v 2350400 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2350484 NON_CODE_"" +v 2350483 NON_CODE_"" v 2361408 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2361492 NON_CODE_"" +v 2361491 NON_CODE_"" v 2367168 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2367252 NON_CODE_"" +v 2367251 NON_CODE_"" v 2380800 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2380884 NON_CODE_"" +v 2380883 NON_CODE_"" v 2408960 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2409044 NON_CODE_"" +v 2409043 NON_CODE_"" v 2421504 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2421588 NON_CODE_"" +v 2421587 NON_CODE_"" v 2427136 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2427220 NON_CODE_"" +v 2427219 NON_CODE_"" v 2447936 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2448020 NON_CODE_"" +v 2448019 NON_CODE_"" v 2453824 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2453908 NON_CODE_"" +v 2453907 NON_CODE_"" v 2460672 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2460756 NON_CODE_"" +v 2460755 NON_CODE_"" v 2466368 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2466452 NON_CODE_"" +v 2466451 NON_CODE_"" v 2472832 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2472916 NON_CODE_"" +v 2472915 NON_CODE_"" v 2478528 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2478612 NON_CODE_"" -v 2486916 ADD_CODE_"" +v 2478611 NON_CODE_"" +v 2486915 ADD_CODE_"" v 2487296 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 2487364 ADD_CODE_"" -v 2488324 ADD_CODE_"" +v 2487363 ADD_CODE_"" +v 2488323 ADD_CODE_"" v 2488960 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2489028 ADD_CODE_"" -v 2489924 ADD_CODE_"" +v 2489027 ADD_CODE_"" +v 2489923 ADD_CODE_"" v 2490560 ADD_IF_"if VULKAN_HPP_HAS_SPACESHIP_OPERATOR" -v 2490628 ADD_CODE_"" -v 2490690 ADD_ELSE_"else" -v 2490756 ADD_CODE_"" -v 2491460 ADD_CODE_"" +v 2490627 ADD_CODE_"" +v 2490689 ADD_ELSE_"else" +v 2490755 ADD_CODE_"" +v 2491459 ADD_CODE_"" v 2494528 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2494612 NON_CODE_"" +v 2494611 NON_CODE_"" v 2499904 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2499988 NON_CODE_"" +v 2499987 NON_CODE_"" v 2514496 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2514580 NON_CODE_"" +v 2514579 NON_CODE_"" v 2525888 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2525972 NON_CODE_"" +v 2525971 NON_CODE_"" v 2537984 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2538068 NON_CODE_"" +v 2538067 NON_CODE_"" v 2543936 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2544020 NON_CODE_"" +v 2544019 NON_CODE_"" v 2551040 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2551124 NON_CODE_"" +v 2551123 NON_CODE_"" v 2558016 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2558100 NON_CODE_"" +v 2558099 NON_CODE_"" v 2564032 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2564116 NON_CODE_"" +v 2564115 NON_CODE_"" v 2584832 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2584916 NON_CODE_"" +v 2584915 NON_CODE_"" v 2595264 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2595348 NON_CODE_"" +v 2595347 NON_CODE_"" v 2607360 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2607444 NON_CODE_"" +v 2607443 NON_CODE_"" v 2609664 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 2609748 NON_CODE_"" +v 2609747 NON_CODE_"" v 2609608 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 2615680 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2615764 NON_CODE_"" +v 2615763 NON_CODE_"" v 2623104 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2623188 NON_CODE_"" +v 2623187 NON_CODE_"" v 2628800 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2628884 NON_CODE_"" +v 2628883 NON_CODE_"" v 2634432 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2634516 NON_CODE_"" +v 2634515 NON_CODE_"" v 2640064 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2640148 NON_CODE_"" +v 2640147 NON_CODE_"" v 2645696 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2645780 NON_CODE_"" +v 2645779 NON_CODE_"" v 2651520 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2651604 NON_CODE_"" -v 2661700 ADD_CODE_"" +v 2651603 NON_CODE_"" +v 2661699 ADD_CODE_"" v 2662080 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 2662148 ADD_CODE_"" -v 2663044 ADD_CODE_"" +v 2662147 ADD_CODE_"" +v 2663043 ADD_CODE_"" v 2663680 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2663748 ADD_CODE_"" -v 2664644 ADD_CODE_"" +v 2663747 ADD_CODE_"" +v 2664643 ADD_CODE_"" v 2665280 ADD_IF_"if VULKAN_HPP_HAS_SPACESHIP_OPERATOR" -v 2665348 ADD_CODE_"" -v 2665410 ADD_ELSE_"else" -v 2665476 ADD_CODE_"" -v 2666180 ADD_CODE_"" +v 2665347 ADD_CODE_"" +v 2665409 ADD_ELSE_"else" +v 2665475 ADD_CODE_"" +v 2666179 ADD_CODE_"" v 2699904 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2699988 NON_CODE_"" +v 2699987 NON_CODE_"" v 2722688 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2722772 NON_CODE_"" +v 2722771 NON_CODE_"" v 2737024 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2737108 NON_CODE_"" +v 2737107 NON_CODE_"" v 2750528 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2750612 NON_CODE_"" +v 2750611 NON_CODE_"" v 2760448 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2760532 NON_CODE_"" +v 2760531 NON_CODE_"" v 2776768 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2776852 NON_CODE_"" +v 2776851 NON_CODE_"" v 2787648 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2787732 NON_CODE_"" +v 2787731 NON_CODE_"" v 2798720 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2798804 NON_CODE_"" +v 2798803 NON_CODE_"" v 2804480 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2804564 NON_CODE_"" +v 2804563 NON_CODE_"" v 2812880 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 2816768 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2816852 NON_CODE_"" +v 2816851 NON_CODE_"" v 2828304 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 2830400 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2830484 NON_CODE_"" -v 2834116 ADD_CODE_"" +v 2830483 NON_CODE_"" +v 2834115 ADD_CODE_"" v 2834496 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 2834564 ADD_CODE_"" -v 2835396 ADD_CODE_"" +v 2834563 ADD_CODE_"" +v 2835395 ADD_CODE_"" v 2836032 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2836100 ADD_CODE_"" -v 2836932 ADD_CODE_"" +v 2836099 ADD_CODE_"" +v 2836931 ADD_CODE_"" v 2837568 ADD_IF_"if VULKAN_HPP_HAS_SPACESHIP_OPERATOR" -v 2837636 ADD_CODE_"" -v 2837698 ADD_ELSE_"else" -v 2837764 ADD_CODE_"" -v 2838468 ADD_CODE_"" +v 2837635 ADD_CODE_"" +v 2837697 ADD_ELSE_"else" +v 2837763 ADD_CODE_"" +v 2838467 ADD_CODE_"" v 2839872 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 2839940 ADD_CODE_"" -v 2840772 ADD_CODE_"" +v 2839939 ADD_CODE_"" +v 2840771 ADD_CODE_"" v 2841408 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2841476 ADD_CODE_"" -v 2842372 ADD_CODE_"" +v 2841475 ADD_CODE_"" +v 2842371 ADD_CODE_"" v 2843008 ADD_IF_"if VULKAN_HPP_HAS_SPACESHIP_OPERATOR" -v 2843076 ADD_CODE_"" -v 2843138 ADD_ELSE_"else" -v 2843204 ADD_CODE_"" -v 2843908 ADD_CODE_"" +v 2843075 ADD_CODE_"" +v 2843137 ADD_ELSE_"else" +v 2843203 ADD_CODE_"" +v 2843907 ADD_CODE_"" v 2845312 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 2845380 ADD_CODE_"" -v 2846468 ADD_CODE_"" +v 2845379 ADD_CODE_"" +v 2846467 ADD_CODE_"" v 2847168 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2847236 ADD_CODE_"" -v 2848580 ADD_CODE_"" +v 2847235 ADD_CODE_"" +v 2848579 ADD_CODE_"" v 2849216 ADD_IF_"if VULKAN_HPP_HAS_SPACESHIP_OPERATOR" -v 2849284 ADD_CODE_"" -v 2849346 ADD_ELSE_"else" -v 2849412 ADD_CODE_"" -v 2850244 ADD_CODE_"" +v 2849283 ADD_CODE_"" +v 2849345 ADD_ELSE_"else" +v 2849411 ADD_CODE_"" +v 2850243 ADD_CODE_"" v 2853312 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2853396 NON_CODE_"" +v 2853395 NON_CODE_"" v 2873216 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2873300 NON_CODE_"" +v 2873299 NON_CODE_"" v 2883520 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2883604 NON_CODE_"" +v 2883603 NON_CODE_"" v 2899264 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2899348 NON_CODE_"" -v 2904908 REM_CODE_"" +v 2899347 NON_CODE_"" +v 2904907 REM_CODE_"" v 2904960 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2905028 ADD_CODE_"" -v 2905108 NON_CODE_"" -v 2908108 REM_CODE_"" -v 2908164 ADD_CODE_"" +v 2905027 ADD_CODE_"" +v 2905107 NON_CODE_"" +v 2908107 REM_CODE_"" +v 2908163 ADD_CODE_"" v 2911744 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2911828 NON_CODE_"" +v 2911827 NON_CODE_"" v 2932608 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2932692 NON_CODE_"" +v 2932691 NON_CODE_"" v 2938432 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2938516 NON_CODE_"" +v 2938515 NON_CODE_"" v 2960768 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2960852 NON_CODE_"" +v 2960851 NON_CODE_"" v 2966400 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2966484 NON_CODE_"" +v 2966483 NON_CODE_"" v 2972160 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2972244 NON_CODE_"" -v 2975876 ADD_CODE_"" +v 2972243 NON_CODE_"" +v 2975875 ADD_CODE_"" v 2976256 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 2976324 ADD_CODE_"" -v 2978692 ADD_CODE_"" +v 2976323 ADD_CODE_"" +v 2978691 ADD_CODE_"" v 2979328 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2979396 ADD_CODE_"" -v 2985220 ADD_CODE_"" +v 2979395 ADD_CODE_"" +v 2985219 ADD_CODE_"" v 2985856 ADD_IF_"if VULKAN_HPP_HAS_SPACESHIP_OPERATOR" -v 2985924 ADD_CODE_"" -v 2985986 ADD_ELSE_"else" -v 2986052 ADD_CODE_"" -v 2987524 ADD_CODE_"" +v 2985923 ADD_CODE_"" +v 2985985 ADD_ELSE_"else" +v 2986051 ADD_CODE_"" +v 2987523 ADD_CODE_"" v 2992768 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 2992852 NON_CODE_"" +v 2992851 NON_CODE_"" v 3004864 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3004948 NON_CODE_"" +v 3004947 NON_CODE_"" v 3011200 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3011284 NON_CODE_"" +v 3011283 NON_CODE_"" v 3029760 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3029844 NON_CODE_"" +v 3029843 NON_CODE_"" v 3035456 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3035540 NON_CODE_"" +v 3035539 NON_CODE_"" v 3041216 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3041300 NON_CODE_"" +v 3041299 NON_CODE_"" v 3047680 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3047764 NON_CODE_"" +v 3047763 NON_CODE_"" v 3053888 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3053972 NON_CODE_"" -v 3057476 ADD_CODE_"" +v 3053971 NON_CODE_"" +v 3057475 ADD_CODE_"" v 3057856 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 3057924 ADD_CODE_"" -v 3058884 ADD_CODE_"" +v 3057923 ADD_CODE_"" +v 3058883 ADD_CODE_"" v 3059520 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3059588 ADD_CODE_"" -v 3060484 ADD_CODE_"" +v 3059587 ADD_CODE_"" +v 3060483 ADD_CODE_"" v 3061120 ADD_IF_"if VULKAN_HPP_HAS_SPACESHIP_OPERATOR" -v 3061188 ADD_CODE_"" -v 3061250 ADD_ELSE_"else" -v 3061316 ADD_CODE_"" -v 3062084 ADD_CODE_"" +v 3061187 ADD_CODE_"" +v 3061249 ADD_ELSE_"else" +v 3061315 ADD_CODE_"" +v 3062083 ADD_CODE_"" v 3063552 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 3063620 ADD_CODE_"" -v 3069380 ADD_CODE_"" +v 3063619 ADD_CODE_"" +v 3069379 ADD_CODE_"" v 3070080 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3070148 ADD_CODE_"" -v 3086916 ADD_CODE_"" +v 3070147 ADD_CODE_"" +v 3086915 ADD_CODE_"" v 3087552 ADD_IF_"if VULKAN_HPP_HAS_SPACESHIP_OPERATOR" -v 3087620 ADD_CODE_"" -v 3087682 ADD_ELSE_"else" -v 3087748 ADD_CODE_"" -v 3091716 ADD_CODE_"" +v 3087619 ADD_CODE_"" +v 3087681 ADD_ELSE_"else" +v 3087747 ADD_CODE_"" +v 3091715 ADD_CODE_"" v 3096768 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3096852 NON_CODE_"" +v 3096851 NON_CODE_"" v 3102400 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3102484 NON_CODE_"" +v 3102483 NON_CODE_"" v 3113024 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3113108 NON_CODE_"" +v 3113107 NON_CODE_"" v 3118912 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3118996 NON_CODE_"" +v 3118995 NON_CODE_"" v 3124736 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3124820 NON_CODE_"" +v 3124819 NON_CODE_"" v 3130560 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3130644 NON_CODE_"" +v 3130643 NON_CODE_"" v 3142336 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3142420 NON_CODE_"" +v 3142419 NON_CODE_"" v 3155008 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3155092 NON_CODE_"" +v 3155091 NON_CODE_"" v 3166592 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3166676 NON_CODE_"" +v 3166675 NON_CODE_"" v 3176704 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3176788 NON_CODE_"" +v 3176787 NON_CODE_"" v 3182144 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3182228 NON_CODE_"" +v 3182227 NON_CODE_"" v 3187776 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3187860 NON_CODE_"" +v 3187859 NON_CODE_"" v 3198976 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3199060 NON_CODE_"" +v 3199059 NON_CODE_"" v 3204544 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3204628 NON_CODE_"" +v 3204627 NON_CODE_"" v 3220288 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3220372 NON_CODE_"" +v 3220371 NON_CODE_"" v 3233600 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3233684 NON_CODE_"" +v 3233683 NON_CODE_"" v 3239424 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3239508 NON_CODE_"" +v 3239507 NON_CODE_"" v 3245952 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3246036 NON_CODE_"" +v 3246035 NON_CODE_"" v 3257024 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3257108 NON_CODE_"" +v 3257107 NON_CODE_"" v 3260688 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 3262848 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3262932 NON_CODE_"" +v 3262931 NON_CODE_"" v 3268048 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 3269888 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3269972 NON_CODE_"" +v 3269971 NON_CODE_"" v 3273872 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" -v 3277580 REM_CODE_"" -v 3277636 ADD_CODE_"" +v 3277579 REM_CODE_"" +v 3277635 ADD_CODE_"" v 3281856 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3281940 NON_CODE_"" +v 3281939 NON_CODE_"" v 3307072 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3307156 NON_CODE_"" +v 3307155 NON_CODE_"" v 3357696 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3357780 NON_CODE_"" +v 3357779 NON_CODE_"" v 3364992 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3365076 NON_CODE_"" +v 3365075 NON_CODE_"" v 3372416 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3372500 NON_CODE_"" +v 3372499 NON_CODE_"" v 3377984 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3378068 NON_CODE_"" +v 3378067 NON_CODE_"" v 3383680 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3383764 NON_CODE_"" +v 3383763 NON_CODE_"" v 3389760 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3389844 NON_CODE_"" +v 3389843 NON_CODE_"" v 3391424 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3391508 NON_CODE_"" +v 3391507 NON_CODE_"" v 3391368 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3394948 ADD_CODE_"" +v 3394947 ADD_CODE_"" v 3395072 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 3395140 ADD_CODE_"" -v 3396548 ADD_CODE_"" +v 3395139 ADD_CODE_"" +v 3396547 ADD_CODE_"" v 3397120 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3397188 ADD_CODE_"" -v 3399300 ADD_CODE_"" +v 3397187 ADD_CODE_"" +v 3399299 ADD_CODE_"" v 3399936 ADD_IF_"if VULKAN_HPP_HAS_SPACESHIP_OPERATOR" -v 3400004 ADD_CODE_"" -v 3400066 ADD_ELSE_"else" -v 3400132 ADD_CODE_"" -v 3400964 ADD_CODE_"" +v 3400003 ADD_CODE_"" +v 3400065 ADD_ELSE_"else" +v 3400131 ADD_CODE_"" +v 3400963 ADD_CODE_"" v 3404160 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3404244 NON_CODE_"" +v 3404243 NON_CODE_"" v 3411264 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3411348 NON_CODE_"" +v 3411347 NON_CODE_"" v 3412608 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3412692 NON_CODE_"" +v 3412691 NON_CODE_"" v 3412552 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3418048 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3418132 NON_CODE_"" +v 3418131 NON_CODE_"" v 3425088 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3425172 NON_CODE_"" +v 3425171 NON_CODE_"" v 3427840 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3427924 NON_CODE_"" +v 3427923 NON_CODE_"" v 3427784 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3434048 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3434132 NON_CODE_"" +v 3434131 NON_CODE_"" v 3440576 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3440660 NON_CODE_"" +v 3440659 NON_CODE_"" v 3452096 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3452180 NON_CODE_"" +v 3452179 NON_CODE_"" v 3453952 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3454036 NON_CODE_"" +v 3454035 NON_CODE_"" v 3453896 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3460928 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3461012 NON_CODE_"" +v 3461011 NON_CODE_"" v 3463232 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3463316 NON_CODE_"" +v 3463315 NON_CODE_"" v 3463176 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3468928 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3469012 NON_CODE_"" +v 3469011 NON_CODE_"" v 3484480 ADD_IF_"if -VULKAN_HPP_NO_UNION_CONSTRUCTORS" -v 3484564 NON_CODE_"" +v 3484563 NON_CODE_"" v 3485504 ADD_IF_"if -VULKAN_HPP_NO_UNION_SETTERS" -v 3485588 NON_CODE_"" +v 3485587 NON_CODE_"" v 3495744 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3495828 NON_CODE_"" +v 3495827 NON_CODE_"" v 3502848 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3502932 NON_CODE_"" +v 3502931 NON_CODE_"" v 3508608 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3508692 NON_CODE_"" +v 3508691 NON_CODE_"" v 3513664 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3513748 NON_CODE_"" +v 3513747 NON_CODE_"" v 3520256 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3520340 NON_CODE_"" +v 3520339 NON_CODE_"" v 3521984 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3522068 NON_CODE_"" -v 3522772 NON_CODE_"" +v 3522067 NON_CODE_"" +v 3522771 NON_CODE_"" v 3523648 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3523732 NON_CODE_"" +v 3523731 NON_CODE_"" v 3521928 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3523592 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3529792 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3529876 NON_CODE_"" +v 3529875 NON_CODE_"" v 3531136 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3531220 NON_CODE_"" +v 3531219 NON_CODE_"" v 3531080 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3537088 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3537172 NON_CODE_"" +v 3537171 NON_CODE_"" v 3544064 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3544148 NON_CODE_"" +v 3544147 NON_CODE_"" v 3550720 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3550804 NON_CODE_"" +v 3550803 NON_CODE_"" v 3558272 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3558356 NON_CODE_"" +v 3558355 NON_CODE_"" v 3564032 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3564116 NON_CODE_"" +v 3564115 NON_CODE_"" v 3569856 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3569940 NON_CODE_"" +v 3569939 NON_CODE_"" v 3576128 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3576212 NON_CODE_"" +v 3576211 NON_CODE_"" v 3581952 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3582036 NON_CODE_"" +v 3582035 NON_CODE_"" v 3592960 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3593044 NON_CODE_"" +v 3593043 NON_CODE_"" v 3598464 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3598548 NON_CODE_"" +v 3598547 NON_CODE_"" v 3604352 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3604436 NON_CODE_"" +v 3604435 NON_CODE_"" v 3605824 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3605908 NON_CODE_"" +v 3605907 NON_CODE_"" v 3605768 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3612672 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3612756 NON_CODE_"" +v 3612755 NON_CODE_"" v 3614528 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3614612 NON_CODE_"" +v 3614611 NON_CODE_"" v 3614472 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3621056 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3621140 NON_CODE_"" +v 3621139 NON_CODE_"" v 3622464 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3622548 NON_CODE_"" +v 3622547 NON_CODE_"" v 3622408 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3628288 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3628372 NON_CODE_"" +v 3628371 NON_CODE_"" v 3629248 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3629332 NON_CODE_"" +v 3629331 NON_CODE_"" v 3629192 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3635264 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3635348 NON_CODE_"" +v 3635347 NON_CODE_"" v 3637056 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3637140 NON_CODE_"" +v 3637139 NON_CODE_"" v 3637000 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3642944 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3643028 NON_CODE_"" +v 3643027 NON_CODE_"" v 3649792 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3649876 NON_CODE_"" +v 3649875 NON_CODE_"" v 3651584 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3651668 NON_CODE_"" +v 3651667 NON_CODE_"" v 3651528 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3656768 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3656852 NON_CODE_"" +v 3656851 NON_CODE_"" v 3662720 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3662804 NON_CODE_"" +v 3662803 NON_CODE_"" v 3664512 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3664596 NON_CODE_"" +v 3664595 NON_CODE_"" v 3664456 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3668240 NON_IF_"if VK_USE_PLATFORM_GGP" v 3669952 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3670036 NON_CODE_"" -v 3673476 ADD_CODE_"" +v 3670035 NON_CODE_"" +v 3673475 ADD_CODE_"" v 3673792 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 3673860 ADD_CODE_"" +v 3673859 ADD_CODE_"" v 3674624 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3674692 ADD_CODE_"" -v 3675076 ADD_CODE_"" +v 3674691 ADD_CODE_"" +v 3675075 ADD_CODE_"" v 3675584 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3675652 ADD_CODE_"" +v 3675651 ADD_CODE_"" v 3676800 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3676868 ADD_CODE_"" -v 3677508 ADD_CODE_"" +v 3676867 ADD_CODE_"" +v 3677507 ADD_CODE_"" v 3678144 ADD_IF_"if VULKAN_HPP_HAS_SPACESHIP_OPERATOR" -v 3678212 ADD_CODE_"" -v 3678274 ADD_ELSE_"else" -v 3678340 ADD_CODE_"" -v 3679108 ADD_CODE_"" +v 3678211 ADD_CODE_"" +v 3678273 ADD_ELSE_"else" +v 3678339 ADD_CODE_"" +v 3679107 ADD_CODE_"" v 3684800 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3684884 NON_CODE_"" +v 3684883 NON_CODE_"" v 3686080 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3686164 NON_CODE_"" -v 3686868 NON_CODE_"" +v 3686163 NON_CODE_"" +v 3686867 NON_CODE_"" v 3687680 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3687764 NON_CODE_"" -v 3688468 NON_CODE_"" +v 3687763 NON_CODE_"" +v 3688467 NON_CODE_"" v 3688896 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3688980 NON_CODE_"" -v 3689620 NON_CODE_"" +v 3688979 NON_CODE_"" +v 3689619 NON_CODE_"" v 3690048 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3690132 NON_CODE_"" +v 3690131 NON_CODE_"" v 3686024 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3687624 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3688840 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3689992 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3695680 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3695764 NON_CODE_"" +v 3695763 NON_CODE_"" v 3701056 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3701140 NON_CODE_"" +v 3701139 NON_CODE_"" v 3701952 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3702036 NON_CODE_"" +v 3702035 NON_CODE_"" v 3701896 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3707136 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3707220 NON_CODE_"" +v 3707219 NON_CODE_"" v 3708416 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3708500 NON_CODE_"" +v 3708499 NON_CODE_"" v 3708360 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3713472 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3713556 NON_CODE_"" +v 3713555 NON_CODE_"" v 3718720 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3718804 NON_CODE_"" +v 3718803 NON_CODE_"" v 3720000 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3720084 NON_CODE_"" +v 3720083 NON_CODE_"" v 3719944 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3725184 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3725268 NON_CODE_"" +v 3725267 NON_CODE_"" v 3730368 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3730452 NON_CODE_"" +v 3730451 NON_CODE_"" v 3735872 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3735956 NON_CODE_"" +v 3735955 NON_CODE_"" v 3743488 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3743572 NON_CODE_"" +v 3743571 NON_CODE_"" v 3745152 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3745236 NON_CODE_"" +v 3745235 NON_CODE_"" v 3745096 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3750784 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3750868 NON_CODE_"" +v 3750867 NON_CODE_"" v 3766720 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3766804 NON_CODE_"" +v 3766803 NON_CODE_"" v 3782016 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3782100 NON_CODE_"" +v 3782099 NON_CODE_"" v 3790272 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3790356 NON_CODE_"" +v 3790355 NON_CODE_"" v 3799552 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3799636 NON_CODE_"" +v 3799635 NON_CODE_"" v 3801280 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3801364 NON_CODE_"" -v 3802068 NON_CODE_"" +v 3801363 NON_CODE_"" +v 3802067 NON_CODE_"" v 3802944 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3803028 NON_CODE_"" -v 3803732 NON_CODE_"" +v 3803027 NON_CODE_"" +v 3803731 NON_CODE_"" v 3801224 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3802888 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3812800 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3812884 NON_CODE_"" +v 3812883 NON_CODE_"" v 3822592 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3822676 NON_CODE_"" +v 3822675 NON_CODE_"" v 3824320 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3824404 NON_CODE_"" -v 3825108 NON_CODE_"" +v 3824403 NON_CODE_"" +v 3825107 NON_CODE_"" v 3825984 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3826068 NON_CODE_"" -v 3826772 NON_CODE_"" +v 3826067 NON_CODE_"" +v 3826771 NON_CODE_"" v 3824264 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3825928 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3837632 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3837716 NON_CODE_"" +v 3837715 NON_CODE_"" v 3838976 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3839060 NON_CODE_"" +v 3839059 NON_CODE_"" v 3838920 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3845696 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3845780 NON_CODE_"" +v 3845779 NON_CODE_"" v 3848128 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3848212 NON_CODE_"" +v 3848211 NON_CODE_"" v 3848072 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3856832 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3856916 NON_CODE_"" +v 3856915 NON_CODE_"" v 3858624 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3858708 NON_CODE_"" -v 3859412 NON_CODE_"" +v 3858707 NON_CODE_"" +v 3859411 NON_CODE_"" v 3860288 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3860372 NON_CODE_"" -v 3861076 NON_CODE_"" +v 3860371 NON_CODE_"" +v 3861075 NON_CODE_"" v 3861568 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3861652 NON_CODE_"" -v 3862356 NON_CODE_"" +v 3861651 NON_CODE_"" +v 3862355 NON_CODE_"" v 3863616 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3863700 NON_CODE_"" +v 3863699 NON_CODE_"" v 3858568 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3860232 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3861512 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3863560 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3869632 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3869716 NON_CODE_"" +v 3869715 NON_CODE_"" v 3878720 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3878804 NON_CODE_"" +v 3878803 NON_CODE_"" v 3880448 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3880532 NON_CODE_"" -v 3881236 NON_CODE_"" +v 3880531 NON_CODE_"" +v 3881235 NON_CODE_"" v 3882112 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3882196 NON_CODE_"" -v 3882900 NON_CODE_"" +v 3882195 NON_CODE_"" +v 3882899 NON_CODE_"" v 3883776 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3883860 NON_CODE_"" +v 3883859 NON_CODE_"" v 3880392 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3882056 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3883720 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3893120 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3893204 NON_CODE_"" +v 3893203 NON_CODE_"" v 3895680 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3895764 NON_CODE_"" -v 3896468 NON_CODE_"" +v 3895763 NON_CODE_"" +v 3896467 NON_CODE_"" v 3897344 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3897428 NON_CODE_"" -v 3898132 NON_CODE_"" +v 3897427 NON_CODE_"" +v 3898131 NON_CODE_"" v 3898624 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3898708 NON_CODE_"" -v 3899412 NON_CODE_"" +v 3898707 NON_CODE_"" +v 3899411 NON_CODE_"" v 3900672 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3900756 NON_CODE_"" +v 3900755 NON_CODE_"" v 3895624 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3897288 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3898568 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3900616 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3907648 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3907732 NON_CODE_"" +v 3907731 NON_CODE_"" v 3918656 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3918740 NON_CODE_"" +v 3918739 NON_CODE_"" v 3920384 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3920468 NON_CODE_"" -v 3921172 NON_CODE_"" +v 3920467 NON_CODE_"" +v 3921171 NON_CODE_"" v 3922048 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3922132 NON_CODE_"" -v 3922836 NON_CODE_"" +v 3922131 NON_CODE_"" +v 3922835 NON_CODE_"" v 3923712 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3923796 NON_CODE_"" -v 3924500 NON_CODE_"" +v 3923795 NON_CODE_"" +v 3924499 NON_CODE_"" v 3925312 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3925396 NON_CODE_"" +v 3925395 NON_CODE_"" v 3920328 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3921992 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3923656 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3925256 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3931520 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3931604 NON_CODE_"" +v 3931603 NON_CODE_"" v 3937920 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3938004 NON_CODE_"" +v 3938003 NON_CODE_"" v 3939328 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3939412 NON_CODE_"" +v 3939411 NON_CODE_"" v 3939272 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3946240 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3946324 NON_CODE_"" +v 3946323 NON_CODE_"" v 3947520 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3947604 NON_CODE_"" -v 3948244 NON_CODE_"" +v 3947603 NON_CODE_"" +v 3948243 NON_CODE_"" v 3949056 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3949140 NON_CODE_"" -v 3949780 NON_CODE_"" +v 3949139 NON_CODE_"" +v 3949779 NON_CODE_"" v 3950592 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3950676 NON_CODE_"" +v 3950675 NON_CODE_"" v 3947464 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3949000 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3950536 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3956224 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3956308 NON_CODE_"" +v 3956307 NON_CODE_"" v 3962496 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3962580 NON_CODE_"" +v 3962579 NON_CODE_"" v 3963968 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3964052 NON_CODE_"" -v 3964756 NON_CODE_"" +v 3964051 NON_CODE_"" +v 3964755 NON_CODE_"" v 3965696 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3965780 NON_CODE_"" +v 3965779 NON_CODE_"" v 3963912 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3965640 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3971328 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3971412 NON_CODE_"" +v 3971411 NON_CODE_"" v 3978304 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3978388 NON_CODE_"" +v 3978387 NON_CODE_"" v 3981120 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 3981204 NON_CODE_"" +v 3981203 NON_CODE_"" v 3981064 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 3988608 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3988692 NON_CODE_"" +v 3988691 NON_CODE_"" v 4001344 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4001428 NON_CODE_"" +v 4001427 NON_CODE_"" v 4006272 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4006356 NON_CODE_"" +v 4006355 NON_CODE_"" v 4012672 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4012756 NON_CODE_"" +v 4012755 NON_CODE_"" v 4026560 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4026644 NON_CODE_"" +v 4026643 NON_CODE_"" v 4030160 NON_IF_"if VK_USE_PLATFORM_SCREEN_QNX" v 4032192 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4032276 NON_CODE_"" +v 4032275 NON_CODE_"" v 4038464 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4038548 NON_CODE_"" +v 4038547 NON_CODE_"" v 4043776 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4043860 NON_CODE_"" +v 4043859 NON_CODE_"" v 4047824 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 4049856 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4049940 NON_CODE_"" +v 4049939 NON_CODE_"" v 4054032 NON_IF_"if VK_USE_PLATFORM_FUCHSIA" v 4056192 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4056276 NON_CODE_"" +v 4056275 NON_CODE_"" v 4062144 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4062228 NON_CODE_"" +v 4062227 NON_CODE_"" v 4068160 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4068244 NON_CODE_"" +v 4068243 NON_CODE_"" v 4074816 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4074900 NON_CODE_"" +v 4074899 NON_CODE_"" v 4082240 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4082324 NON_CODE_"" +v 4082323 NON_CODE_"" v 4083904 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4083988 NON_CODE_"" -v 4084692 NON_CODE_"" +v 4083987 NON_CODE_"" +v 4084691 NON_CODE_"" v 4085120 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4085204 NON_CODE_"" +v 4085203 NON_CODE_"" v 4083848 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4085064 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4090176 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4090260 NON_CODE_"" +v 4090259 NON_CODE_"" v 4095104 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4095188 NON_CODE_"" +v 4095187 NON_CODE_"" v 4096768 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4096852 NON_CODE_"" +v 4096851 NON_CODE_"" v 4096712 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4102272 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4102356 NON_CODE_"" +v 4102355 NON_CODE_"" v 4137168 NON_IF_"if VK_USE_PLATFORM_GGP" v 4139264 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4139348 NON_CODE_"" +v 4139347 NON_CODE_"" v 4145280 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4145364 NON_CODE_"" +v 4145363 NON_CODE_"" v 4153088 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4153172 NON_CODE_"" +v 4153171 NON_CODE_"" v 4154368 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4154452 NON_CODE_"" -v 4155156 NON_CODE_"" +v 4154451 NON_CODE_"" +v 4155155 NON_CODE_"" v 4155648 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4155732 NON_CODE_"" -v 4156436 NON_CODE_"" +v 4155731 NON_CODE_"" +v 4156435 NON_CODE_"" v 4157248 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4157332 NON_CODE_"" -v 4158036 NON_CODE_"" +v 4157331 NON_CODE_"" +v 4158035 NON_CODE_"" v 4158848 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4158932 NON_CODE_"" +v 4158931 NON_CODE_"" v 4154312 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4155592 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4157192 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4158792 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4166336 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4166420 NON_CODE_"" +v 4166419 NON_CODE_"" v 4168064 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4168148 NON_CODE_"" -v 4168852 NON_CODE_"" +v 4168147 NON_CODE_"" +v 4168851 NON_CODE_"" v 4169728 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4169812 NON_CODE_"" -v 4170516 NON_CODE_"" +v 4169811 NON_CODE_"" +v 4170515 NON_CODE_"" v 4171392 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4171476 NON_CODE_"" +v 4171475 NON_CODE_"" v 4168008 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4169672 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4171336 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4177088 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4177172 NON_CODE_"" +v 4177171 NON_CODE_"" v 4182784 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4182868 NON_CODE_"" +v 4182867 NON_CODE_"" v 4188992 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4189076 NON_CODE_"" -v 4192204 REM_CODE_"" -v 4192260 ADD_CODE_"" -v 4195724 REM_CODE_"" -v 4195780 ADD_CODE_"" -v 4196492 REM_CODE_"" -v 4196548 ADD_CODE_"" +v 4189075 NON_CODE_"" +v 4192203 REM_CODE_"" +v 4192259 ADD_CODE_"" +v 4195723 REM_CODE_"" +v 4195779 ADD_CODE_"" +v 4196491 REM_CODE_"" +v 4196547 ADD_CODE_"" v 4213520 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 4215616 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4215700 NON_CODE_"" +v 4215699 NON_CODE_"" v 4227280 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 4229248 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4229332 NON_CODE_"" +v 4229331 NON_CODE_"" v 4232912 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 4234880 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4234964 NON_CODE_"" +v 4234963 NON_CODE_"" v 4240192 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4240276 NON_CODE_"" +v 4240275 NON_CODE_"" v 4245504 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4245588 NON_CODE_"" +v 4245587 NON_CODE_"" v 4255232 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4255316 NON_CODE_"" +v 4255315 NON_CODE_"" v 4260096 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4260180 NON_CODE_"" -v 4260820 NON_CODE_"" +v 4260179 NON_CODE_"" +v 4260819 NON_CODE_"" v 4260040 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4268864 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4268948 NON_CODE_"" +v 4268947 NON_CODE_"" v 4279808 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4279892 NON_CODE_"" +v 4279891 NON_CODE_"" v 4281088 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4281172 NON_CODE_"" -v 4281812 NON_CODE_"" +v 4281171 NON_CODE_"" +v 4281811 NON_CODE_"" v 4282752 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4282836 NON_CODE_"" +v 4282835 NON_CODE_"" v 4281032 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4282696 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4288640 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4288724 NON_CODE_"" +v 4288723 NON_CODE_"" v 4294592 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4294676 NON_CODE_"" +v 4294675 NON_CODE_"" v 4296320 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4296404 NON_CODE_"" +v 4296403 NON_CODE_"" v 4296264 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4302848 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4302932 NON_CODE_"" +v 4302931 NON_CODE_"" v 4304256 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4304340 NON_CODE_"" -v 4305044 NON_CODE_"" +v 4304339 NON_CODE_"" +v 4305043 NON_CODE_"" v 4305984 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4306068 NON_CODE_"" +v 4306067 NON_CODE_"" v 4304200 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4305928 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4312192 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4312276 NON_CODE_"" +v 4312275 NON_CODE_"" v 4313536 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4313620 NON_CODE_"" +v 4313619 NON_CODE_"" v 4313480 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4319360 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4319444 NON_CODE_"" +v 4319443 NON_CODE_"" v 4326464 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4326548 NON_CODE_"" +v 4326547 NON_CODE_"" v 4331408 NON_IF_"if VK_USE_PLATFORM_VI_NN" v 4333248 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4333332 NON_CODE_"" +v 4333331 NON_CODE_"" v 4337168 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4339328 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4339412 NON_CODE_"" +v 4339411 NON_CODE_"" v 4344336 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4346240 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4346324 NON_CODE_"" +v 4346323 NON_CODE_"" v 4350288 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4353792 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4353876 NON_CODE_"" +v 4353875 NON_CODE_"" v 4356800 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4356884 NON_CODE_"" +v 4356883 NON_CODE_"" v 4356744 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4360720 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4362816 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4362900 NON_CODE_"" +v 4362899 NON_CODE_"" v 4367696 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4368080 NON_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 4368140 REM_CODE_"" -v 4368196 ADD_CODE_"" -v 4372364 REM_CODE_"" -v 4372996 ADD_CODE_"" +v 4368139 REM_CODE_"" +v 4368195 ADD_CODE_"" +v 4372363 REM_CODE_"" +v 4372995 ADD_CODE_"" v 4374416 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4376256 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4376340 NON_CODE_"" +v 4376339 NON_CODE_"" v 4384784 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4386624 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4386708 NON_CODE_"" +v 4386707 NON_CODE_"" v 4390224 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4391936 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4392020 NON_CODE_"" +v 4392019 NON_CODE_"" v 4395408 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4398080 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4398164 NON_CODE_"" +v 4398163 NON_CODE_"" v 4399808 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4399892 NON_CODE_"" +v 4399891 NON_CODE_"" v 4399752 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4403408 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4403792 NON_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 4403916 REM_CODE_"" -v 4404036 ADD_CODE_"" -v 4404236 REM_CODE_"" -v 4404292 ADD_CODE_"" +v 4403915 REM_CODE_"" +v 4404035 ADD_CODE_"" +v 4404235 REM_CODE_"" +v 4404291 ADD_CODE_"" v 4405568 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4405652 NON_CODE_"" -v 4406532 ADD_CODE_"" -v 4406612 NON_CODE_"" -v 4406724 ADD_CODE_"" -v 4406804 NON_CODE_"" -v 4406476 REM_CODE_"" -v 4406668 REM_CODE_"" -v 4408844 REM_CODE_"" -v 4409092 ADD_CODE_"" +v 4405651 NON_CODE_"" +v 4406531 ADD_CODE_"" +v 4406611 NON_CODE_"" +v 4406723 ADD_CODE_"" +v 4406803 NON_CODE_"" +v 4406475 REM_CODE_"" +v 4406667 REM_CODE_"" +v 4408843 REM_CODE_"" +v 4409091 ADD_CODE_"" v 4407696 NON_IF_"if -VULKAN_HPP_HAS_SPACESHIP_OPERATOR" -v 4408140 REM_CODE_"" -v 4408196 ADD_CODE_"" +v 4408139 REM_CODE_"" +v 4408195 ADD_CODE_"" v 4410192 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4412288 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4412372 NON_CODE_"" +v 4412371 NON_CODE_"" v 4416464 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4419648 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4419732 NON_CODE_"" +v 4419731 NON_CODE_"" v 4420992 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4421076 NON_CODE_"" -v 4421780 NON_CODE_"" +v 4421075 NON_CODE_"" +v 4421779 NON_CODE_"" v 4422656 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4422740 NON_CODE_"" +v 4422739 NON_CODE_"" v 4420936 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4422600 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4426448 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4428864 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4428948 NON_CODE_"" +v 4428947 NON_CODE_"" v 4438160 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4440000 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4440084 NON_CODE_"" +v 4440083 NON_CODE_"" v 4443600 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4446272 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4446356 NON_CODE_"" +v 4446355 NON_CODE_"" v 4448000 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4448084 NON_CODE_"" +v 4448083 NON_CODE_"" v 4447944 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4451600 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4453376 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4453460 NON_CODE_"" +v 4453459 NON_CODE_"" v 4456976 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4459072 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4459156 NON_CODE_"" +v 4459155 NON_CODE_"" v 4463248 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4466432 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4466516 NON_CODE_"" +v 4466515 NON_CODE_"" v 4467776 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4467860 NON_CODE_"" -v 4468564 NON_CODE_"" +v 4467859 NON_CODE_"" +v 4468563 NON_CODE_"" v 4469440 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4469524 NON_CODE_"" +v 4469523 NON_CODE_"" v 4467720 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4469384 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4473232 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4475648 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4475732 NON_CODE_"" +v 4475731 NON_CODE_"" v 4480272 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4484800 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4484884 NON_CODE_"" +v 4484883 NON_CODE_"" v 4489344 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4489428 NON_CODE_"" +v 4489427 NON_CODE_"" v 4489288 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4493648 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4494032 NON_IF_"if -VULKAN_HPP_NO_STRUCT_CONSTRUCTORS" -v 4494156 REM_CODE_"" -v 4494852 ADD_CODE_"" +v 4494155 REM_CODE_"" +v 4494851 ADD_CODE_"" v 4497472 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4497556 NON_CODE_"" -v 4498052 ADD_CODE_"" -v 4498132 NON_CODE_"" -v 4497996 REM_CODE_"" -v 4504716 REM_CODE_"" -v 4505540 ADD_CODE_"" +v 4497555 NON_CODE_"" +v 4498051 ADD_CODE_"" +v 4498131 NON_CODE_"" +v 4497995 REM_CODE_"" +v 4504715 REM_CODE_"" +v 4505539 ADD_CODE_"" v 4507216 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4509184 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4509268 NON_CODE_"" +v 4509267 NON_CODE_"" v 4513296 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4516480 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4516564 NON_CODE_"" +v 4516563 NON_CODE_"" v 4518592 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4518676 NON_CODE_"" +v 4518675 NON_CODE_"" v 4518536 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4522384 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4526720 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4526804 NON_CODE_"" +v 4526803 NON_CODE_"" v 4528896 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4528980 NON_CODE_"" -v 4529684 NON_CODE_"" +v 4528979 NON_CODE_"" +v 4529683 NON_CODE_"" v 4530560 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4530644 NON_CODE_"" -v 4531348 NON_CODE_"" +v 4530643 NON_CODE_"" +v 4531347 NON_CODE_"" v 4528840 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4530504 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4536016 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4537792 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4537876 NON_CODE_"" +v 4537875 NON_CODE_"" v 4541392 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4543616 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4543700 NON_CODE_"" +v 4543699 NON_CODE_"" v 4548304 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4551488 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4551572 NON_CODE_"" +v 4551571 NON_CODE_"" v 4552832 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4552916 NON_CODE_"" -v 4553620 NON_CODE_"" +v 4552915 NON_CODE_"" +v 4553619 NON_CODE_"" v 4554496 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4554580 NON_CODE_"" +v 4554579 NON_CODE_"" v 4552776 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4554440 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4558288 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4560704 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4560788 NON_CODE_"" +v 4560787 NON_CODE_"" v 4565328 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4569152 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4569236 NON_CODE_"" +v 4569235 NON_CODE_"" v 4570560 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4570644 NON_CODE_"" -v 4571348 NON_CODE_"" +v 4570643 NON_CODE_"" +v 4571347 NON_CODE_"" v 4572288 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4572372 NON_CODE_"" -v 4573076 NON_CODE_"" +v 4572371 NON_CODE_"" +v 4573075 NON_CODE_"" v 4573952 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4574036 NON_CODE_"" -v 4574740 NON_CODE_"" +v 4574035 NON_CODE_"" +v 4574739 NON_CODE_"" v 4570504 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4572232 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4573896 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4578640 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4583168 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4583252 NON_CODE_"" +v 4583251 NON_CODE_"" v 4587840 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4587924 NON_CODE_"" +v 4587923 NON_CODE_"" v 4587784 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4592208 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4594880 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4594964 NON_CODE_"" +v 4594963 NON_CODE_"" v 4601616 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4603392 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4603476 NON_CODE_"" +v 4603475 NON_CODE_"" v 4611216 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4613184 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4613268 NON_CODE_"" +v 4613267 NON_CODE_"" v 4617296 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4619136 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4619220 NON_CODE_"" +v 4619219 NON_CODE_"" v 4622736 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4625472 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4625556 NON_CODE_"" +v 4625555 NON_CODE_"" v 4632784 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4634880 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4634964 NON_CODE_"" +v 4634963 NON_CODE_"" v 4639120 NON_IF_"if VK_ENABLE_BETA_EXTENSIONS" v 4641024 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4641108 NON_CODE_"" +v 4641107 NON_CODE_"" v 4644560 NON_IF_"if VK_USE_PLATFORM_WAYLAND_KHR" v 4646592 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4646676 NON_CODE_"" +v 4646675 NON_CODE_"" v 4651152 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 4657344 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4657428 NON_CODE_"" +v 4657427 NON_CODE_"" v 4658688 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4658772 NON_CODE_"" -v 4659476 NON_CODE_"" +v 4658771 NON_CODE_"" +v 4659475 NON_CODE_"" v 4659904 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4659988 NON_CODE_"" -v 4660628 NON_CODE_"" +v 4659987 NON_CODE_"" +v 4660627 NON_CODE_"" v 4661056 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4661140 NON_CODE_"" -v 4661780 NON_CODE_"" +v 4661139 NON_CODE_"" +v 4661779 NON_CODE_"" v 4662656 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4662740 NON_CODE_"" -v 4663444 NON_CODE_"" +v 4662739 NON_CODE_"" +v 4663443 NON_CODE_"" v 4663872 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4663956 NON_CODE_"" +v 4663955 NON_CODE_"" v 4658632 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4659848 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4661000 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" @@ -1939,21 +1939,21 @@ v 4662600 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4663816 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4667856 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 4674048 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4674132 NON_CODE_"" +v 4674131 NON_CODE_"" v 4675392 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4675476 NON_CODE_"" -v 4676180 NON_CODE_"" +v 4675475 NON_CODE_"" +v 4676179 NON_CODE_"" v 4676608 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4676692 NON_CODE_"" -v 4677332 NON_CODE_"" +v 4676691 NON_CODE_"" +v 4677331 NON_CODE_"" v 4677824 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4677908 NON_CODE_"" -v 4678612 NON_CODE_"" +v 4677907 NON_CODE_"" +v 4678611 NON_CODE_"" v 4679488 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4679572 NON_CODE_"" -v 4680276 NON_CODE_"" +v 4679571 NON_CODE_"" +v 4680275 NON_CODE_"" v 4680704 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4680788 NON_CODE_"" +v 4680787 NON_CODE_"" v 4675336 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4676552 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4677768 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" @@ -1961,2765 +1961,2765 @@ v 4679432 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4680648 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4684752 NON_IF_"if VK_USE_PLATFORM_WIN32_KHR" v 4686784 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4686868 NON_CODE_"" +v 4686867 NON_CODE_"" v 4696128 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4696212 NON_CODE_"" +v 4696211 NON_CODE_"" v 4699008 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4699092 NON_CODE_"" -v 4699796 NON_CODE_"" +v 4699091 NON_CODE_"" +v 4699795 NON_CODE_"" v 4700288 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4700372 NON_CODE_"" -v 4701076 NON_CODE_"" +v 4700371 NON_CODE_"" +v 4701075 NON_CODE_"" v 4701568 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4701652 NON_CODE_"" +v 4701651 NON_CODE_"" v 4698952 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4700232 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4701512 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4708352 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4708436 NON_CODE_"" +v 4708435 NON_CODE_"" v 4709760 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4709844 NON_CODE_"" +v 4709843 NON_CODE_"" v 4709704 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4716160 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4716244 NON_CODE_"" +v 4716243 NON_CODE_"" v 4717568 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4717652 NON_CODE_"" +v 4717651 NON_CODE_"" v 4717512 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4723712 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4723796 NON_CODE_"" +v 4723795 NON_CODE_"" v 4724992 ADD_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" -v 4725076 NON_CODE_"" +v 4725075 NON_CODE_"" v 4724936 REM_IF_"if -VULKAN_HPP_DISABLE_ENHANCED_MODE" v 4728528 NON_IF_"if VK_USE_PLATFORM_XCB_KHR" v 4730496 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4730580 NON_CODE_"" +v 4730579 NON_CODE_"" v 4734928 NON_IF_"if VK_USE_PLATFORM_XLIB_KHR" v 4736896 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 4736980 NON_CODE_"" -e 592 149 ba -e 900 592 a +v 4736979 NON_CODE_"" +e 592 144 ba +e 899 592 a e 3200 592 a -e 3284 592 b -e 3284 3200 a +e 3283 592 b +e 3283 3200 a e 8192 592 a -e 8276 592 b -e 8276 8192 a +e 8275 592 b +e 8275 8192 a e 9024 592 a -e 9108 592 b -e 9108 9024 a +e 9107 592 b +e 9107 9024 a e 14464 592 a -e 14548 592 b -e 14548 14464 a +e 14547 592 b +e 14547 14464 a e 22272 592 a -e 22356 592 b -e 22356 22272 a +e 22355 592 b +e 22355 22272 a e 27648 592 a -e 27732 592 b -e 27732 27648 a +e 27731 592 b +e 27731 27648 a e 30976 592 a -e 31060 592 b -e 31060 30976 a +e 31059 592 b +e 31059 30976 a e 32384 592 a -e 32468 592 b -e 32468 32384 a +e 32467 592 b +e 32467 32384 a e 37632 592 a -e 37716 592 b -e 37716 37632 a +e 37715 592 b +e 37715 37632 a e 41344 592 a -e 41428 592 b -e 41428 41344 a +e 41427 592 b +e 41427 41344 a e 42112 592 a -e 42196 592 b -e 42196 42112 a +e 42195 592 b +e 42195 42112 a e 50112 592 a -e 50196 592 b -e 50196 50112 a +e 50195 592 b +e 50195 50112 a e 53696 50112 a -e 53780 53640 b -e 53780 53696 a -e 54484 592 b -e 54484 50112 a +e 53779 53640 b +e 53779 53696 a +e 54483 592 b +e 54483 50112 a e 54976 50112 a -e 55060 54920 b -e 55060 54976 a -e 55764 592 b -e 55764 50112 a +e 55059 54920 b +e 55059 54976 a +e 55763 592 b +e 55763 50112 a e 53640 592 b e 54920 592 b e 60672 592 a -e 60756 592 b -e 60756 60672 a +e 60755 592 b +e 60755 60672 a e 66880 592 a -e 66964 592 b -e 66964 66880 a +e 66963 592 b +e 66963 66880 a e 74176 592 a -e 74260 592 b -e 74260 74176 a +e 74259 592 b +e 74259 74176 a e 83264 592 a -e 83348 592 b -e 83348 83264 a +e 83347 592 b +e 83347 83264 a e 93440 592 a -e 93524 592 b -e 93524 93440 a +e 93523 592 b +e 93523 93440 a e 99712 592 a -e 99796 592 b -e 99796 99712 a +e 99795 592 b +e 99795 99712 a e 104512 592 a -e 104596 592 b -e 104596 104512 a +e 104595 592 b +e 104595 104512 a e 112000 592 a -e 112084 592 b -e 112084 112000 a +e 112083 592 b +e 112083 112000 a e 114560 112000 a -e 114644 114504 b -e 114644 114560 a +e 114643 114504 b +e 114643 114560 a e 114504 592 b e 120320 592 a -e 120404 592 b -e 120404 120320 a +e 120403 592 b +e 120403 120320 a e 126464 592 a -e 126548 592 b -e 126548 126464 a +e 126547 592 b +e 126547 126464 a e 132160 592 a -e 132244 592 b -e 132244 132160 a +e 132243 592 b +e 132243 132160 a e 136384 592 a -e 136468 592 b -e 136468 136384 a +e 136467 592 b +e 136467 136384 a e 141184 592 a -e 141268 592 b -e 141268 141184 a +e 141267 592 b +e 141267 141184 a e 149056 592 a -e 149140 592 b -e 149140 149056 a +e 149139 592 b +e 149139 149056 a e 157184 592 a -e 157268 592 b -e 157268 157184 a +e 157267 592 b +e 157267 157184 a e 163392 592 a -e 163476 592 b -e 163476 163392 a +e 163475 592 b +e 163475 163392 a e 170688 592 a -e 170772 592 b -e 170772 170688 a +e 170771 592 b +e 170771 170688 a e 182592 592 a -e 182676 592 b -e 182676 182592 a +e 182675 592 b +e 182675 182592 a e 188608 592 a -e 188692 592 b -e 188692 188608 a +e 188691 592 b +e 188691 188608 a e 190144 592 a -e 190228 592 b -e 190228 190144 a +e 190227 592 b +e 190227 190144 a e 195584 592 a -e 195668 592 b -e 195668 195584 a +e 195667 592 b +e 195667 195584 a e 200256 592 a -e 200340 592 b -e 200340 200256 a +e 200339 592 b +e 200339 200256 a e 205888 592 a -e 205972 592 b -e 205972 205888 a +e 205971 592 b +e 205971 205888 a e 213056 592 a -e 213140 592 b -e 213140 213056 a +e 213139 592 b +e 213139 213056 a e 219136 592 a -e 219220 592 b -e 219220 219136 a +e 219219 592 b +e 219219 219136 a e 225984 592 a -e 226068 592 b -e 226068 225984 a +e 226067 592 b +e 226067 225984 a e 245968 592 ba e 247872 245968 a -e 247956 245968 b -e 247956 247872 a +e 247955 245968 b +e 247955 247872 a e 254016 592 a -e 254100 592 b -e 254100 254016 a +e 254099 592 b +e 254099 254016 a e 261888 592 a -e 261972 592 b -e 261972 261888 a +e 261971 592 b +e 261971 261888 a e 271104 592 a -e 271188 592 b -e 271188 271104 a +e 271187 592 b +e 271187 271104 a e 280576 592 a -e 280660 592 b -e 280660 280576 a +e 280659 592 b +e 280659 280576 a e 286400 592 a -e 286484 592 b -e 286484 286400 a +e 286483 592 b +e 286483 286400 a e 291328 592 a -e 291412 592 b -e 291412 291328 a +e 291411 592 b +e 291411 291328 a e 297600 592 a -e 297684 592 b -e 297684 297600 a +e 297683 592 b +e 297683 297600 a e 302528 592 a -e 302612 592 b -e 302612 302528 a +e 302611 592 b +e 302611 302528 a e 306944 592 a -e 307028 592 b -e 307028 306944 a +e 307027 592 b +e 307027 306944 a e 312896 592 a -e 312980 592 b -e 312980 312896 a +e 312979 592 b +e 312979 312896 a e 315136 312896 a -e 315220 315080 b -e 315220 315136 a +e 315219 315080 b +e 315219 315136 a e 315080 592 b e 320576 592 a -e 320660 592 b -e 320660 320576 a +e 320659 592 b +e 320659 320576 a e 325056 592 a -e 325140 592 b -e 325140 325056 a +e 325139 592 b +e 325139 325056 a e 328960 592 a -e 329044 592 b -e 329044 328960 a +e 329043 592 b +e 329043 328960 a e 334912 592 a -e 334996 592 b -e 334996 334912 a +e 334995 592 b +e 334995 334912 a e 337472 334912 a -e 337556 337416 b -e 337556 337472 a +e 337555 337416 b +e 337555 337472 a e 337416 592 b e 343552 592 a -e 343636 592 b -e 343636 343552 a +e 343635 592 b +e 343635 343552 a e 344832 343552 a -e 344916 344776 b -e 344916 344832 a +e 344915 344776 b +e 344915 344832 a e 344776 592 b e 350272 592 a -e 350356 592 b -e 350356 350272 a +e 350355 592 b +e 350355 350272 a e 356032 592 a -e 356116 592 b -e 356116 356032 a +e 356115 592 b +e 356115 356032 a e 360320 592 a -e 360404 592 b -e 360404 360320 a +e 360403 592 b +e 360403 360320 a e 366144 592 a -e 366228 592 b -e 366228 366144 a +e 366227 592 b +e 366227 366144 a e 367424 366144 a -e 367508 367368 b -e 367508 367424 a -e 368148 592 b -e 368148 366144 a +e 367507 367368 b +e 367507 367424 a +e 368147 592 b +e 368147 366144 a e 369088 366144 a -e 369172 369032 b -e 369172 369088 a +e 369171 369032 b +e 369171 369088 a e 367368 592 b e 369032 592 b e 374848 592 a -e 374932 592 b -e 374932 374848 a +e 374931 592 b +e 374931 374848 a e 381120 592 a -e 381204 592 b -e 381204 381120 a +e 381203 592 b +e 381203 381120 a e 386880 592 a -e 386964 592 b -e 386964 386880 a +e 386963 592 b +e 386963 386880 a e 392256 592 a -e 392340 592 b -e 392340 392256 a +e 392339 592 b +e 392339 392256 a e 397312 592 a -e 397396 592 b -e 397396 397312 a +e 397395 592 b +e 397395 397312 a e 401792 592 a -e 401876 592 b -e 401876 401792 a +e 401875 592 b +e 401875 401792 a e 408512 592 a -e 408596 592 b -e 408596 408512 a +e 408595 592 b +e 408595 408512 a e 409792 408512 a -e 409876 409736 b -e 409876 409792 a +e 409875 409736 b +e 409875 409792 a e 409736 592 b e 415168 592 a -e 415252 592 b -e 415252 415168 a +e 415251 592 b +e 415251 415168 a e 416512 415168 a -e 416596 416456 b -e 416596 416512 a +e 416595 416456 b +e 416595 416512 a e 416456 592 b e 421184 592 a -e 421268 592 b -e 421268 421184 a +e 421267 592 b +e 421267 421184 a e 426112 592 a -e 426196 592 b -e 426196 426112 a +e 426195 592 b +e 426195 426112 a e 431168 592 a -e 431252 592 b -e 431252 431168 a +e 431251 592 b +e 431251 431168 a e 436672 592 a -e 436756 592 b -e 436756 436672 a +e 436755 592 b +e 436755 436672 a e 443904 592 a -e 443988 592 b -e 443988 443904 a +e 443987 592 b +e 443987 443904 a e 445248 443904 a -e 445332 445192 b -e 445332 445248 a +e 445331 445192 b +e 445331 445248 a e 445192 592 b e 452608 592 a -e 452692 592 b -e 452692 452608 a +e 452691 592 b +e 452691 452608 a e 453888 452608 a -e 453972 453832 b -e 453972 453888 a -e 454676 592 b -e 454676 452608 a +e 453971 453832 b +e 453971 453888 a +e 454675 592 b +e 454675 452608 a e 455552 452608 a -e 455636 455496 b -e 455636 455552 a -e 456340 592 b -e 456340 452608 a +e 455635 455496 b +e 455635 455552 a +e 456339 592 b +e 456339 452608 a e 457216 452608 a -e 457300 457160 b -e 457300 457216 a -e 458004 592 b -e 458004 452608 a +e 457299 457160 b +e 457299 457216 a +e 458003 592 b +e 458003 452608 a e 458880 452608 a -e 458964 458824 b -e 458964 458880 a -e 459668 592 b -e 459668 452608 a +e 458963 458824 b +e 458963 458880 a +e 459667 592 b +e 459667 452608 a e 460544 452608 a -e 460628 460488 b -e 460628 460544 a +e 460627 460488 b +e 460627 460544 a e 453832 592 b e 455496 592 b e 457160 592 b e 458824 592 b e 460488 592 b e 466496 592 a -e 466580 592 b -e 466580 466496 a +e 466579 592 b +e 466579 466496 a e 471872 592 a -e 471956 592 b -e 471956 471872 a +e 471955 592 b +e 471955 471872 a e 477824 592 a -e 477908 592 b -e 477908 477824 a +e 477907 592 b +e 477907 477824 a e 486528 592 a -e 486612 592 b -e 486612 486528 a +e 486611 592 b +e 486611 486528 a e 489344 486528 a -e 489428 489288 b -e 489428 489344 a -e 490132 592 b -e 490132 486528 a +e 489427 489288 b +e 489427 489344 a +e 490131 592 b +e 490131 486528 a e 489288 592 b e 495296 592 a -e 495380 592 b -e 495380 495296 a +e 495379 592 b +e 495379 495296 a e 500480 592 a -e 500564 592 b -e 500564 500480 a +e 500563 592 b +e 500563 500480 a e 508032 592 a -e 508116 592 b -e 508116 508032 a +e 508115 592 b +e 508115 508032 a e 510848 508032 a -e 510932 510792 b -e 510932 510848 a +e 510931 510792 b +e 510931 510848 a e 510792 592 b e 516416 592 a -e 516500 592 b -e 516500 516416 a +e 516499 592 b +e 516499 516416 a e 521600 592 a -e 521684 592 b -e 521684 521600 a +e 521683 592 b +e 521683 521600 a e 527168 592 a -e 527252 592 b -e 527252 527168 a +e 527251 592 b +e 527251 527168 a e 534336 592 a -e 534420 592 b -e 534420 534336 a +e 534419 592 b +e 534419 534336 a e 542656 592 a -e 542740 592 b -e 542740 542656 a +e 542739 592 b +e 542739 542656 a e 551616 592 a -e 551700 592 b -e 551700 551616 a +e 551699 592 b +e 551699 551616 a e 560832 592 a -e 560916 592 b -e 560916 560832 a +e 560915 592 b +e 560915 560832 a e 566208 592 a -e 566292 592 b -e 566292 566208 a +e 566291 592 b +e 566291 566208 a e 571968 592 a -e 572052 592 b -e 572052 571968 a +e 572051 592 b +e 572051 571968 a e 579072 592 a -e 579156 592 b -e 579156 579072 a +e 579155 592 b +e 579155 579072 a e 591488 592 a -e 591572 592 b -e 591572 591488 a +e 591571 592 b +e 591571 591488 a e 592320 592 a -e 592404 592 b -e 592404 592320 a +e 592403 592 b +e 592403 592320 a e 596544 592 a -e 596628 592 b -e 596628 596544 a +e 596627 592 b +e 596627 596544 a e 599616 592 a -e 599700 592 b -e 599700 599616 a +e 599699 592 b +e 599699 599616 a e 600320 592 a -e 600404 592 b -e 600404 600320 a +e 600403 592 b +e 600403 600320 a e 604544 592 a -e 604628 592 b -e 604628 604544 a +e 604627 592 b +e 604627 604544 a e 608576 592 a -e 608660 592 b -e 608660 608576 a +e 608659 592 b +e 608659 608576 a e 613568 592 a -e 613652 592 b -e 613652 613568 a +e 613651 592 b +e 613651 613568 a e 619840 592 a -e 619924 592 b -e 619924 619840 a +e 619923 592 b +e 619923 619840 a e 621632 619840 a -e 621716 621576 b -e 621716 621632 a +e 621715 621576 b +e 621715 621632 a e 621576 592 b e 626880 592 a -e 626964 592 b -e 626964 626880 a +e 626963 592 b +e 626963 626880 a e 633728 592 a -e 633812 592 b -e 633812 633728 a +e 633811 592 b +e 633811 633728 a e 641664 592 a -e 641748 592 b -e 641748 641664 a +e 641747 592 b +e 641747 641664 a e 647744 592 a -e 647828 592 b -e 647828 647744 a +e 647827 592 b +e 647827 647744 a e 653696 592 a -e 653780 592 b -e 653780 653696 a +e 653779 592 b +e 653779 653696 a e 659840 592 a -e 659924 592 b -e 659924 659840 a +e 659923 592 b +e 659923 659840 a e 666880 592 a -e 666964 592 b -e 666964 666880 a +e 666963 592 b +e 666963 666880 a e 673408 592 a -e 673492 592 b -e 673492 673408 a +e 673491 592 b +e 673491 673408 a e 679232 592 a -e 679316 592 b -e 679316 679232 a +e 679315 592 b +e 679315 679232 a e 684800 592 a -e 684884 592 b -e 684884 684800 a +e 684883 592 b +e 684883 684800 a e 690816 592 a -e 690900 592 b -e 690900 690816 a +e 690899 592 b +e 690899 690816 a e 691776 690816 a -e 691860 691720 b -e 691860 691776 a -e 692564 592 b -e 692564 690816 a +e 691859 691720 b +e 691859 691776 a +e 692563 592 b +e 692563 690816 a e 693376 690816 a -e 693460 693320 b -e 693460 693376 a +e 693459 693320 b +e 693459 693376 a e 691720 592 b e 693320 592 b e 698752 592 a -e 698836 592 b -e 698836 698752 a +e 698835 592 b +e 698835 698752 a e 706432 592 a -e 706516 592 b -e 706516 706432 a +e 706515 592 b +e 706515 706432 a e 713984 592 a -e 714068 592 b -e 714068 713984 a +e 714067 592 b +e 714067 713984 a e 720320 592 a -e 720404 592 b -e 720404 720320 a +e 720403 592 b +e 720403 720320 a e 726912 592 a -e 726996 592 b -e 726996 726912 a +e 726995 592 b +e 726995 726912 a e 735744 592 a -e 735828 592 b -e 735828 735744 a +e 735827 592 b +e 735827 735744 a e 742656 592 a -e 742740 592 b -e 742740 742656 a +e 742739 592 b +e 742739 742656 a e 749312 592 a -e 749396 592 b -e 749396 749312 a +e 749395 592 b +e 749395 749312 a e 751360 749312 a -e 751444 751304 b -e 751444 751360 a +e 751443 751304 b +e 751443 751360 a e 751304 592 b e 758144 592 a -e 758228 592 b -e 758228 758144 a +e 758227 592 b +e 758227 758144 a e 760704 758144 a -e 760788 760648 b -e 760788 760704 a +e 760787 760648 b +e 760787 760704 a e 760648 592 b e 766336 592 a -e 766420 592 b -e 766420 766336 a +e 766419 592 b +e 766419 766336 a e 772352 592 a -e 772436 592 b -e 772436 772352 a +e 772435 592 b +e 772435 772352 a e 780736 592 a -e 780820 592 b -e 780820 780736 a +e 780819 592 b +e 780819 780736 a e 789504 592 a -e 789588 592 b -e 789588 789504 a +e 789587 592 b +e 789587 789504 a e 792320 789504 a -e 792404 792264 b -e 792404 792320 a +e 792403 792264 b +e 792403 792320 a e 792264 592 b e 799360 592 a -e 799444 592 b -e 799444 799360 a +e 799443 592 b +e 799443 799360 a e 801920 799360 a -e 802004 801864 b -e 802004 801920 a +e 802003 801864 b +e 802003 801920 a e 801864 592 b e 808064 592 a -e 808148 592 b -e 808148 808064 a +e 808147 592 b +e 808147 808064 a e 813632 592 a -e 813716 592 b -e 813716 813632 a +e 813715 592 b +e 813715 813632 a e 817808 592 ba e 819968 817808 a -e 820036 819968 a +e 820035 819968 a e 822208 592 a -e 822292 592 b -e 822292 822208 a +e 822291 592 b +e 822291 822208 a e 826496 822208 a -e 826564 826496 a -e 827156 592 b -e 827156 822208 a +e 826563 826496 a +e 827155 592 b +e 827155 822208 a e 827904 822208 a -e 827972 827904 a +e 827971 827904 a e 833728 592 a -e 833812 592 b -e 833812 833728 a +e 833811 592 b +e 833811 833728 a e 837584 592 ba e 840384 837584 a -e 840468 837584 b -e 840468 840384 a +e 840467 837584 b +e 840467 840384 a e 841664 840384 a -e 841748 841608 b -e 841748 841664 a -e 842388 837584 b -e 842388 840384 a +e 841747 841608 b +e 841747 841664 a +e 842387 837584 b +e 842387 840384 a e 843200 840384 a -e 843284 843144 b -e 843284 843200 a +e 843283 843144 b +e 843283 843200 a e 841608 837584 b e 843144 837584 b e 848832 592 a -e 848916 592 b -e 848916 848832 a +e 848915 592 b +e 848915 848832 a e 854784 592 a -e 854868 592 b -e 854868 854784 a +e 854867 592 b +e 854867 854784 a e 862528 592 a -e 862612 592 b -e 862612 862528 a +e 862611 592 b +e 862611 862528 a e 865024 862528 a -e 865108 864968 b -e 865108 865024 a +e 865107 864968 b +e 865107 865024 a e 864968 592 b e 870848 592 a -e 870932 592 b -e 870932 870848 a +e 870931 592 b +e 870931 870848 a e 877056 592 a -e 877140 592 b -e 877140 877056 a +e 877139 592 b +e 877139 877056 a e 883008 592 a -e 883092 592 b -e 883092 883008 a +e 883091 592 b +e 883091 883008 a e 892096 592 a -e 892180 592 b -e 892180 892096 a +e 892179 592 b +e 892179 892096 a e 895040 892096 a -e 895124 894984 b -e 895124 895040 a -e 895828 592 b -e 895828 892096 a +e 895123 894984 b +e 895123 895040 a +e 895827 592 b +e 895827 892096 a e 896704 892096 a -e 896788 896648 b -e 896788 896704 a -e 897492 592 b -e 897492 892096 a +e 896787 896648 b +e 896787 896704 a +e 897491 592 b +e 897491 892096 a e 898368 892096 a -e 898452 898312 b -e 898452 898368 a +e 898451 898312 b +e 898451 898368 a e 894984 592 b e 896648 592 b e 898312 592 b e 904960 592 a -e 905044 592 b -e 905044 904960 a +e 905043 592 b +e 905043 904960 a e 913792 592 a -e 913876 592 b -e 913876 913792 a +e 913875 592 b +e 913875 913792 a e 916224 913792 a -e 916308 916168 b -e 916308 916224 a +e 916307 916168 b +e 916307 916224 a e 916168 592 b e 921920 592 a -e 922004 592 b -e 922004 921920 a +e 922003 592 b +e 922003 921920 a e 927360 592 a -e 927444 592 b -e 927444 927360 a +e 927443 592 b +e 927443 927360 a e 932992 592 a -e 933076 592 b -e 933076 932992 a +e 933075 592 b +e 933075 932992 a e 939072 592 a -e 939156 592 b -e 939156 939072 a +e 939155 592 b +e 939155 939072 a e 946048 592 a -e 946132 592 b -e 946132 946048 a +e 946131 592 b +e 946131 946048 a e 953344 592 a -e 953428 592 b -e 953428 953344 a +e 953427 592 b +e 953427 953344 a e 965120 592 a -e 965204 592 b -e 965204 965120 a +e 965203 592 b +e 965203 965120 a e 966848 965120 a -e 966932 966792 b -e 966932 966848 a -e 967636 592 b -e 967636 965120 a +e 966931 966792 b +e 966931 966848 a +e 967635 592 b +e 967635 965120 a e 968512 965120 a -e 968596 968456 b -e 968596 968512 a -e 969300 592 b -e 969300 965120 a +e 968595 968456 b +e 968595 968512 a +e 969299 592 b +e 969299 965120 a e 970176 965120 a -e 970260 970120 b -e 970260 970176 a +e 970259 970120 b +e 970259 970176 a e 966792 592 b e 968456 592 b e 970120 592 b e 975936 592 a -e 976020 592 b -e 976020 975936 a +e 976019 592 b +e 976019 975936 a e 981120 592 a -e 981204 592 b -e 981204 981120 a +e 981203 592 b +e 981203 981120 a e 986176 592 a -e 986260 592 b -e 986260 986176 a +e 986259 592 b +e 986259 986176 a e 992000 592 a -e 992084 592 b -e 992084 992000 a +e 992083 592 b +e 992083 992000 a e 994112 992000 a -e 994196 994056 b -e 994196 994112 a +e 994195 994056 b +e 994195 994112 a e 994056 592 b e 999744 592 a -e 999828 592 b -e 999828 999744 a +e 999827 592 b +e 999827 999744 a e 1006144 592 a -e 1006228 592 b -e 1006228 1006144 a +e 1006227 592 b +e 1006227 1006144 a e 1007936 1006144 a -e 1008020 1007880 b -e 1008020 1007936 a +e 1008019 1007880 b +e 1008019 1007936 a e 1007880 592 b e 1014528 592 a -e 1014612 592 b -e 1014612 1014528 a +e 1014611 592 b +e 1014611 1014528 a e 1016704 1014528 a -e 1016788 1016648 b -e 1016788 1016704 a +e 1016787 1016648 b +e 1016787 1016704 a e 1016648 592 b e 1022656 592 a -e 1022740 592 b -e 1022740 1022656 a +e 1022739 592 b +e 1022739 1022656 a e 1024000 1022656 a -e 1024084 1023944 b -e 1024084 1024000 a +e 1024083 1023944 b +e 1024083 1024000 a e 1023944 592 b e 1030272 592 a -e 1030356 592 b -e 1030356 1030272 a +e 1030355 592 b +e 1030355 1030272 a e 1032064 1030272 a -e 1032148 1032008 b -e 1032148 1032064 a +e 1032147 1032008 b +e 1032147 1032064 a e 1032008 592 b e 1042688 592 a -e 1042772 592 b -e 1042772 1042688 a +e 1042771 592 b +e 1042771 1042688 a e 1044096 1042688 a -e 1044180 1044040 b -e 1044180 1044096 a +e 1044179 1044040 b +e 1044179 1044096 a e 1044040 592 b e 1054784 592 a -e 1054868 592 b -e 1054868 1054784 a +e 1054867 592 b +e 1054867 1054784 a e 1064128 592 a -e 1064212 592 b -e 1064212 1064128 a +e 1064211 592 b +e 1064211 1064128 a e 1065984 1064128 a -e 1066068 1065928 b -e 1066068 1065984 a -e 1066772 592 b -e 1066772 1064128 a +e 1066067 1065928 b +e 1066067 1065984 a +e 1066771 592 b +e 1066771 1064128 a e 1065928 592 b e 1075136 592 a -e 1075220 592 b -e 1075220 1075136 a +e 1075219 592 b +e 1075219 1075136 a e 1077184 1075136 a -e 1077268 1077128 b -e 1077268 1077184 a +e 1077267 1077128 b +e 1077267 1077184 a e 1077128 592 b e 1089216 592 a -e 1089300 592 b -e 1089300 1089216 a +e 1089299 592 b +e 1089299 1089216 a e 1124352 592 a -e 1124436 592 b -e 1124436 1124352 a +e 1124435 592 b +e 1124435 1124352 a e 1126080 1124352 a -e 1126164 1126024 b -e 1126164 1126080 a -e 1126868 592 b -e 1126868 1124352 a +e 1126163 1126024 b +e 1126163 1126080 a +e 1126867 592 b +e 1126867 1124352 a e 1127680 1124352 a -e 1127764 1127624 b -e 1127764 1127680 a -e 1128404 592 b -e 1128404 1124352 a +e 1127763 1127624 b +e 1127763 1127680 a +e 1128403 592 b +e 1128403 1124352 a e 1129216 1124352 a -e 1129300 1129160 b -e 1129300 1129216 a -e 1130004 592 b -e 1130004 1124352 a +e 1129299 1129160 b +e 1129299 1129216 a +e 1130003 592 b +e 1130003 1124352 a e 1126024 592 b e 1127624 592 b e 1129160 592 b e 1135936 592 a -e 1136020 592 b -e 1136020 1135936 a +e 1136019 592 b +e 1136019 1135936 a e 1142336 592 a -e 1142420 592 b -e 1142420 1142336 a +e 1142419 592 b +e 1142419 1142336 a e 1147648 592 a -e 1147732 592 b -e 1147732 1147648 a +e 1147731 592 b +e 1147731 1147648 a e 1152896 592 a -e 1152980 592 b -e 1152980 1152896 a +e 1152979 592 b +e 1152979 1152896 a e 1158720 592 a -e 1158804 592 b -e 1158804 1158720 a +e 1158803 592 b +e 1158803 1158720 a e 1164736 592 a -e 1164820 592 b -e 1164820 1164736 a +e 1164819 592 b +e 1164819 1164736 a e 1166080 1164736 a -e 1166164 1166024 b -e 1166164 1166080 a +e 1166163 1166024 b +e 1166163 1166080 a e 1166024 592 b -e 1173388 592 b -e 1173444 592 a +e 1173387 592 b +e 1173443 592 a e 1177152 592 a -e 1177236 592 b -e 1177236 1177152 a +e 1177235 592 b +e 1177235 1177152 a e 1178432 1177152 a -e 1178516 1178376 b -e 1178516 1178432 a -e 1179156 592 b -e 1179156 1177152 a +e 1178515 1178376 b +e 1178515 1178432 a +e 1179155 592 b +e 1179155 1177152 a e 1178376 592 b e 1185152 592 a -e 1185236 592 b -e 1185236 1185152 a +e 1185235 592 b +e 1185235 1185152 a e 1186880 1185152 a -e 1186964 1186824 b -e 1186964 1186880 a +e 1186963 1186824 b +e 1186963 1186880 a e 1186824 592 b e 1193792 592 a -e 1193876 592 b -e 1193876 1193792 a +e 1193875 592 b +e 1193875 1193792 a e 1195136 1193792 a -e 1195220 1195080 b -e 1195220 1195136 a -e 1195924 592 b -e 1195924 1193792 a +e 1195219 1195080 b +e 1195219 1195136 a +e 1195923 592 b +e 1195923 1193792 a e 1196800 1193792 a -e 1196884 1196744 b -e 1196884 1196800 a -e 1197588 592 b -e 1197588 1193792 a +e 1196883 1196744 b +e 1196883 1196800 a +e 1197587 592 b +e 1197587 1193792 a e 1198464 1193792 a -e 1198548 1198408 b -e 1198548 1198464 a +e 1198547 1198408 b +e 1198547 1198464 a e 1195080 592 b e 1196744 592 b e 1198408 592 b e 1204288 592 a -e 1204372 592 b -e 1204372 1204288 a +e 1204371 592 b +e 1204371 1204288 a e 1209728 592 a -e 1209812 592 b -e 1209812 1209728 a +e 1209811 592 b +e 1209811 1209728 a e 1215296 592 a -e 1215380 592 b -e 1215380 1215296 a -e 1223500 592 b -e 1223556 592 a +e 1215379 592 b +e 1215379 1215296 a +e 1223499 592 b +e 1223555 592 a e 1226688 592 a -e 1226772 592 b -e 1226772 1226688 a +e 1226771 592 b +e 1226771 1226688 a e 1232320 592 a -e 1232404 592 b -e 1232404 1232320 a +e 1232403 592 b +e 1232403 1232320 a e 1237696 592 a -e 1237780 592 b -e 1237780 1237696 a +e 1237779 592 b +e 1237779 1237696 a e 1242064 592 ba e 1244096 1242064 a -e 1244180 1242064 b -e 1244180 1244096 a +e 1244179 1242064 b +e 1244179 1244096 a e 1250304 592 a -e 1250388 592 b -e 1250388 1250304 a +e 1250387 592 b +e 1250387 1250304 a e 1255488 592 a -e 1255572 592 b -e 1255572 1255488 a +e 1255571 592 b +e 1255571 1255488 a e 1260480 592 a -e 1260564 592 b -e 1260564 1260480 a +e 1260563 592 b +e 1260563 1260480 a e 1265344 592 a -e 1265428 592 b -e 1265428 1265344 a +e 1265427 592 b +e 1265427 1265344 a e 1293504 592 a -e 1293588 592 b -e 1293588 1293504 a +e 1293587 592 b +e 1293587 1293504 a e 1307328 592 a -e 1307412 592 b -e 1307412 1307328 a +e 1307411 592 b +e 1307411 1307328 a e 1312640 592 a -e 1312724 592 b -e 1312724 1312640 a +e 1312723 592 b +e 1312723 1312640 a e 1328896 592 a -e 1328980 592 b -e 1328980 1328896 a +e 1328979 592 b +e 1328979 1328896 a e 1338176 592 a -e 1338260 592 b -e 1338260 1338176 a +e 1338259 592 b +e 1338259 1338176 a e 1344512 592 a -e 1344596 592 b -e 1344596 1344512 a +e 1344595 592 b +e 1344595 1344512 a e 1350080 592 a -e 1350164 592 b -e 1350164 1350080 a +e 1350163 592 b +e 1350163 1350080 a e 1364224 592 a -e 1364308 592 b -e 1364308 1364224 a +e 1364307 592 b +e 1364307 1364224 a e 1369280 592 a -e 1369364 592 b -e 1369364 1369280 a +e 1369363 592 b +e 1369363 1369280 a e 1372816 592 ba e 1374848 1372816 a -e 1374932 1372816 b -e 1374932 1374848 a +e 1374931 1372816 b +e 1374931 1374848 a e 1381056 592 a -e 1381140 592 b -e 1381140 1381056 a +e 1381139 592 b +e 1381139 1381056 a e 1386368 592 a -e 1386452 592 b -e 1386452 1386368 a +e 1386451 592 b +e 1386451 1386368 a e 1389904 592 ba e 1391936 1389904 a -e 1392020 1389904 b -e 1392020 1391936 a +e 1392019 1389904 b +e 1392019 1391936 a e 1396432 592 ba e 1398336 1396432 a -e 1398420 1396432 b -e 1398420 1398336 a +e 1398419 1396432 b +e 1398419 1398336 a e 1404160 592 a -e 1404244 592 b -e 1404244 1404160 a +e 1404243 592 b +e 1404243 1404160 a e 1407760 592 ba e 1409856 1407760 a -e 1409940 1407760 b -e 1409940 1409856 a +e 1409939 1407760 b +e 1409939 1409856 a e 1431376 592 ba e 1433088 1431376 a -e 1433172 1431376 b -e 1433172 1433088 a +e 1433171 1431376 b +e 1433171 1433088 a e 1451648 592 a -e 1451732 592 b -e 1451732 1451648 a +e 1451731 592 b +e 1451731 1451648 a e 1457024 592 a -e 1457108 592 b -e 1457108 1457024 a +e 1457107 592 b +e 1457107 1457024 a e 1462400 592 a -e 1462484 592 b -e 1462484 1462400 a +e 1462483 592 b +e 1462483 1462400 a e 1472512 592 a -e 1472596 592 b -e 1472596 1472512 a +e 1472595 592 b +e 1472595 1472512 a e 1477760 592 a -e 1477844 592 b -e 1477844 1477760 a +e 1477843 592 b +e 1477843 1477760 a e 1481808 592 ba e 1483840 1481808 a -e 1483924 1481808 b -e 1483924 1483840 a +e 1483923 1481808 b +e 1483923 1483840 a e 1503168 592 a -e 1503252 592 b -e 1503252 1503168 a +e 1503251 592 b +e 1503251 1503168 a e 1511040 592 a -e 1511124 592 b -e 1511124 1511040 a +e 1511123 592 b +e 1511123 1511040 a e 1514304 1511040 a -e 1514388 1514248 b -e 1514388 1514304 a +e 1514387 1514248 b +e 1514387 1514304 a e 1514248 592 b e 1520768 592 a -e 1520852 592 b -e 1520852 1520768 a +e 1520851 592 b +e 1520851 1520768 a e 1522176 1520768 a -e 1522260 1522120 b -e 1522260 1522176 a +e 1522259 1522120 b +e 1522259 1522176 a e 1522120 592 b e 1529408 592 a -e 1529492 592 b -e 1529492 1529408 a +e 1529491 592 b +e 1529491 1529408 a e 1531456 1529408 a -e 1531540 1531400 b -e 1531540 1531456 a -e 1532244 592 b -e 1532244 1529408 a +e 1531539 1531400 b +e 1531539 1531456 a +e 1532243 592 b +e 1532243 1529408 a e 1531400 592 b e 1543488 592 a -e 1543572 592 b -e 1543572 1543488 a +e 1543571 592 b +e 1543571 1543488 a e 1551680 592 a -e 1551764 592 b -e 1551764 1551680 a +e 1551763 592 b +e 1551763 1551680 a e 1554304 1551680 a -e 1554388 1554248 b -e 1554388 1554304 a -e 1555092 592 b -e 1555092 1551680 a +e 1554387 1554248 b +e 1554387 1554304 a +e 1555091 592 b +e 1555091 1551680 a e 1554248 592 b e 1564736 592 a -e 1564820 592 b -e 1564820 1564736 a +e 1564819 592 b +e 1564819 1564736 a e 1571840 592 a -e 1571924 592 b -e 1571924 1571840 a +e 1571923 592 b +e 1571923 1571840 a e 1577280 592 a -e 1577364 592 b -e 1577364 1577280 a +e 1577363 592 b +e 1577363 1577280 a e 1584704 592 a -e 1584788 592 b -e 1584788 1584704 a +e 1584787 592 b +e 1584787 1584704 a e 1586560 1584704 a -e 1586644 1586504 b -e 1586644 1586560 a -e 1587348 592 b -e 1587348 1584704 a +e 1586643 1586504 b +e 1586643 1586560 a +e 1587347 592 b +e 1587347 1584704 a e 1588288 1584704 a -e 1588372 1588232 b -e 1588372 1588288 a +e 1588371 1588232 b +e 1588371 1588288 a e 1586504 592 b e 1588232 592 b e 1594368 592 a -e 1594452 592 b -e 1594452 1594368 a +e 1594451 592 b +e 1594451 1594368 a e 1601024 592 a -e 1601108 592 b -e 1601108 1601024 a +e 1601107 592 b +e 1601107 1601024 a e 1608192 592 a -e 1608276 592 b -e 1608276 1608192 a +e 1608275 592 b +e 1608275 1608192 a e 1609984 1608192 a -e 1610068 1609928 b -e 1610068 1609984 a -e 1610772 592 b -e 1610772 1608192 a +e 1610067 1609928 b +e 1610067 1609984 a +e 1610771 592 b +e 1610771 1608192 a e 1611648 1608192 a -e 1611732 1611592 b -e 1611732 1611648 a +e 1611731 1611592 b +e 1611731 1611648 a e 1609928 592 b e 1611592 592 b e 1618624 592 a -e 1618708 592 b -e 1618708 1618624 a +e 1618707 592 b +e 1618707 1618624 a e 1630144 592 a -e 1630228 592 b -e 1630228 1630144 a +e 1630227 592 b +e 1630227 1630144 a e 1639168 592 a -e 1639252 592 b -e 1639252 1639168 a +e 1639251 592 b +e 1639251 1639168 a e 1647488 592 a -e 1647572 592 b -e 1647572 1647488 a +e 1647571 592 b +e 1647571 1647488 a e 1658240 592 a -e 1658324 592 b -e 1658324 1658240 a +e 1658323 592 b +e 1658323 1658240 a e 1668160 592 a -e 1668244 592 b -e 1668244 1668160 a +e 1668243 592 b +e 1668243 1668160 a e 1670784 1668160 a -e 1670868 1670728 b -e 1670868 1670784 a -e 1671572 592 b -e 1671572 1668160 a +e 1670867 1670728 b +e 1670867 1670784 a +e 1671571 592 b +e 1671571 1668160 a e 1670728 592 b e 1677760 592 a -e 1677844 592 b -e 1677844 1677760 a +e 1677843 592 b +e 1677843 1677760 a e 1679552 1677760 a -e 1679636 1679496 b -e 1679636 1679552 a +e 1679635 1679496 b +e 1679635 1679552 a e 1679496 592 b e 1689472 592 a -e 1689556 592 b -e 1689556 1689472 a +e 1689555 592 b +e 1689555 1689472 a e 1691200 1689472 a -e 1691284 1691144 b -e 1691284 1691200 a -e 1691988 592 b -e 1691988 1689472 a +e 1691283 1691144 b +e 1691283 1691200 a +e 1691987 592 b +e 1691987 1689472 a e 1691144 592 b e 1705152 592 a -e 1705236 592 b -e 1705236 1705152 a +e 1705235 592 b +e 1705235 1705152 a e 1706496 1705152 a -e 1706580 1706440 b -e 1706580 1706496 a -e 1707284 592 b -e 1707284 1705152 a +e 1706579 1706440 b +e 1706579 1706496 a +e 1707283 592 b +e 1707283 1705152 a e 1706440 592 b e 1714304 592 a -e 1714388 592 b -e 1714388 1714304 a +e 1714387 592 b +e 1714387 1714304 a e 1715648 1714304 a -e 1715732 1715592 b -e 1715732 1715648 a -e 1716436 592 b -e 1716436 1714304 a +e 1715731 1715592 b +e 1715731 1715648 a +e 1716435 592 b +e 1716435 1714304 a e 1717312 1714304 a -e 1717396 1717256 b -e 1717396 1717312 a +e 1717395 1717256 b +e 1717395 1717312 a e 1715592 592 b e 1717256 592 b e 1722496 592 a -e 1722580 592 b -e 1722580 1722496 a +e 1722579 592 b +e 1722579 1722496 a e 1727872 592 a -e 1727956 592 b -e 1727956 1727872 a +e 1727955 592 b +e 1727955 1727872 a e 1736512 592 a -e 1736596 592 b -e 1736596 1736512 a +e 1736595 592 b +e 1736595 1736512 a e 1740048 592 ba e 1741888 1740048 a -e 1741972 1740048 b -e 1741972 1741888 a +e 1741971 1740048 b +e 1741971 1741888 a e 1747584 592 a -e 1747668 592 b -e 1747668 1747584 a +e 1747667 592 b +e 1747667 1747584 a e 1753408 592 a -e 1753492 592 b -e 1753492 1753408 a +e 1753491 592 b +e 1753491 1753408 a e 1762944 592 a -e 1763028 592 b -e 1763028 1762944 a +e 1763027 592 b +e 1763027 1762944 a e 1768064 1762944 a -e 1768148 1768008 b -e 1768148 1768064 a -e 1768788 592 b -e 1768788 1762944 a +e 1768147 1768008 b +e 1768147 1768064 a +e 1768787 592 b +e 1768787 1762944 a e 1768008 592 b e 1780032 592 a -e 1780116 592 b -e 1780116 1780032 a +e 1780115 592 b +e 1780115 1780032 a e 1781888 1780032 a -e 1781972 1781832 b -e 1781972 1781888 a +e 1781971 1781832 b +e 1781971 1781888 a e 1781832 592 b e 1788224 592 a -e 1788308 592 b -e 1788308 1788224 a +e 1788307 592 b +e 1788307 1788224 a e 1789632 1788224 a -e 1789716 1789576 b -e 1789716 1789632 a +e 1789715 1789576 b +e 1789715 1789632 a e 1789576 592 b e 1800000 592 a -e 1800084 592 b -e 1800084 1800000 a +e 1800083 592 b +e 1800083 1800000 a e 1801344 1800000 a -e 1801428 1801288 b -e 1801428 1801344 a +e 1801427 1801288 b +e 1801427 1801344 a e 1801288 592 b e 1811840 592 a -e 1811924 592 b -e 1811924 1811840 a +e 1811923 592 b +e 1811923 1811840 a e 1820416 592 a -e 1820500 592 b -e 1820500 1820416 a +e 1820499 592 b +e 1820499 1820416 a e 1823952 592 ba e 1825984 1823952 a -e 1826068 1823952 b -e 1826068 1825984 a +e 1826067 1823952 b +e 1826067 1825984 a e 1831936 592 a -e 1832020 592 b -e 1832020 1831936 a +e 1832019 592 b +e 1832019 1831936 a e 1837440 592 a -e 1837524 592 b -e 1837524 1837440 a +e 1837523 592 b +e 1837523 1837440 a e 1843968 592 a -e 1844052 592 b -e 1844052 1843968 a +e 1844051 592 b +e 1844051 1843968 a e 1851328 592 a -e 1851412 592 b -e 1851412 1851328 a +e 1851411 592 b +e 1851411 1851328 a e 1856640 592 a -e 1856724 592 b -e 1856724 1856640 a +e 1856723 592 b +e 1856723 1856640 a e 1862016 592 a -e 1862100 592 b -e 1862100 1862016 a +e 1862099 592 b +e 1862099 1862016 a e 1867264 592 a -e 1867348 592 b -e 1867348 1867264 a +e 1867347 592 b +e 1867347 1867264 a e 1877696 592 a -e 1877780 592 b -e 1877780 1877696 a +e 1877779 592 b +e 1877779 1877696 a e 1885568 592 a -e 1885652 592 b -e 1885652 1885568 a +e 1885651 592 b +e 1885651 1885568 a e 1891712 592 a -e 1891796 592 b -e 1891796 1891712 a +e 1891795 592 b +e 1891795 1891712 a e 1895184 592 ba e 1897216 1895184 a -e 1897300 1895184 b -e 1897300 1897216 a +e 1897299 1895184 b +e 1897299 1897216 a e 1902848 592 a -e 1902932 592 b -e 1902932 1902848 a +e 1902931 592 b +e 1902931 1902848 a e 1907792 592 ba e 1910208 1907792 a -e 1910292 1907792 b -e 1910292 1910208 a +e 1910291 1907792 b +e 1910291 1910208 a e 1917568 592 a -e 1917652 592 b -e 1917652 1917568 a +e 1917651 592 b +e 1917651 1917568 a e 1923520 592 a -e 1923604 592 b -e 1923604 1923520 a +e 1923603 592 b +e 1923603 1923520 a e 1927632 592 ba e 1929792 1927632 a -e 1929876 1927632 b -e 1929876 1929792 a +e 1929875 1927632 b +e 1929875 1929792 a e 1934416 592 ba e 1936384 1934416 a -e 1936468 1934416 b -e 1936468 1936384 a +e 1936467 1934416 b +e 1936467 1936384 a e 1940496 592 ba e 1942656 1940496 a -e 1942740 1940496 b -e 1942740 1942656 a +e 1942739 1940496 b +e 1942739 1942656 a e 1948992 592 a -e 1949076 592 b -e 1949076 1948992 a +e 1949075 592 b +e 1949075 1948992 a e 1953936 592 ba e 1956416 1953936 a -e 1956500 1953936 b -e 1956500 1956416 a +e 1956499 1953936 b +e 1956499 1956416 a e 1962064 592 ba e 1964544 1962064 a -e 1964628 1962064 b -e 1964628 1964544 a +e 1964627 1962064 b +e 1964627 1964544 a e 1975808 592 a -e 1975892 592 b -e 1975892 1975808 a +e 1975891 592 b +e 1975891 1975808 a e 1981312 1975808 a -e 1981396 1981256 b -e 1981396 1981312 a -e 1982100 592 b -e 1982100 1975808 a +e 1981395 1981256 b +e 1981395 1981312 a +e 1982099 592 b +e 1982099 1975808 a e 1982528 1975808 a -e 1982612 1982472 b -e 1982612 1982528 a +e 1982611 1982472 b +e 1982611 1982528 a e 1981256 592 b e 1982472 592 b e 1990720 592 a -e 1990804 592 b -e 1990804 1990720 a +e 1990803 592 b +e 1990803 1990720 a e 1992960 1990720 a -e 1993044 1992904 b -e 1993044 1992960 a -e 1993748 592 b -e 1993748 1990720 a +e 1993043 1992904 b +e 1993043 1992960 a +e 1993747 592 b +e 1993747 1990720 a e 1994560 1990720 a -e 1994644 1994504 b -e 1994644 1994560 a +e 1994643 1994504 b +e 1994643 1994560 a e 1992904 592 b e 1994504 592 b e 2000192 592 a -e 2000276 592 b -e 2000276 2000192 a +e 2000275 592 b +e 2000275 2000192 a e 2005504 592 a -e 2005588 592 b -e 2005588 2005504 a +e 2005587 592 b +e 2005587 2005504 a e 2012416 592 a -e 2012500 592 b -e 2012500 2012416 a +e 2012499 592 b +e 2012499 2012416 a e 2014528 2012416 a -e 2014612 2014472 b -e 2014612 2014528 a -e 2015316 592 b -e 2015316 2012416 a +e 2014611 2014472 b +e 2014611 2014528 a +e 2015315 592 b +e 2015315 2012416 a e 2016128 2012416 a -e 2016212 2016072 b -e 2016212 2016128 a +e 2016211 2016072 b +e 2016211 2016128 a e 2014472 592 b e 2016072 592 b e 2024080 592 ba e 2025984 2024080 a -e 2026068 2024080 b -e 2026068 2025984 a +e 2026067 2024080 b +e 2026067 2025984 a e 2031872 592 a -e 2031956 592 b -e 2031956 2031872 a +e 2031955 592 b +e 2031955 2031872 a e 2038016 592 a -e 2038100 592 b -e 2038100 2038016 a +e 2038099 592 b +e 2038099 2038016 a e 2043776 592 a -e 2043860 592 b -e 2043860 2043776 a +e 2043859 592 b +e 2043859 2043776 a e 2049408 592 a -e 2049492 592 b -e 2049492 2049408 a +e 2049491 592 b +e 2049491 2049408 a e 2055104 592 a -e 2055188 592 b -e 2055188 2055104 a +e 2055187 592 b +e 2055187 2055104 a e 2067984 592 ba e 2070080 2067984 a -e 2070164 2067984 b -e 2070164 2070080 a +e 2070163 2067984 b +e 2070163 2070080 a e 2075648 592 a -e 2075732 592 b -e 2075732 2075648 a -e 2079684 592 a +e 2075731 592 b +e 2075731 2075648 a +e 2079683 592 a e 2080000 592 a -e 2080068 2080000 a -e 2081092 592 a +e 2080067 2080000 a +e 2081091 592 a e 2081664 592 a -e 2081732 2081664 a -e 2083012 592 a +e 2081731 2081664 a +e 2083011 592 a e 2083648 592 a -e 2083716 2083648 a -e 2083778 2083648 a -e 2083844 2083778 a -e 2084612 592 a +e 2083715 2083648 a +e 2083777 2083648 a +e 2083843 2083777 a +e 2084611 592 a e 2085776 592 ba e 2087808 2085776 a -e 2087892 2085776 b -e 2087892 2087808 a +e 2087891 2085776 b +e 2087891 2087808 a e 2091984 592 ba e 2094016 2091984 a -e 2094100 2091984 b -e 2094100 2094016 a +e 2094099 2091984 b +e 2094099 2094016 a e 2107968 592 a -e 2108052 592 b -e 2108052 2107968 a +e 2108051 592 b +e 2108051 2107968 a e 2113280 592 a -e 2113364 592 b -e 2113364 2113280 a +e 2113363 592 b +e 2113363 2113280 a e 2137360 592 ba e 2139264 2137360 a -e 2139348 2137360 b -e 2139348 2139264 a +e 2139347 2137360 b +e 2139347 2139264 a e 2144960 592 a -e 2145044 592 b -e 2145044 2144960 a +e 2145043 592 b +e 2145043 2144960 a e 2149888 592 a -e 2149972 592 b -e 2149972 2149888 a +e 2149971 592 b +e 2149971 2149888 a e 2159424 592 a -e 2159508 592 b -e 2159508 2159424 a +e 2159507 592 b +e 2159507 2159424 a e 2160384 2159424 a -e 2160468 2160328 b -e 2160468 2160384 a +e 2160467 2160328 b +e 2160467 2160384 a e 2160328 592 b e 2166016 592 a -e 2166100 592 b -e 2166100 2166016 a +e 2166099 592 b +e 2166099 2166016 a e 2167424 2166016 a -e 2167508 2167368 b -e 2167508 2167424 a +e 2167507 2167368 b +e 2167507 2167424 a e 2167368 592 b e 2177600 592 a -e 2177684 592 b -e 2177684 2177600 a -e 2185164 592 b -e 2185220 592 a -e 2190284 592 b -e 2190340 592 a +e 2177683 592 b +e 2177683 2177600 a +e 2185163 592 b +e 2185219 592 a +e 2190283 592 b +e 2190339 592 a e 2191616 592 a -e 2191700 592 b -e 2191700 2191616 a +e 2191699 592 b +e 2191699 2191616 a e 2192832 592 a -e 2192916 592 b -e 2192916 2192832 a +e 2192915 592 b +e 2192915 2192832 a e 2198464 592 a -e 2198548 592 b -e 2198548 2198464 a +e 2198547 592 b +e 2198547 2198464 a e 2204032 592 a -e 2204116 592 b -e 2204116 2204032 a +e 2204115 592 b +e 2204115 2204032 a e 2210304 592 a -e 2210388 592 b -e 2210388 2210304 a +e 2210387 592 b +e 2210387 2210304 a e 2215488 592 a -e 2215572 592 b -e 2215572 2215488 a +e 2215571 592 b +e 2215571 2215488 a e 2219072 592 a -e 2219156 592 b -e 2219156 2219072 a +e 2219155 592 b +e 2219155 2219072 a e 2220032 592 a -e 2220116 592 b -e 2220116 2220032 a +e 2220115 592 b +e 2220115 2220032 a e 2225728 592 a -e 2225812 592 b -e 2225812 2225728 a +e 2225811 592 b +e 2225811 2225728 a e 2230080 592 a -e 2230164 592 b -e 2230164 2230080 a +e 2230163 592 b +e 2230163 2230080 a e 2237504 592 a -e 2237588 592 b -e 2237588 2237504 a +e 2237587 592 b +e 2237587 2237504 a e 2243712 592 a -e 2243796 592 b -e 2243796 2243712 a +e 2243795 592 b +e 2243795 2243712 a e 2250432 592 a -e 2250516 592 b -e 2250516 2250432 a +e 2250515 592 b +e 2250515 2250432 a e 2256576 592 a -e 2256660 592 b -e 2256660 2256576 a +e 2256659 592 b +e 2256659 2256576 a e 2271232 592 a -e 2271316 592 b -e 2271316 2271232 a +e 2271315 592 b +e 2271315 2271232 a e 2283264 592 a -e 2283348 592 b -e 2283348 2283264 a +e 2283347 592 b +e 2283347 2283264 a e 2290368 592 a -e 2290452 592 b -e 2290452 2290368 a +e 2290451 592 b +e 2290451 2290368 a e 2297152 592 a -e 2297236 592 b -e 2297236 2297152 a +e 2297235 592 b +e 2297235 2297152 a e 2302720 592 a -e 2302804 592 b -e 2302804 2302720 a +e 2302803 592 b +e 2302803 2302720 a e 2308480 592 a -e 2308564 592 b -e 2308564 2308480 a +e 2308563 592 b +e 2308563 2308480 a e 2314880 592 a -e 2314964 592 b -e 2314964 2314880 a +e 2314963 592 b +e 2314963 2314880 a e 2328064 592 a -e 2328148 592 b -e 2328148 2328064 a +e 2328147 592 b +e 2328147 2328064 a e 2339008 592 a -e 2339092 592 b -e 2339092 2339008 a +e 2339091 592 b +e 2339091 2339008 a e 2344640 592 a -e 2344724 592 b -e 2344724 2344640 a +e 2344723 592 b +e 2344723 2344640 a e 2350400 592 a -e 2350484 592 b -e 2350484 2350400 a +e 2350483 592 b +e 2350483 2350400 a e 2361408 592 a -e 2361492 592 b -e 2361492 2361408 a +e 2361491 592 b +e 2361491 2361408 a e 2367168 592 a -e 2367252 592 b -e 2367252 2367168 a +e 2367251 592 b +e 2367251 2367168 a e 2380800 592 a -e 2380884 592 b -e 2380884 2380800 a +e 2380883 592 b +e 2380883 2380800 a e 2408960 592 a -e 2409044 592 b -e 2409044 2408960 a +e 2409043 592 b +e 2409043 2408960 a e 2421504 592 a -e 2421588 592 b -e 2421588 2421504 a +e 2421587 592 b +e 2421587 2421504 a e 2427136 592 a -e 2427220 592 b -e 2427220 2427136 a +e 2427219 592 b +e 2427219 2427136 a e 2447936 592 a -e 2448020 592 b -e 2448020 2447936 a +e 2448019 592 b +e 2448019 2447936 a e 2453824 592 a -e 2453908 592 b -e 2453908 2453824 a +e 2453907 592 b +e 2453907 2453824 a e 2460672 592 a -e 2460756 592 b -e 2460756 2460672 a +e 2460755 592 b +e 2460755 2460672 a e 2466368 592 a -e 2466452 592 b -e 2466452 2466368 a +e 2466451 592 b +e 2466451 2466368 a e 2472832 592 a -e 2472916 592 b -e 2472916 2472832 a +e 2472915 592 b +e 2472915 2472832 a e 2478528 592 a -e 2478612 592 b -e 2478612 2478528 a -e 2486916 592 a +e 2478611 592 b +e 2478611 2478528 a +e 2486915 592 a e 2487296 592 a -e 2487364 2487296 a -e 2488324 592 a +e 2487363 2487296 a +e 2488323 592 a e 2488960 592 a -e 2489028 2488960 a -e 2489924 592 a +e 2489027 2488960 a +e 2489923 592 a e 2490560 592 a -e 2490628 2490560 a -e 2490690 2490560 a -e 2490756 2490690 a -e 2491460 592 a +e 2490627 2490560 a +e 2490689 2490560 a +e 2490755 2490689 a +e 2491459 592 a e 2494528 592 a -e 2494612 592 b -e 2494612 2494528 a +e 2494611 592 b +e 2494611 2494528 a e 2499904 592 a -e 2499988 592 b -e 2499988 2499904 a +e 2499987 592 b +e 2499987 2499904 a e 2514496 592 a -e 2514580 592 b -e 2514580 2514496 a +e 2514579 592 b +e 2514579 2514496 a e 2525888 592 a -e 2525972 592 b -e 2525972 2525888 a +e 2525971 592 b +e 2525971 2525888 a e 2537984 592 a -e 2538068 592 b -e 2538068 2537984 a +e 2538067 592 b +e 2538067 2537984 a e 2543936 592 a -e 2544020 592 b -e 2544020 2543936 a +e 2544019 592 b +e 2544019 2543936 a e 2551040 592 a -e 2551124 592 b -e 2551124 2551040 a +e 2551123 592 b +e 2551123 2551040 a e 2558016 592 a -e 2558100 592 b -e 2558100 2558016 a +e 2558099 592 b +e 2558099 2558016 a e 2564032 592 a -e 2564116 592 b -e 2564116 2564032 a +e 2564115 592 b +e 2564115 2564032 a e 2584832 592 a -e 2584916 592 b -e 2584916 2584832 a +e 2584915 592 b +e 2584915 2584832 a e 2595264 592 a -e 2595348 592 b -e 2595348 2595264 a +e 2595347 592 b +e 2595347 2595264 a e 2607360 592 a -e 2607444 592 b -e 2607444 2607360 a +e 2607443 592 b +e 2607443 2607360 a e 2609664 2607360 a -e 2609748 2609608 b -e 2609748 2609664 a +e 2609747 2609608 b +e 2609747 2609664 a e 2609608 592 b e 2615680 592 a -e 2615764 592 b -e 2615764 2615680 a +e 2615763 592 b +e 2615763 2615680 a e 2623104 592 a -e 2623188 592 b -e 2623188 2623104 a +e 2623187 592 b +e 2623187 2623104 a e 2628800 592 a -e 2628884 592 b -e 2628884 2628800 a +e 2628883 592 b +e 2628883 2628800 a e 2634432 592 a -e 2634516 592 b -e 2634516 2634432 a +e 2634515 592 b +e 2634515 2634432 a e 2640064 592 a -e 2640148 592 b -e 2640148 2640064 a +e 2640147 592 b +e 2640147 2640064 a e 2645696 592 a -e 2645780 592 b -e 2645780 2645696 a +e 2645779 592 b +e 2645779 2645696 a e 2651520 592 a -e 2651604 592 b -e 2651604 2651520 a -e 2661700 592 a +e 2651603 592 b +e 2651603 2651520 a +e 2661699 592 a e 2662080 592 a -e 2662148 2662080 a -e 2663044 592 a +e 2662147 2662080 a +e 2663043 592 a e 2663680 592 a -e 2663748 2663680 a -e 2664644 592 a +e 2663747 2663680 a +e 2664643 592 a e 2665280 592 a -e 2665348 2665280 a -e 2665410 2665280 a -e 2665476 2665410 a -e 2666180 592 a +e 2665347 2665280 a +e 2665409 2665280 a +e 2665475 2665409 a +e 2666179 592 a e 2699904 592 a -e 2699988 592 b -e 2699988 2699904 a +e 2699987 592 b +e 2699987 2699904 a e 2722688 592 a -e 2722772 592 b -e 2722772 2722688 a +e 2722771 592 b +e 2722771 2722688 a e 2737024 592 a -e 2737108 592 b -e 2737108 2737024 a +e 2737107 592 b +e 2737107 2737024 a e 2750528 592 a -e 2750612 592 b -e 2750612 2750528 a +e 2750611 592 b +e 2750611 2750528 a e 2760448 592 a -e 2760532 592 b -e 2760532 2760448 a +e 2760531 592 b +e 2760531 2760448 a e 2776768 592 a -e 2776852 592 b -e 2776852 2776768 a +e 2776851 592 b +e 2776851 2776768 a e 2787648 592 a -e 2787732 592 b -e 2787732 2787648 a +e 2787731 592 b +e 2787731 2787648 a e 2798720 592 a -e 2798804 592 b -e 2798804 2798720 a +e 2798803 592 b +e 2798803 2798720 a e 2804480 592 a -e 2804564 592 b -e 2804564 2804480 a +e 2804563 592 b +e 2804563 2804480 a e 2812880 592 ba e 2816768 2812880 a -e 2816852 2812880 b -e 2816852 2816768 a +e 2816851 2812880 b +e 2816851 2816768 a e 2828304 592 ba e 2830400 2828304 a -e 2830484 2828304 b -e 2830484 2830400 a -e 2834116 592 a +e 2830483 2828304 b +e 2830483 2830400 a +e 2834115 592 a e 2834496 592 a -e 2834564 2834496 a -e 2835396 592 a +e 2834563 2834496 a +e 2835395 592 a e 2836032 592 a -e 2836100 2836032 a -e 2836932 592 a +e 2836099 2836032 a +e 2836931 592 a e 2837568 592 a -e 2837636 2837568 a -e 2837698 2837568 a -e 2837764 2837698 a -e 2838468 592 a +e 2837635 2837568 a +e 2837697 2837568 a +e 2837763 2837697 a +e 2838467 592 a e 2839872 592 a -e 2839940 2839872 a -e 2840772 592 a +e 2839939 2839872 a +e 2840771 592 a e 2841408 592 a -e 2841476 2841408 a -e 2842372 592 a +e 2841475 2841408 a +e 2842371 592 a e 2843008 592 a -e 2843076 2843008 a -e 2843138 2843008 a -e 2843204 2843138 a -e 2843908 592 a +e 2843075 2843008 a +e 2843137 2843008 a +e 2843203 2843137 a +e 2843907 592 a e 2845312 592 a -e 2845380 2845312 a -e 2846468 592 a +e 2845379 2845312 a +e 2846467 592 a e 2847168 592 a -e 2847236 2847168 a -e 2848580 592 a +e 2847235 2847168 a +e 2848579 592 a e 2849216 592 a -e 2849284 2849216 a -e 2849346 2849216 a -e 2849412 2849346 a -e 2850244 592 a +e 2849283 2849216 a +e 2849345 2849216 a +e 2849411 2849345 a +e 2850243 592 a e 2853312 592 a -e 2853396 592 b -e 2853396 2853312 a +e 2853395 592 b +e 2853395 2853312 a e 2873216 592 a -e 2873300 592 b -e 2873300 2873216 a +e 2873299 592 b +e 2873299 2873216 a e 2883520 592 a -e 2883604 592 b -e 2883604 2883520 a +e 2883603 592 b +e 2883603 2883520 a e 2899264 592 a -e 2899348 592 b -e 2899348 2899264 a -e 2904908 592 b +e 2899347 592 b +e 2899347 2899264 a +e 2904907 592 b e 2904960 592 a -e 2905028 2904960 a -e 2905108 592 b -e 2905108 2904960 a -e 2908108 592 b -e 2908164 592 a +e 2905027 2904960 a +e 2905107 592 b +e 2905107 2904960 a +e 2908107 592 b +e 2908163 592 a e 2911744 592 a -e 2911828 592 b -e 2911828 2911744 a +e 2911827 592 b +e 2911827 2911744 a e 2932608 592 a -e 2932692 592 b -e 2932692 2932608 a +e 2932691 592 b +e 2932691 2932608 a e 2938432 592 a -e 2938516 592 b -e 2938516 2938432 a +e 2938515 592 b +e 2938515 2938432 a e 2960768 592 a -e 2960852 592 b -e 2960852 2960768 a +e 2960851 592 b +e 2960851 2960768 a e 2966400 592 a -e 2966484 592 b -e 2966484 2966400 a +e 2966483 592 b +e 2966483 2966400 a e 2972160 592 a -e 2972244 592 b -e 2972244 2972160 a -e 2975876 592 a +e 2972243 592 b +e 2972243 2972160 a +e 2975875 592 a e 2976256 592 a -e 2976324 2976256 a -e 2978692 592 a +e 2976323 2976256 a +e 2978691 592 a e 2979328 592 a -e 2979396 2979328 a -e 2985220 592 a +e 2979395 2979328 a +e 2985219 592 a e 2985856 592 a -e 2985924 2985856 a -e 2985986 2985856 a -e 2986052 2985986 a -e 2987524 592 a +e 2985923 2985856 a +e 2985985 2985856 a +e 2986051 2985985 a +e 2987523 592 a e 2992768 592 a -e 2992852 592 b -e 2992852 2992768 a +e 2992851 592 b +e 2992851 2992768 a e 3004864 592 a -e 3004948 592 b -e 3004948 3004864 a +e 3004947 592 b +e 3004947 3004864 a e 3011200 592 a -e 3011284 592 b -e 3011284 3011200 a +e 3011283 592 b +e 3011283 3011200 a e 3029760 592 a -e 3029844 592 b -e 3029844 3029760 a +e 3029843 592 b +e 3029843 3029760 a e 3035456 592 a -e 3035540 592 b -e 3035540 3035456 a +e 3035539 592 b +e 3035539 3035456 a e 3041216 592 a -e 3041300 592 b -e 3041300 3041216 a +e 3041299 592 b +e 3041299 3041216 a e 3047680 592 a -e 3047764 592 b -e 3047764 3047680 a +e 3047763 592 b +e 3047763 3047680 a e 3053888 592 a -e 3053972 592 b -e 3053972 3053888 a -e 3057476 592 a +e 3053971 592 b +e 3053971 3053888 a +e 3057475 592 a e 3057856 592 a -e 3057924 3057856 a -e 3058884 592 a +e 3057923 3057856 a +e 3058883 592 a e 3059520 592 a -e 3059588 3059520 a -e 3060484 592 a +e 3059587 3059520 a +e 3060483 592 a e 3061120 592 a -e 3061188 3061120 a -e 3061250 3061120 a -e 3061316 3061250 a -e 3062084 592 a +e 3061187 3061120 a +e 3061249 3061120 a +e 3061315 3061249 a +e 3062083 592 a e 3063552 592 a -e 3063620 3063552 a -e 3069380 592 a +e 3063619 3063552 a +e 3069379 592 a e 3070080 592 a -e 3070148 3070080 a -e 3086916 592 a +e 3070147 3070080 a +e 3086915 592 a e 3087552 592 a -e 3087620 3087552 a -e 3087682 3087552 a -e 3087748 3087682 a -e 3091716 592 a +e 3087619 3087552 a +e 3087681 3087552 a +e 3087747 3087681 a +e 3091715 592 a e 3096768 592 a -e 3096852 592 b -e 3096852 3096768 a +e 3096851 592 b +e 3096851 3096768 a e 3102400 592 a -e 3102484 592 b -e 3102484 3102400 a +e 3102483 592 b +e 3102483 3102400 a e 3113024 592 a -e 3113108 592 b -e 3113108 3113024 a +e 3113107 592 b +e 3113107 3113024 a e 3118912 592 a -e 3118996 592 b -e 3118996 3118912 a +e 3118995 592 b +e 3118995 3118912 a e 3124736 592 a -e 3124820 592 b -e 3124820 3124736 a +e 3124819 592 b +e 3124819 3124736 a e 3130560 592 a -e 3130644 592 b -e 3130644 3130560 a +e 3130643 592 b +e 3130643 3130560 a e 3142336 592 a -e 3142420 592 b -e 3142420 3142336 a +e 3142419 592 b +e 3142419 3142336 a e 3155008 592 a -e 3155092 592 b -e 3155092 3155008 a +e 3155091 592 b +e 3155091 3155008 a e 3166592 592 a -e 3166676 592 b -e 3166676 3166592 a +e 3166675 592 b +e 3166675 3166592 a e 3176704 592 a -e 3176788 592 b -e 3176788 3176704 a +e 3176787 592 b +e 3176787 3176704 a e 3182144 592 a -e 3182228 592 b -e 3182228 3182144 a +e 3182227 592 b +e 3182227 3182144 a e 3187776 592 a -e 3187860 592 b -e 3187860 3187776 a +e 3187859 592 b +e 3187859 3187776 a e 3198976 592 a -e 3199060 592 b -e 3199060 3198976 a +e 3199059 592 b +e 3199059 3198976 a e 3204544 592 a -e 3204628 592 b -e 3204628 3204544 a +e 3204627 592 b +e 3204627 3204544 a e 3220288 592 a -e 3220372 592 b -e 3220372 3220288 a +e 3220371 592 b +e 3220371 3220288 a e 3233600 592 a -e 3233684 592 b -e 3233684 3233600 a +e 3233683 592 b +e 3233683 3233600 a e 3239424 592 a -e 3239508 592 b -e 3239508 3239424 a +e 3239507 592 b +e 3239507 3239424 a e 3245952 592 a -e 3246036 592 b -e 3246036 3245952 a +e 3246035 592 b +e 3246035 3245952 a e 3257024 592 a -e 3257108 592 b -e 3257108 3257024 a +e 3257107 592 b +e 3257107 3257024 a e 3260688 592 ba e 3262848 3260688 a -e 3262932 3260688 b -e 3262932 3262848 a +e 3262931 3260688 b +e 3262931 3262848 a e 3268048 592 ba e 3269888 3268048 a -e 3269972 3268048 b -e 3269972 3269888 a +e 3269971 3268048 b +e 3269971 3269888 a e 3273872 592 ba -e 3277580 3273872 b -e 3277636 3273872 a +e 3277579 3273872 b +e 3277635 3273872 a e 3281856 592 a -e 3281940 592 b -e 3281940 3281856 a +e 3281939 592 b +e 3281939 3281856 a e 3307072 592 a -e 3307156 592 b -e 3307156 3307072 a +e 3307155 592 b +e 3307155 3307072 a e 3357696 592 a -e 3357780 592 b -e 3357780 3357696 a +e 3357779 592 b +e 3357779 3357696 a e 3364992 592 a -e 3365076 592 b -e 3365076 3364992 a +e 3365075 592 b +e 3365075 3364992 a e 3372416 592 a -e 3372500 592 b -e 3372500 3372416 a +e 3372499 592 b +e 3372499 3372416 a e 3377984 592 a -e 3378068 592 b -e 3378068 3377984 a +e 3378067 592 b +e 3378067 3377984 a e 3383680 592 a -e 3383764 592 b -e 3383764 3383680 a +e 3383763 592 b +e 3383763 3383680 a e 3389760 592 a -e 3389844 592 b -e 3389844 3389760 a +e 3389843 592 b +e 3389843 3389760 a e 3391424 3389760 a -e 3391508 3391368 b -e 3391508 3391424 a +e 3391507 3391368 b +e 3391507 3391424 a e 3391368 592 b -e 3394948 592 a +e 3394947 592 a e 3395072 592 a -e 3395140 3395072 a -e 3396548 592 a +e 3395139 3395072 a +e 3396547 592 a e 3397120 592 a -e 3397188 3397120 a -e 3399300 592 a +e 3397187 3397120 a +e 3399299 592 a e 3399936 592 a -e 3400004 3399936 a -e 3400066 3399936 a -e 3400132 3400066 a -e 3400964 592 a +e 3400003 3399936 a +e 3400065 3399936 a +e 3400131 3400065 a +e 3400963 592 a e 3404160 592 a -e 3404244 592 b -e 3404244 3404160 a +e 3404243 592 b +e 3404243 3404160 a e 3411264 592 a -e 3411348 592 b -e 3411348 3411264 a +e 3411347 592 b +e 3411347 3411264 a e 3412608 3411264 a -e 3412692 3412552 b -e 3412692 3412608 a +e 3412691 3412552 b +e 3412691 3412608 a e 3412552 592 b e 3418048 592 a -e 3418132 592 b -e 3418132 3418048 a +e 3418131 592 b +e 3418131 3418048 a e 3425088 592 a -e 3425172 592 b -e 3425172 3425088 a +e 3425171 592 b +e 3425171 3425088 a e 3427840 3425088 a -e 3427924 3427784 b -e 3427924 3427840 a +e 3427923 3427784 b +e 3427923 3427840 a e 3427784 592 b e 3434048 592 a -e 3434132 592 b -e 3434132 3434048 a +e 3434131 592 b +e 3434131 3434048 a e 3440576 592 a -e 3440660 592 b -e 3440660 3440576 a +e 3440659 592 b +e 3440659 3440576 a e 3452096 592 a -e 3452180 592 b -e 3452180 3452096 a +e 3452179 592 b +e 3452179 3452096 a e 3453952 3452096 a -e 3454036 3453896 b -e 3454036 3453952 a +e 3454035 3453896 b +e 3454035 3453952 a e 3453896 592 b e 3460928 592 a -e 3461012 592 b -e 3461012 3460928 a +e 3461011 592 b +e 3461011 3460928 a e 3463232 3460928 a -e 3463316 3463176 b -e 3463316 3463232 a +e 3463315 3463176 b +e 3463315 3463232 a e 3463176 592 b e 3468928 592 a -e 3469012 592 b -e 3469012 3468928 a +e 3469011 592 b +e 3469011 3468928 a e 3484480 592 a -e 3484564 592 b -e 3484564 3484480 a +e 3484563 592 b +e 3484563 3484480 a e 3485504 592 a -e 3485588 592 b -e 3485588 3485504 a +e 3485587 592 b +e 3485587 3485504 a e 3495744 592 a -e 3495828 592 b -e 3495828 3495744 a +e 3495827 592 b +e 3495827 3495744 a e 3502848 592 a -e 3502932 592 b -e 3502932 3502848 a +e 3502931 592 b +e 3502931 3502848 a e 3508608 592 a -e 3508692 592 b -e 3508692 3508608 a +e 3508691 592 b +e 3508691 3508608 a e 3513664 592 a -e 3513748 592 b -e 3513748 3513664 a +e 3513747 592 b +e 3513747 3513664 a e 3520256 592 a -e 3520340 592 b -e 3520340 3520256 a +e 3520339 592 b +e 3520339 3520256 a e 3521984 3520256 a -e 3522068 3521928 b -e 3522068 3521984 a -e 3522772 592 b -e 3522772 3520256 a +e 3522067 3521928 b +e 3522067 3521984 a +e 3522771 592 b +e 3522771 3520256 a e 3523648 3520256 a -e 3523732 3523592 b -e 3523732 3523648 a +e 3523731 3523592 b +e 3523731 3523648 a e 3521928 592 b e 3523592 592 b e 3529792 592 a -e 3529876 592 b -e 3529876 3529792 a +e 3529875 592 b +e 3529875 3529792 a e 3531136 3529792 a -e 3531220 3531080 b -e 3531220 3531136 a +e 3531219 3531080 b +e 3531219 3531136 a e 3531080 592 b e 3537088 592 a -e 3537172 592 b -e 3537172 3537088 a +e 3537171 592 b +e 3537171 3537088 a e 3544064 592 a -e 3544148 592 b -e 3544148 3544064 a +e 3544147 592 b +e 3544147 3544064 a e 3550720 592 a -e 3550804 592 b -e 3550804 3550720 a +e 3550803 592 b +e 3550803 3550720 a e 3558272 592 a -e 3558356 592 b -e 3558356 3558272 a +e 3558355 592 b +e 3558355 3558272 a e 3564032 592 a -e 3564116 592 b -e 3564116 3564032 a +e 3564115 592 b +e 3564115 3564032 a e 3569856 592 a -e 3569940 592 b -e 3569940 3569856 a +e 3569939 592 b +e 3569939 3569856 a e 3576128 592 a -e 3576212 592 b -e 3576212 3576128 a +e 3576211 592 b +e 3576211 3576128 a e 3581952 592 a -e 3582036 592 b -e 3582036 3581952 a +e 3582035 592 b +e 3582035 3581952 a e 3592960 592 a -e 3593044 592 b -e 3593044 3592960 a +e 3593043 592 b +e 3593043 3592960 a e 3598464 592 a -e 3598548 592 b -e 3598548 3598464 a +e 3598547 592 b +e 3598547 3598464 a e 3604352 592 a -e 3604436 592 b -e 3604436 3604352 a +e 3604435 592 b +e 3604435 3604352 a e 3605824 3604352 a -e 3605908 3605768 b -e 3605908 3605824 a +e 3605907 3605768 b +e 3605907 3605824 a e 3605768 592 b e 3612672 592 a -e 3612756 592 b -e 3612756 3612672 a +e 3612755 592 b +e 3612755 3612672 a e 3614528 3612672 a -e 3614612 3614472 b -e 3614612 3614528 a +e 3614611 3614472 b +e 3614611 3614528 a e 3614472 592 b e 3621056 592 a -e 3621140 592 b -e 3621140 3621056 a +e 3621139 592 b +e 3621139 3621056 a e 3622464 3621056 a -e 3622548 3622408 b -e 3622548 3622464 a +e 3622547 3622408 b +e 3622547 3622464 a e 3622408 592 b e 3628288 592 a -e 3628372 592 b -e 3628372 3628288 a +e 3628371 592 b +e 3628371 3628288 a e 3629248 3628288 a -e 3629332 3629192 b -e 3629332 3629248 a +e 3629331 3629192 b +e 3629331 3629248 a e 3629192 592 b e 3635264 592 a -e 3635348 592 b -e 3635348 3635264 a +e 3635347 592 b +e 3635347 3635264 a e 3637056 3635264 a -e 3637140 3637000 b -e 3637140 3637056 a +e 3637139 3637000 b +e 3637139 3637056 a e 3637000 592 b e 3642944 592 a -e 3643028 592 b -e 3643028 3642944 a +e 3643027 592 b +e 3643027 3642944 a e 3649792 592 a -e 3649876 592 b -e 3649876 3649792 a +e 3649875 592 b +e 3649875 3649792 a e 3651584 3649792 a -e 3651668 3651528 b -e 3651668 3651584 a +e 3651667 3651528 b +e 3651667 3651584 a e 3651528 592 b e 3656768 592 a -e 3656852 592 b -e 3656852 3656768 a +e 3656851 592 b +e 3656851 3656768 a e 3662720 592 a -e 3662804 592 b -e 3662804 3662720 a +e 3662803 592 b +e 3662803 3662720 a e 3664512 3662720 a -e 3664596 3664456 b -e 3664596 3664512 a +e 3664595 3664456 b +e 3664595 3664512 a e 3664456 592 b e 3668240 592 ba e 3669952 3668240 a -e 3670036 3668240 b -e 3670036 3669952 a -e 3673476 592 a +e 3670035 3668240 b +e 3670035 3669952 a +e 3673475 592 a e 3673792 592 a -e 3673860 3673792 a +e 3673859 3673792 a e 3674624 3673792 a -e 3674692 3674624 a -e 3675076 592 a +e 3674691 3674624 a +e 3675075 592 a e 3675584 592 a -e 3675652 3675584 a +e 3675651 3675584 a e 3676800 3675584 a -e 3676868 3676800 a -e 3677508 592 a +e 3676867 3676800 a +e 3677507 592 a e 3678144 592 a -e 3678212 3678144 a -e 3678274 3678144 a -e 3678340 3678274 a -e 3679108 592 a +e 3678211 3678144 a +e 3678273 3678144 a +e 3678339 3678273 a +e 3679107 592 a e 3684800 592 a -e 3684884 592 b -e 3684884 3684800 a +e 3684883 592 b +e 3684883 3684800 a e 3686080 3684800 a -e 3686164 3686024 b -e 3686164 3686080 a -e 3686868 592 b -e 3686868 3684800 a +e 3686163 3686024 b +e 3686163 3686080 a +e 3686867 592 b +e 3686867 3684800 a e 3687680 3684800 a -e 3687764 3687624 b -e 3687764 3687680 a -e 3688468 592 b -e 3688468 3684800 a +e 3687763 3687624 b +e 3687763 3687680 a +e 3688467 592 b +e 3688467 3684800 a e 3688896 3684800 a -e 3688980 3688840 b -e 3688980 3688896 a -e 3689620 592 b -e 3689620 3684800 a +e 3688979 3688840 b +e 3688979 3688896 a +e 3689619 592 b +e 3689619 3684800 a e 3690048 3684800 a -e 3690132 3689992 b -e 3690132 3690048 a +e 3690131 3689992 b +e 3690131 3690048 a e 3686024 592 b e 3687624 592 b e 3688840 592 b e 3689992 592 b e 3695680 592 a -e 3695764 592 b -e 3695764 3695680 a +e 3695763 592 b +e 3695763 3695680 a e 3701056 592 a -e 3701140 592 b -e 3701140 3701056 a +e 3701139 592 b +e 3701139 3701056 a e 3701952 3701056 a -e 3702036 3701896 b -e 3702036 3701952 a +e 3702035 3701896 b +e 3702035 3701952 a e 3701896 592 b e 3707136 592 a -e 3707220 592 b -e 3707220 3707136 a +e 3707219 592 b +e 3707219 3707136 a e 3708416 3707136 a -e 3708500 3708360 b -e 3708500 3708416 a +e 3708499 3708360 b +e 3708499 3708416 a e 3708360 592 b e 3713472 592 a -e 3713556 592 b -e 3713556 3713472 a +e 3713555 592 b +e 3713555 3713472 a e 3718720 592 a -e 3718804 592 b -e 3718804 3718720 a +e 3718803 592 b +e 3718803 3718720 a e 3720000 3718720 a -e 3720084 3719944 b -e 3720084 3720000 a +e 3720083 3719944 b +e 3720083 3720000 a e 3719944 592 b e 3725184 592 a -e 3725268 592 b -e 3725268 3725184 a +e 3725267 592 b +e 3725267 3725184 a e 3730368 592 a -e 3730452 592 b -e 3730452 3730368 a +e 3730451 592 b +e 3730451 3730368 a e 3735872 592 a -e 3735956 592 b -e 3735956 3735872 a +e 3735955 592 b +e 3735955 3735872 a e 3743488 592 a -e 3743572 592 b -e 3743572 3743488 a +e 3743571 592 b +e 3743571 3743488 a e 3745152 3743488 a -e 3745236 3745096 b -e 3745236 3745152 a +e 3745235 3745096 b +e 3745235 3745152 a e 3745096 592 b e 3750784 592 a -e 3750868 592 b -e 3750868 3750784 a +e 3750867 592 b +e 3750867 3750784 a e 3766720 592 a -e 3766804 592 b -e 3766804 3766720 a +e 3766803 592 b +e 3766803 3766720 a e 3782016 592 a -e 3782100 592 b -e 3782100 3782016 a +e 3782099 592 b +e 3782099 3782016 a e 3790272 592 a -e 3790356 592 b -e 3790356 3790272 a +e 3790355 592 b +e 3790355 3790272 a e 3799552 592 a -e 3799636 592 b -e 3799636 3799552 a +e 3799635 592 b +e 3799635 3799552 a e 3801280 3799552 a -e 3801364 3801224 b -e 3801364 3801280 a -e 3802068 592 b -e 3802068 3799552 a +e 3801363 3801224 b +e 3801363 3801280 a +e 3802067 592 b +e 3802067 3799552 a e 3802944 3799552 a -e 3803028 3802888 b -e 3803028 3802944 a -e 3803732 592 b -e 3803732 3799552 a +e 3803027 3802888 b +e 3803027 3802944 a +e 3803731 592 b +e 3803731 3799552 a e 3801224 592 b e 3802888 592 b e 3812800 592 a -e 3812884 592 b -e 3812884 3812800 a +e 3812883 592 b +e 3812883 3812800 a e 3822592 592 a -e 3822676 592 b -e 3822676 3822592 a +e 3822675 592 b +e 3822675 3822592 a e 3824320 3822592 a -e 3824404 3824264 b -e 3824404 3824320 a -e 3825108 592 b -e 3825108 3822592 a +e 3824403 3824264 b +e 3824403 3824320 a +e 3825107 592 b +e 3825107 3822592 a e 3825984 3822592 a -e 3826068 3825928 b -e 3826068 3825984 a -e 3826772 592 b -e 3826772 3822592 a +e 3826067 3825928 b +e 3826067 3825984 a +e 3826771 592 b +e 3826771 3822592 a e 3824264 592 b e 3825928 592 b e 3837632 592 a -e 3837716 592 b -e 3837716 3837632 a +e 3837715 592 b +e 3837715 3837632 a e 3838976 3837632 a -e 3839060 3838920 b -e 3839060 3838976 a +e 3839059 3838920 b +e 3839059 3838976 a e 3838920 592 b e 3845696 592 a -e 3845780 592 b -e 3845780 3845696 a +e 3845779 592 b +e 3845779 3845696 a e 3848128 3845696 a -e 3848212 3848072 b -e 3848212 3848128 a +e 3848211 3848072 b +e 3848211 3848128 a e 3848072 592 b e 3856832 592 a -e 3856916 592 b -e 3856916 3856832 a +e 3856915 592 b +e 3856915 3856832 a e 3858624 3856832 a -e 3858708 3858568 b -e 3858708 3858624 a -e 3859412 592 b -e 3859412 3856832 a +e 3858707 3858568 b +e 3858707 3858624 a +e 3859411 592 b +e 3859411 3856832 a e 3860288 3856832 a -e 3860372 3860232 b -e 3860372 3860288 a -e 3861076 592 b -e 3861076 3856832 a +e 3860371 3860232 b +e 3860371 3860288 a +e 3861075 592 b +e 3861075 3856832 a e 3861568 3856832 a -e 3861652 3861512 b -e 3861652 3861568 a -e 3862356 592 b -e 3862356 3856832 a +e 3861651 3861512 b +e 3861651 3861568 a +e 3862355 592 b +e 3862355 3856832 a e 3863616 3856832 a -e 3863700 3863560 b -e 3863700 3863616 a +e 3863699 3863560 b +e 3863699 3863616 a e 3858568 592 b e 3860232 592 b e 3861512 592 b e 3863560 592 b e 3869632 592 a -e 3869716 592 b -e 3869716 3869632 a +e 3869715 592 b +e 3869715 3869632 a e 3878720 592 a -e 3878804 592 b -e 3878804 3878720 a +e 3878803 592 b +e 3878803 3878720 a e 3880448 3878720 a -e 3880532 3880392 b -e 3880532 3880448 a -e 3881236 592 b -e 3881236 3878720 a +e 3880531 3880392 b +e 3880531 3880448 a +e 3881235 592 b +e 3881235 3878720 a e 3882112 3878720 a -e 3882196 3882056 b -e 3882196 3882112 a -e 3882900 592 b -e 3882900 3878720 a +e 3882195 3882056 b +e 3882195 3882112 a +e 3882899 592 b +e 3882899 3878720 a e 3883776 3878720 a -e 3883860 3883720 b -e 3883860 3883776 a +e 3883859 3883720 b +e 3883859 3883776 a e 3880392 592 b e 3882056 592 b e 3883720 592 b e 3893120 592 a -e 3893204 592 b -e 3893204 3893120 a +e 3893203 592 b +e 3893203 3893120 a e 3895680 3893120 a -e 3895764 3895624 b -e 3895764 3895680 a -e 3896468 592 b -e 3896468 3893120 a +e 3895763 3895624 b +e 3895763 3895680 a +e 3896467 592 b +e 3896467 3893120 a e 3897344 3893120 a -e 3897428 3897288 b -e 3897428 3897344 a -e 3898132 592 b -e 3898132 3893120 a +e 3897427 3897288 b +e 3897427 3897344 a +e 3898131 592 b +e 3898131 3893120 a e 3898624 3893120 a -e 3898708 3898568 b -e 3898708 3898624 a -e 3899412 592 b -e 3899412 3893120 a +e 3898707 3898568 b +e 3898707 3898624 a +e 3899411 592 b +e 3899411 3893120 a e 3900672 3893120 a -e 3900756 3900616 b -e 3900756 3900672 a +e 3900755 3900616 b +e 3900755 3900672 a e 3895624 592 b e 3897288 592 b e 3898568 592 b e 3900616 592 b e 3907648 592 a -e 3907732 592 b -e 3907732 3907648 a +e 3907731 592 b +e 3907731 3907648 a e 3918656 592 a -e 3918740 592 b -e 3918740 3918656 a +e 3918739 592 b +e 3918739 3918656 a e 3920384 3918656 a -e 3920468 3920328 b -e 3920468 3920384 a -e 3921172 592 b -e 3921172 3918656 a +e 3920467 3920328 b +e 3920467 3920384 a +e 3921171 592 b +e 3921171 3918656 a e 3922048 3918656 a -e 3922132 3921992 b -e 3922132 3922048 a -e 3922836 592 b -e 3922836 3918656 a +e 3922131 3921992 b +e 3922131 3922048 a +e 3922835 592 b +e 3922835 3918656 a e 3923712 3918656 a -e 3923796 3923656 b -e 3923796 3923712 a -e 3924500 592 b -e 3924500 3918656 a +e 3923795 3923656 b +e 3923795 3923712 a +e 3924499 592 b +e 3924499 3918656 a e 3925312 3918656 a -e 3925396 3925256 b -e 3925396 3925312 a +e 3925395 3925256 b +e 3925395 3925312 a e 3920328 592 b e 3921992 592 b e 3923656 592 b e 3925256 592 b e 3931520 592 a -e 3931604 592 b -e 3931604 3931520 a +e 3931603 592 b +e 3931603 3931520 a e 3937920 592 a -e 3938004 592 b -e 3938004 3937920 a +e 3938003 592 b +e 3938003 3937920 a e 3939328 3937920 a -e 3939412 3939272 b -e 3939412 3939328 a +e 3939411 3939272 b +e 3939411 3939328 a e 3939272 592 b e 3946240 592 a -e 3946324 592 b -e 3946324 3946240 a +e 3946323 592 b +e 3946323 3946240 a e 3947520 3946240 a -e 3947604 3947464 b -e 3947604 3947520 a -e 3948244 592 b -e 3948244 3946240 a +e 3947603 3947464 b +e 3947603 3947520 a +e 3948243 592 b +e 3948243 3946240 a e 3949056 3946240 a -e 3949140 3949000 b -e 3949140 3949056 a -e 3949780 592 b -e 3949780 3946240 a +e 3949139 3949000 b +e 3949139 3949056 a +e 3949779 592 b +e 3949779 3946240 a e 3950592 3946240 a -e 3950676 3950536 b -e 3950676 3950592 a +e 3950675 3950536 b +e 3950675 3950592 a e 3947464 592 b e 3949000 592 b e 3950536 592 b e 3956224 592 a -e 3956308 592 b -e 3956308 3956224 a +e 3956307 592 b +e 3956307 3956224 a e 3962496 592 a -e 3962580 592 b -e 3962580 3962496 a +e 3962579 592 b +e 3962579 3962496 a e 3963968 3962496 a -e 3964052 3963912 b -e 3964052 3963968 a -e 3964756 592 b -e 3964756 3962496 a +e 3964051 3963912 b +e 3964051 3963968 a +e 3964755 592 b +e 3964755 3962496 a e 3965696 3962496 a -e 3965780 3965640 b -e 3965780 3965696 a +e 3965779 3965640 b +e 3965779 3965696 a e 3963912 592 b e 3965640 592 b e 3971328 592 a -e 3971412 592 b -e 3971412 3971328 a +e 3971411 592 b +e 3971411 3971328 a e 3978304 592 a -e 3978388 592 b -e 3978388 3978304 a +e 3978387 592 b +e 3978387 3978304 a e 3981120 3978304 a -e 3981204 3981064 b -e 3981204 3981120 a +e 3981203 3981064 b +e 3981203 3981120 a e 3981064 592 b e 3988608 592 a -e 3988692 592 b -e 3988692 3988608 a +e 3988691 592 b +e 3988691 3988608 a e 4001344 592 a -e 4001428 592 b -e 4001428 4001344 a +e 4001427 592 b +e 4001427 4001344 a e 4006272 592 a -e 4006356 592 b -e 4006356 4006272 a +e 4006355 592 b +e 4006355 4006272 a e 4012672 592 a -e 4012756 592 b -e 4012756 4012672 a +e 4012755 592 b +e 4012755 4012672 a e 4026560 592 a -e 4026644 592 b -e 4026644 4026560 a +e 4026643 592 b +e 4026643 4026560 a e 4030160 592 ba e 4032192 4030160 a -e 4032276 4030160 b -e 4032276 4032192 a +e 4032275 4030160 b +e 4032275 4032192 a e 4038464 592 a -e 4038548 592 b -e 4038548 4038464 a +e 4038547 592 b +e 4038547 4038464 a e 4043776 592 a -e 4043860 592 b -e 4043860 4043776 a +e 4043859 592 b +e 4043859 4043776 a e 4047824 592 ba e 4049856 4047824 a -e 4049940 4047824 b -e 4049940 4049856 a +e 4049939 4047824 b +e 4049939 4049856 a e 4054032 592 ba e 4056192 4054032 a -e 4056276 4054032 b -e 4056276 4056192 a +e 4056275 4054032 b +e 4056275 4056192 a e 4062144 592 a -e 4062228 592 b -e 4062228 4062144 a +e 4062227 592 b +e 4062227 4062144 a e 4068160 592 a -e 4068244 592 b -e 4068244 4068160 a +e 4068243 592 b +e 4068243 4068160 a e 4074816 592 a -e 4074900 592 b -e 4074900 4074816 a +e 4074899 592 b +e 4074899 4074816 a e 4082240 592 a -e 4082324 592 b -e 4082324 4082240 a +e 4082323 592 b +e 4082323 4082240 a e 4083904 4082240 a -e 4083988 4083848 b -e 4083988 4083904 a -e 4084692 592 b -e 4084692 4082240 a +e 4083987 4083848 b +e 4083987 4083904 a +e 4084691 592 b +e 4084691 4082240 a e 4085120 4082240 a -e 4085204 4085064 b -e 4085204 4085120 a +e 4085203 4085064 b +e 4085203 4085120 a e 4083848 592 b e 4085064 592 b e 4090176 592 a -e 4090260 592 b -e 4090260 4090176 a +e 4090259 592 b +e 4090259 4090176 a e 4095104 592 a -e 4095188 592 b -e 4095188 4095104 a +e 4095187 592 b +e 4095187 4095104 a e 4096768 4095104 a -e 4096852 4096712 b -e 4096852 4096768 a +e 4096851 4096712 b +e 4096851 4096768 a e 4096712 592 b e 4102272 592 a -e 4102356 592 b -e 4102356 4102272 a +e 4102355 592 b +e 4102355 4102272 a e 4137168 592 ba e 4139264 4137168 a -e 4139348 4137168 b -e 4139348 4139264 a +e 4139347 4137168 b +e 4139347 4139264 a e 4145280 592 a -e 4145364 592 b -e 4145364 4145280 a +e 4145363 592 b +e 4145363 4145280 a e 4153088 592 a -e 4153172 592 b -e 4153172 4153088 a +e 4153171 592 b +e 4153171 4153088 a e 4154368 4153088 a -e 4154452 4154312 b -e 4154452 4154368 a -e 4155156 592 b -e 4155156 4153088 a +e 4154451 4154312 b +e 4154451 4154368 a +e 4155155 592 b +e 4155155 4153088 a e 4155648 4153088 a -e 4155732 4155592 b -e 4155732 4155648 a -e 4156436 592 b -e 4156436 4153088 a +e 4155731 4155592 b +e 4155731 4155648 a +e 4156435 592 b +e 4156435 4153088 a e 4157248 4153088 a -e 4157332 4157192 b -e 4157332 4157248 a -e 4158036 592 b -e 4158036 4153088 a +e 4157331 4157192 b +e 4157331 4157248 a +e 4158035 592 b +e 4158035 4153088 a e 4158848 4153088 a -e 4158932 4158792 b -e 4158932 4158848 a +e 4158931 4158792 b +e 4158931 4158848 a e 4154312 592 b e 4155592 592 b e 4157192 592 b e 4158792 592 b e 4166336 592 a -e 4166420 592 b -e 4166420 4166336 a +e 4166419 592 b +e 4166419 4166336 a e 4168064 4166336 a -e 4168148 4168008 b -e 4168148 4168064 a -e 4168852 592 b -e 4168852 4166336 a +e 4168147 4168008 b +e 4168147 4168064 a +e 4168851 592 b +e 4168851 4166336 a e 4169728 4166336 a -e 4169812 4169672 b -e 4169812 4169728 a -e 4170516 592 b -e 4170516 4166336 a +e 4169811 4169672 b +e 4169811 4169728 a +e 4170515 592 b +e 4170515 4166336 a e 4171392 4166336 a -e 4171476 4171336 b -e 4171476 4171392 a +e 4171475 4171336 b +e 4171475 4171392 a e 4168008 592 b e 4169672 592 b e 4171336 592 b e 4177088 592 a -e 4177172 592 b -e 4177172 4177088 a +e 4177171 592 b +e 4177171 4177088 a e 4182784 592 a -e 4182868 592 b -e 4182868 4182784 a +e 4182867 592 b +e 4182867 4182784 a e 4188992 592 a -e 4189076 592 b -e 4189076 4188992 a -e 4192204 592 b -e 4192260 592 a -e 4195724 592 b -e 4195780 592 a -e 4196492 592 b -e 4196548 592 a +e 4189075 592 b +e 4189075 4188992 a +e 4192203 592 b +e 4192259 592 a +e 4195723 592 b +e 4195779 592 a +e 4196491 592 b +e 4196547 592 a e 4213520 592 ba e 4215616 4213520 a -e 4215700 4213520 b -e 4215700 4215616 a +e 4215699 4213520 b +e 4215699 4215616 a e 4227280 592 ba e 4229248 4227280 a -e 4229332 4227280 b -e 4229332 4229248 a +e 4229331 4227280 b +e 4229331 4229248 a e 4232912 592 ba e 4234880 4232912 a -e 4234964 4232912 b -e 4234964 4234880 a +e 4234963 4232912 b +e 4234963 4234880 a e 4240192 592 a -e 4240276 592 b -e 4240276 4240192 a +e 4240275 592 b +e 4240275 4240192 a e 4245504 592 a -e 4245588 592 b -e 4245588 4245504 a +e 4245587 592 b +e 4245587 4245504 a e 4255232 592 a -e 4255316 592 b -e 4255316 4255232 a +e 4255315 592 b +e 4255315 4255232 a e 4260096 4255232 a -e 4260180 4260040 b -e 4260180 4260096 a -e 4260820 592 b -e 4260820 4255232 a +e 4260179 4260040 b +e 4260179 4260096 a +e 4260819 592 b +e 4260819 4255232 a e 4260040 592 b e 4268864 592 a -e 4268948 592 b -e 4268948 4268864 a +e 4268947 592 b +e 4268947 4268864 a e 4279808 592 a -e 4279892 592 b -e 4279892 4279808 a +e 4279891 592 b +e 4279891 4279808 a e 4281088 4279808 a -e 4281172 4281032 b -e 4281172 4281088 a -e 4281812 592 b -e 4281812 4279808 a +e 4281171 4281032 b +e 4281171 4281088 a +e 4281811 592 b +e 4281811 4279808 a e 4282752 4279808 a -e 4282836 4282696 b -e 4282836 4282752 a +e 4282835 4282696 b +e 4282835 4282752 a e 4281032 592 b e 4282696 592 b e 4288640 592 a -e 4288724 592 b -e 4288724 4288640 a +e 4288723 592 b +e 4288723 4288640 a e 4294592 592 a -e 4294676 592 b -e 4294676 4294592 a +e 4294675 592 b +e 4294675 4294592 a e 4296320 4294592 a -e 4296404 4296264 b -e 4296404 4296320 a +e 4296403 4296264 b +e 4296403 4296320 a e 4296264 592 b e 4302848 592 a -e 4302932 592 b -e 4302932 4302848 a +e 4302931 592 b +e 4302931 4302848 a e 4304256 4302848 a -e 4304340 4304200 b -e 4304340 4304256 a -e 4305044 592 b -e 4305044 4302848 a +e 4304339 4304200 b +e 4304339 4304256 a +e 4305043 592 b +e 4305043 4302848 a e 4305984 4302848 a -e 4306068 4305928 b -e 4306068 4305984 a +e 4306067 4305928 b +e 4306067 4305984 a e 4304200 592 b e 4305928 592 b e 4312192 592 a -e 4312276 592 b -e 4312276 4312192 a +e 4312275 592 b +e 4312275 4312192 a e 4313536 4312192 a -e 4313620 4313480 b -e 4313620 4313536 a +e 4313619 4313480 b +e 4313619 4313536 a e 4313480 592 b e 4319360 592 a -e 4319444 592 b -e 4319444 4319360 a +e 4319443 592 b +e 4319443 4319360 a e 4326464 592 a -e 4326548 592 b -e 4326548 4326464 a +e 4326547 592 b +e 4326547 4326464 a e 4331408 592 ba e 4333248 4331408 a -e 4333332 4331408 b -e 4333332 4333248 a +e 4333331 4331408 b +e 4333331 4333248 a e 4337168 592 ba e 4339328 4337168 a -e 4339412 4337168 b -e 4339412 4339328 a +e 4339411 4337168 b +e 4339411 4339328 a e 4344336 592 ba e 4346240 4344336 a -e 4346324 4344336 b -e 4346324 4346240 a +e 4346323 4344336 b +e 4346323 4346240 a e 4350288 592 ba e 4353792 4350288 a -e 4353876 4350288 b -e 4353876 4353792 a +e 4353875 4350288 b +e 4353875 4353792 a e 4356800 4353792 a -e 4356884 4356744 b -e 4356884 4356800 a +e 4356883 4356744 b +e 4356883 4356800 a e 4356744 4350288 b e 4360720 592 ba e 4362816 4360720 a -e 4362900 4360720 b -e 4362900 4362816 a +e 4362899 4360720 b +e 4362899 4362816 a e 4367696 592 ba e 4368080 4367696 ba -e 4368140 4368080 b -e 4368196 4368080 a -e 4372364 4367696 b -e 4372996 4367696 a +e 4368139 4368080 b +e 4368195 4368080 a +e 4372363 4367696 b +e 4372995 4367696 a e 4374416 592 ba e 4376256 4374416 a -e 4376340 4374416 b -e 4376340 4376256 a +e 4376339 4374416 b +e 4376339 4376256 a e 4384784 592 ba e 4386624 4384784 a -e 4386708 4384784 b -e 4386708 4386624 a +e 4386707 4384784 b +e 4386707 4386624 a e 4390224 592 ba e 4391936 4390224 a -e 4392020 4390224 b -e 4392020 4391936 a +e 4392019 4390224 b +e 4392019 4391936 a e 4395408 592 ba e 4398080 4395408 a -e 4398164 4395408 b -e 4398164 4398080 a +e 4398163 4395408 b +e 4398163 4398080 a e 4399808 4398080 a -e 4399892 4399752 b -e 4399892 4399808 a +e 4399891 4399752 b +e 4399891 4399808 a e 4399752 4395408 b e 4403408 592 ba e 4403792 4403408 ba -e 4403916 4403792 b -e 4404036 4403792 a -e 4404236 4403792 b -e 4404292 4403792 a +e 4403915 4403792 b +e 4404035 4403792 a +e 4404235 4403792 b +e 4404291 4403792 a e 4405568 4403408 a -e 4405652 4403408 b -e 4405652 4405568 a -e 4406532 4405568 a -e 4406612 4403408 b -e 4406612 4405568 a -e 4406724 4405568 a -e 4406804 4403408 b -e 4406804 4405568 a -e 4406476 4403408 b -e 4406668 4403408 b -e 4408844 4403408 b -e 4409092 4403408 a +e 4405651 4403408 b +e 4405651 4405568 a +e 4406531 4405568 a +e 4406611 4403408 b +e 4406611 4405568 a +e 4406723 4405568 a +e 4406803 4403408 b +e 4406803 4405568 a +e 4406475 4403408 b +e 4406667 4403408 b +e 4408843 4403408 b +e 4409091 4403408 a e 4407696 4403408 ba -e 4408140 4407696 b -e 4408196 4407696 a +e 4408139 4407696 b +e 4408195 4407696 a e 4410192 592 ba e 4412288 4410192 a -e 4412372 4410192 b -e 4412372 4412288 a +e 4412371 4410192 b +e 4412371 4412288 a e 4416464 592 ba e 4419648 4416464 a -e 4419732 4416464 b -e 4419732 4419648 a +e 4419731 4416464 b +e 4419731 4419648 a e 4420992 4419648 a -e 4421076 4420936 b -e 4421076 4420992 a -e 4421780 4416464 b -e 4421780 4419648 a +e 4421075 4420936 b +e 4421075 4420992 a +e 4421779 4416464 b +e 4421779 4419648 a e 4422656 4419648 a -e 4422740 4422600 b -e 4422740 4422656 a +e 4422739 4422600 b +e 4422739 4422656 a e 4420936 4416464 b e 4422600 4416464 b e 4426448 592 ba e 4428864 4426448 a -e 4428948 4426448 b -e 4428948 4428864 a +e 4428947 4426448 b +e 4428947 4428864 a e 4438160 592 ba e 4440000 4438160 a -e 4440084 4438160 b -e 4440084 4440000 a +e 4440083 4438160 b +e 4440083 4440000 a e 4443600 592 ba e 4446272 4443600 a -e 4446356 4443600 b -e 4446356 4446272 a +e 4446355 4443600 b +e 4446355 4446272 a e 4448000 4446272 a -e 4448084 4447944 b -e 4448084 4448000 a +e 4448083 4447944 b +e 4448083 4448000 a e 4447944 4443600 b e 4451600 592 ba e 4453376 4451600 a -e 4453460 4451600 b -e 4453460 4453376 a +e 4453459 4451600 b +e 4453459 4453376 a e 4456976 592 ba e 4459072 4456976 a -e 4459156 4456976 b -e 4459156 4459072 a +e 4459155 4456976 b +e 4459155 4459072 a e 4463248 592 ba e 4466432 4463248 a -e 4466516 4463248 b -e 4466516 4466432 a +e 4466515 4463248 b +e 4466515 4466432 a e 4467776 4466432 a -e 4467860 4467720 b -e 4467860 4467776 a -e 4468564 4463248 b -e 4468564 4466432 a +e 4467859 4467720 b +e 4467859 4467776 a +e 4468563 4463248 b +e 4468563 4466432 a e 4469440 4466432 a -e 4469524 4469384 b -e 4469524 4469440 a +e 4469523 4469384 b +e 4469523 4469440 a e 4467720 4463248 b e 4469384 4463248 b e 4473232 592 ba e 4475648 4473232 a -e 4475732 4473232 b -e 4475732 4475648 a +e 4475731 4473232 b +e 4475731 4475648 a e 4480272 592 ba e 4484800 4480272 a -e 4484884 4480272 b -e 4484884 4484800 a +e 4484883 4480272 b +e 4484883 4484800 a e 4489344 4484800 a -e 4489428 4489288 b -e 4489428 4489344 a +e 4489427 4489288 b +e 4489427 4489344 a e 4489288 4480272 b e 4493648 592 ba e 4494032 4493648 ba -e 4494156 4494032 b -e 4494852 4494032 a +e 4494155 4494032 b +e 4494851 4494032 a e 4497472 4493648 a -e 4497556 4493648 b -e 4497556 4497472 a -e 4498052 4497472 a -e 4498132 4493648 b -e 4498132 4497472 a -e 4497996 4493648 b -e 4504716 4493648 b -e 4505540 4493648 a +e 4497555 4493648 b +e 4497555 4497472 a +e 4498051 4497472 a +e 4498131 4493648 b +e 4498131 4497472 a +e 4497995 4493648 b +e 4504715 4493648 b +e 4505539 4493648 a e 4507216 592 ba e 4509184 4507216 a -e 4509268 4507216 b -e 4509268 4509184 a +e 4509267 4507216 b +e 4509267 4509184 a e 4513296 592 ba e 4516480 4513296 a -e 4516564 4513296 b -e 4516564 4516480 a +e 4516563 4513296 b +e 4516563 4516480 a e 4518592 4516480 a -e 4518676 4518536 b -e 4518676 4518592 a +e 4518675 4518536 b +e 4518675 4518592 a e 4518536 4513296 b e 4522384 592 ba e 4526720 4522384 a -e 4526804 4522384 b -e 4526804 4526720 a +e 4526803 4522384 b +e 4526803 4526720 a e 4528896 4526720 a -e 4528980 4528840 b -e 4528980 4528896 a -e 4529684 4522384 b -e 4529684 4526720 a +e 4528979 4528840 b +e 4528979 4528896 a +e 4529683 4522384 b +e 4529683 4526720 a e 4530560 4526720 a -e 4530644 4530504 b -e 4530644 4530560 a -e 4531348 4522384 b -e 4531348 4526720 a +e 4530643 4530504 b +e 4530643 4530560 a +e 4531347 4522384 b +e 4531347 4526720 a e 4528840 4522384 b e 4530504 4522384 b e 4536016 592 ba e 4537792 4536016 a -e 4537876 4536016 b -e 4537876 4537792 a +e 4537875 4536016 b +e 4537875 4537792 a e 4541392 592 ba e 4543616 4541392 a -e 4543700 4541392 b -e 4543700 4543616 a +e 4543699 4541392 b +e 4543699 4543616 a e 4548304 592 ba e 4551488 4548304 a -e 4551572 4548304 b -e 4551572 4551488 a +e 4551571 4548304 b +e 4551571 4551488 a e 4552832 4551488 a -e 4552916 4552776 b -e 4552916 4552832 a -e 4553620 4548304 b -e 4553620 4551488 a +e 4552915 4552776 b +e 4552915 4552832 a +e 4553619 4548304 b +e 4553619 4551488 a e 4554496 4551488 a -e 4554580 4554440 b -e 4554580 4554496 a +e 4554579 4554440 b +e 4554579 4554496 a e 4552776 4548304 b e 4554440 4548304 b e 4558288 592 ba e 4560704 4558288 a -e 4560788 4558288 b -e 4560788 4560704 a +e 4560787 4558288 b +e 4560787 4560704 a e 4565328 592 ba e 4569152 4565328 a -e 4569236 4565328 b -e 4569236 4569152 a +e 4569235 4565328 b +e 4569235 4569152 a e 4570560 4569152 a -e 4570644 4570504 b -e 4570644 4570560 a -e 4571348 4565328 b -e 4571348 4569152 a +e 4570643 4570504 b +e 4570643 4570560 a +e 4571347 4565328 b +e 4571347 4569152 a e 4572288 4569152 a -e 4572372 4572232 b -e 4572372 4572288 a -e 4573076 4565328 b -e 4573076 4569152 a +e 4572371 4572232 b +e 4572371 4572288 a +e 4573075 4565328 b +e 4573075 4569152 a e 4573952 4569152 a -e 4574036 4573896 b -e 4574036 4573952 a -e 4574740 4565328 b -e 4574740 4569152 a +e 4574035 4573896 b +e 4574035 4573952 a +e 4574739 4565328 b +e 4574739 4569152 a e 4570504 4565328 b e 4572232 4565328 b e 4573896 4565328 b e 4578640 592 ba e 4583168 4578640 a -e 4583252 4578640 b -e 4583252 4583168 a +e 4583251 4578640 b +e 4583251 4583168 a e 4587840 4583168 a -e 4587924 4587784 b -e 4587924 4587840 a +e 4587923 4587784 b +e 4587923 4587840 a e 4587784 4578640 b e 4592208 592 ba e 4594880 4592208 a -e 4594964 4592208 b -e 4594964 4594880 a +e 4594963 4592208 b +e 4594963 4594880 a e 4601616 592 ba e 4603392 4601616 a -e 4603476 4601616 b -e 4603476 4603392 a +e 4603475 4601616 b +e 4603475 4603392 a e 4611216 592 ba e 4613184 4611216 a -e 4613268 4611216 b -e 4613268 4613184 a +e 4613267 4611216 b +e 4613267 4613184 a e 4617296 592 ba e 4619136 4617296 a -e 4619220 4617296 b -e 4619220 4619136 a +e 4619219 4617296 b +e 4619219 4619136 a e 4622736 592 ba e 4625472 4622736 a -e 4625556 4622736 b -e 4625556 4625472 a +e 4625555 4622736 b +e 4625555 4625472 a e 4632784 592 ba e 4634880 4632784 a -e 4634964 4632784 b -e 4634964 4634880 a +e 4634963 4632784 b +e 4634963 4634880 a e 4639120 592 ba e 4641024 4639120 a -e 4641108 4639120 b -e 4641108 4641024 a +e 4641107 4639120 b +e 4641107 4641024 a e 4644560 592 ba e 4646592 4644560 a -e 4646676 4644560 b -e 4646676 4646592 a +e 4646675 4644560 b +e 4646675 4646592 a e 4651152 592 ba e 4657344 4651152 a -e 4657428 4651152 b -e 4657428 4657344 a +e 4657427 4651152 b +e 4657427 4657344 a e 4658688 4657344 a -e 4658772 4658632 b -e 4658772 4658688 a -e 4659476 4651152 b -e 4659476 4657344 a +e 4658771 4658632 b +e 4658771 4658688 a +e 4659475 4651152 b +e 4659475 4657344 a e 4659904 4657344 a -e 4659988 4659848 b -e 4659988 4659904 a -e 4660628 4651152 b -e 4660628 4657344 a +e 4659987 4659848 b +e 4659987 4659904 a +e 4660627 4651152 b +e 4660627 4657344 a e 4661056 4657344 a -e 4661140 4661000 b -e 4661140 4661056 a -e 4661780 4651152 b -e 4661780 4657344 a +e 4661139 4661000 b +e 4661139 4661056 a +e 4661779 4651152 b +e 4661779 4657344 a e 4662656 4657344 a -e 4662740 4662600 b -e 4662740 4662656 a -e 4663444 4651152 b -e 4663444 4657344 a +e 4662739 4662600 b +e 4662739 4662656 a +e 4663443 4651152 b +e 4663443 4657344 a e 4663872 4657344 a -e 4663956 4663816 b -e 4663956 4663872 a +e 4663955 4663816 b +e 4663955 4663872 a e 4658632 4651152 b e 4659848 4651152 b e 4661000 4651152 b @@ -4727,31 +4727,31 @@ e 4662600 4651152 b e 4663816 4651152 b e 4667856 592 ba e 4674048 4667856 a -e 4674132 4667856 b -e 4674132 4674048 a +e 4674131 4667856 b +e 4674131 4674048 a e 4675392 4674048 a -e 4675476 4675336 b -e 4675476 4675392 a -e 4676180 4667856 b -e 4676180 4674048 a +e 4675475 4675336 b +e 4675475 4675392 a +e 4676179 4667856 b +e 4676179 4674048 a e 4676608 4674048 a -e 4676692 4676552 b -e 4676692 4676608 a -e 4677332 4667856 b -e 4677332 4674048 a +e 4676691 4676552 b +e 4676691 4676608 a +e 4677331 4667856 b +e 4677331 4674048 a e 4677824 4674048 a -e 4677908 4677768 b -e 4677908 4677824 a -e 4678612 4667856 b -e 4678612 4674048 a +e 4677907 4677768 b +e 4677907 4677824 a +e 4678611 4667856 b +e 4678611 4674048 a e 4679488 4674048 a -e 4679572 4679432 b -e 4679572 4679488 a -e 4680276 4667856 b -e 4680276 4674048 a +e 4679571 4679432 b +e 4679571 4679488 a +e 4680275 4667856 b +e 4680275 4674048 a e 4680704 4674048 a -e 4680788 4680648 b -e 4680788 4680704 a +e 4680787 4680648 b +e 4680787 4680704 a e 4675336 4667856 b e 4676552 4667856 b e 4677768 4667856 b @@ -4759,55 +4759,55 @@ e 4679432 4667856 b e 4680648 4667856 b e 4684752 592 ba e 4686784 4684752 a -e 4686868 4684752 b -e 4686868 4686784 a +e 4686867 4684752 b +e 4686867 4686784 a e 4696128 592 a -e 4696212 592 b -e 4696212 4696128 a +e 4696211 592 b +e 4696211 4696128 a e 4699008 4696128 a -e 4699092 4698952 b -e 4699092 4699008 a -e 4699796 592 b -e 4699796 4696128 a +e 4699091 4698952 b +e 4699091 4699008 a +e 4699795 592 b +e 4699795 4696128 a e 4700288 4696128 a -e 4700372 4700232 b -e 4700372 4700288 a -e 4701076 592 b -e 4701076 4696128 a +e 4700371 4700232 b +e 4700371 4700288 a +e 4701075 592 b +e 4701075 4696128 a e 4701568 4696128 a -e 4701652 4701512 b -e 4701652 4701568 a +e 4701651 4701512 b +e 4701651 4701568 a e 4698952 592 b e 4700232 592 b e 4701512 592 b e 4708352 592 a -e 4708436 592 b -e 4708436 4708352 a +e 4708435 592 b +e 4708435 4708352 a e 4709760 4708352 a -e 4709844 4709704 b -e 4709844 4709760 a +e 4709843 4709704 b +e 4709843 4709760 a e 4709704 592 b e 4716160 592 a -e 4716244 592 b -e 4716244 4716160 a +e 4716243 592 b +e 4716243 4716160 a e 4717568 4716160 a -e 4717652 4717512 b -e 4717652 4717568 a +e 4717651 4717512 b +e 4717651 4717568 a e 4717512 592 b e 4723712 592 a -e 4723796 592 b -e 4723796 4723712 a +e 4723795 592 b +e 4723795 4723712 a e 4724992 4723712 a -e 4725076 4724936 b -e 4725076 4724992 a +e 4725075 4724936 b +e 4725075 4724992 a e 4724936 592 b e 4728528 592 ba e 4730496 4728528 a -e 4730580 4728528 b -e 4730580 4730496 a +e 4730579 4728528 b +e 4730579 4730496 a e 4734928 592 ba e 4736896 4734928 a -e 4736980 4734928 b -e 4736980 4736896 a +e 4736979 4734928 b +e 4736979 4736896 a diff --git a/src/test/resources/multilinemacros/test/some.lg b/src/test/resources/multilinemacros/test/some.lg index 6eccb7cc6..98a859634 100644 --- a/src/test/resources/multilinemacros/test/some.lg +++ b/src/test/resources/multilinemacros/test/some.lg @@ -1,699 +1,699 @@ t # Marlin/example_configurations/RigidBot/Configuration.h$$$4502ad348701b87b01aece49ce1830219e3ac665 -v 2 NON_ROOT -v 131074 NON_CODE -v 3080194 NON_CODE -v 4915202 NON_CODE -v 14614530 NON_CODE -v 16973826 NON_CODE -v 20840450 NON_CODE -v 25296897 REM_CODE +v 1 NON_ROOT +v 131073 NON_CODE +v 3080193 NON_CODE +v 4915201 NON_CODE +v 14614529 NON_CODE +v 16973825 NON_CODE +v 20840449 NON_CODE +v 25296896 REM_CODE v 25493504 ADD_CODE -v 25755650 NON_CODE -v 26279938 NON_CODE -v 26607618 NON_CODE -v 27131906 NON_CODE -v 27394050 NON_CODE -v 27983874 NON_CODE -v 28704770 NON_CODE -v 29818882 NON_CODE -v 30670850 NON_CODE -v 31391746 NON_CODE -v 33554434 NON_CODE -v 33882114 NON_CODE -v 34996226 NON_CODE -v 35586050 NON_CODE -v 35979266 NON_CODE -v 38273026 NON_CODE -v 38666242 NON_CODE -v 39387138 NON_CODE -v 39649282 NON_CODE -v 51970050 NON_CODE -v 52363266 NON_CODE -v 65538 NON_IF -v 2686978 NON_IF -v 4653058 NON_IF -v 12976130 NON_IF -v 16187394 NON_IF -v 20119554 NON_IF -v 26214402 NON_IF -v 27066370 NON_IF -v 27328514 NON_IF -v 28573698 NON_IF -v 29687810 NON_IF -v 30539778 NON_ELSE -v 33423362 NON_IF -v 35520514 NON_IF -v 38141954 NON_IF -v 38207490 NON_IF -v 39321602 NON_IF -v 51904514 NON_IF -e 131074 65538 ba -e 3080194 65538 ba -e 4915202 65538 ba -e 14614530 65538 ba -e 16973826 65538 ba -e 20840450 65538 ba -e 25296897 65538 b -e 25493504 65538 a -e 25755650 65538 ba -e 26279938 26214402 ba -e 26607618 65538 ba -e 27131906 27066370 ba -e 27394050 27328514 ba -e 27983874 65538 ba -e 28704770 28573698 ba -e 29818882 29687810 ba -e 30670850 30539778 ba -e 31391746 28573698 ba -e 33554434 33423362 ba -e 33882114 28573698 ba -e 34996226 65538 ba -e 35586050 35520514 ba -e 35979266 65538 ba -e 38273026 38207490 ba -e 38666242 65538 ba -e 39387138 39321602 ba -e 39649282 65538 ba -e 51970050 51904514 ba -e 52363266 65538 ba -e 65538 2 ba -e 2686978 65538 ba -e 4653058 65538 ba -e 12976130 65538 ba -e 16187394 65538 ba -e 20119554 65538 ba -e 26214402 65538 ba -e 27066370 65538 ba -e 27328514 65538 ba -e 28573698 65538 ba -e 29687810 28573698 ba -e 30539778 29687810 ba -e 33423362 28573698 ba -e 35520514 65538 ba -e 38141954 65538 ba -e 38207490 38141954 ba -e 39321602 65538 ba -e 51904514 65538 ba +v 25755649 NON_CODE +v 26279937 NON_CODE +v 26607617 NON_CODE +v 27131905 NON_CODE +v 27394049 NON_CODE +v 27983873 NON_CODE +v 28704769 NON_CODE +v 29818881 NON_CODE +v 30670849 NON_CODE +v 31391745 NON_CODE +v 33554433 NON_CODE +v 33882113 NON_CODE +v 34996225 NON_CODE +v 35586049 NON_CODE +v 35979265 NON_CODE +v 38273025 NON_CODE +v 38666241 NON_CODE +v 39387137 NON_CODE +v 39649281 NON_CODE +v 51970049 NON_CODE +v 52363265 NON_CODE +v 65537 NON_IF +v 2686977 NON_IF +v 4653057 NON_IF +v 12976129 NON_IF +v 16187393 NON_IF +v 20119553 NON_IF +v 26214401 NON_IF +v 27066369 NON_IF +v 27328513 NON_IF +v 28573697 NON_IF +v 29687809 NON_IF +v 30539777 NON_ELSE +v 33423361 NON_IF +v 35520513 NON_IF +v 38141953 NON_IF +v 38207489 NON_IF +v 39321601 NON_IF +v 51904513 NON_IF +e 131073 65537 ba +e 3080193 65537 ba +e 4915201 65537 ba +e 14614529 65537 ba +e 16973825 65537 ba +e 20840449 65537 ba +e 25296896 65537 b +e 25493504 65537 a +e 25755649 65537 ba +e 26279937 26214401 ba +e 26607617 65537 ba +e 27131905 27066369 ba +e 27394049 27328513 ba +e 27983873 65537 ba +e 28704769 28573697 ba +e 29818881 29687809 ba +e 30670849 30539777 ba +e 31391745 28573697 ba +e 33554433 33423361 ba +e 33882113 28573697 ba +e 34996225 65537 ba +e 35586049 35520513 ba +e 35979265 65537 ba +e 38273025 38207489 ba +e 38666241 65537 ba +e 39387137 39321601 ba +e 39649281 65537 ba +e 51970049 51904513 ba +e 52363265 65537 ba +e 65537 1 ba +e 2686977 65537 ba +e 4653057 65537 ba +e 12976129 65537 ba +e 16187393 65537 ba +e 20119553 65537 ba +e 26214401 65537 ba +e 27066369 65537 ba +e 27328513 65537 ba +e 28573697 65537 ba +e 29687809 28573697 ba +e 30539777 29687809 ba +e 33423361 28573697 ba +e 35520513 65537 ba +e 38141953 65537 ba +e 38207489 38141953 ba +e 39321601 65537 ba +e 51904513 65537 ba t # Marlin/example_configurations/RigidBot/Configuration.h$$$5e6580abd8a5d85ded6e6979f454b579a8a1e126 -v 2 NON_ROOT -v 131074 NON_CODE -v 3080194 NON_CODE -v 4915202 NON_CODE -v 5570561 REM_CODE +v 1 NON_ROOT +v 131073 NON_CODE +v 3080193 NON_CODE +v 4915201 NON_CODE +v 5570560 REM_CODE v 5636096 ADD_CODE -v 5767170 NON_CODE -v 9699329 REM_CODE +v 5767169 NON_CODE +v 9699328 REM_CODE v 9830400 ADD_CODE -v 9961474 NON_CODE -v 10092545 REM_CODE +v 9961473 NON_CODE +v 10092544 REM_CODE v 10158080 ADD_CODE -v 10289154 NON_CODE -v 13303810 NON_CODE -v 14024705 REM_CODE +v 10289153 NON_CODE +v 13303809 NON_CODE +v 14024704 REM_CODE v 14352384 ADD_CODE -v 15138818 NON_CODE -v 16842754 NON_CODE -v 17498114 NON_CODE -v 19988481 REM_CODE +v 15138817 NON_CODE +v 16842753 NON_CODE +v 17498113 NON_CODE +v 19988480 REM_CODE v 20054016 ADD_CODE -v 20185090 NON_CODE -v 20840450 NON_CODE -v 21495810 NON_CODE -v 25952257 REM_CODE +v 20185089 NON_CODE +v 20840449 NON_CODE +v 21495809 NON_CODE +v 25952256 REM_CODE v 26148864 ADD_CODE -v 26411010 NON_CODE -v 26935298 NON_CODE -v 27262978 NON_CODE -v 27787266 NON_CODE -v 28049410 NON_CODE -v 28639234 NON_CODE -v 29360130 NON_CODE -v 30474242 NON_CODE -v 31326210 NON_CODE -v 32047106 NON_CODE -v 34209794 NON_CODE -v 34537474 NON_CODE -v 35651586 NON_CODE -v 36241410 NON_CODE -v 36634626 NON_CODE -v 37027841 REM_CODE +v 26411009 NON_CODE +v 26935297 NON_CODE +v 27262977 NON_CODE +v 27787265 NON_CODE +v 28049409 NON_CODE +v 28639233 NON_CODE +v 29360129 NON_CODE +v 30474241 NON_CODE +v 31326209 NON_CODE +v 32047105 NON_CODE +v 34209793 NON_CODE +v 34537473 NON_CODE +v 35651585 NON_CODE +v 36241409 NON_CODE +v 36634625 NON_CODE +v 37027840 REM_CODE v 37093376 ADD_CODE -v 37224450 NON_CODE -v 37355521 REM_CODE +v 37224449 NON_CODE +v 37355520 REM_CODE v 37552128 ADD_CODE -v 37879810 NON_CODE -v 38010881 REM_CODE +v 37879809 NON_CODE +v 38010880 REM_CODE v 38076416 ADD_CODE -v 38207490 NON_CODE -v 39256066 NON_CODE -v 39649282 NON_CODE -v 40370178 NON_CODE +v 38207489 NON_CODE +v 39256065 NON_CODE +v 39649281 NON_CODE +v 40370177 NON_CODE v 40632320 ADD_CODE -v 40960002 NON_CODE -v 42401793 REM_CODE +v 40960001 NON_CODE +v 42401792 REM_CODE v 42532864 ADD_CODE -v 42663938 NON_CODE -v 53084162 NON_CODE -v 53477378 NON_CODE -v 65538 NON_IF -v 2686978 NON_IF -v 4653058 NON_IF -v 13238274 NON_IF -v 16711682 NON_IF -v 20709377 REM_IF +v 42663937 NON_CODE +v 53084161 NON_CODE +v 53477377 NON_CODE +v 65537 NON_IF +v 2686977 NON_IF +v 4653057 NON_IF +v 13238273 NON_IF +v 16711681 NON_IF +v 20709376 REM_IF v 20774912 ADD_IF -v 26869762 NON_IF -v 27721730 NON_IF -v 27983874 NON_IF -v 29229058 NON_IF -v 30343170 NON_IF -v 31195138 NON_ELSE -v 34078722 NON_IF -v 36175874 NON_IF -v 39124994 NON_IF -v 39190530 NON_IF -v 40304642 NON_IF -v 53018626 NON_IF -e 131074 65538 ba -e 3080194 65538 ba -e 4915202 65538 ba -e 5570561 65538 b -e 5636096 65538 a -e 5767170 65538 ba -e 9699329 65538 b -e 9830400 65538 a -e 9961474 65538 ba -e 10092545 65538 b -e 10158080 65538 a -e 10289154 65538 ba -e 13303810 13238274 ba -e 14024705 13238274 b -e 14352384 13238274 a -e 15138818 65538 ba -e 16842754 16711682 ba -e 17498114 65538 ba -e 19988481 65538 b -e 20054016 65538 a -e 20185090 65538 ba -e 20840450 20709377 b -e 20840450 20774912 a -e 21495810 65538 ba -e 25952257 65538 b -e 26148864 65538 a -e 26411010 65538 ba -e 26935298 26869762 ba -e 27262978 65538 ba -e 27787266 27721730 ba -e 28049410 27983874 ba -e 28639234 65538 ba -e 29360130 29229058 ba -e 30474242 30343170 ba -e 31326210 31195138 ba -e 32047106 29229058 ba -e 34209794 34078722 ba -e 34537474 29229058 ba -e 35651586 65538 ba -e 36241410 36175874 ba -e 36634626 65538 ba -e 37027841 65538 b -e 37093376 65538 a -e 37224450 65538 ba -e 37355521 65538 b -e 37552128 65538 a -e 37879810 65538 ba -e 38010881 65538 b -e 38076416 65538 a -e 38207490 65538 ba -e 39256066 39190530 ba -e 39649282 65538 ba -e 40370178 40304642 ba -e 40632320 65538 a -e 40960002 65538 ba -e 42401793 65538 b -e 42532864 65538 a -e 42663938 65538 ba -e 53084162 53018626 ba -e 53477378 65538 ba -e 65538 2 ba -e 2686978 65538 ba -e 4653058 65538 ba -e 13238274 65538 ba -e 16711682 65538 ba -e 20709377 65538 b -e 20774912 65538 a -e 26869762 65538 ba -e 27721730 65538 ba -e 27983874 65538 ba -e 29229058 65538 ba -e 30343170 29229058 ba -e 31195138 30343170 ba -e 34078722 29229058 ba -e 36175874 65538 ba -e 39124994 65538 ba -e 39190530 39124994 ba -e 40304642 65538 ba -e 53018626 65538 ba +v 26869761 NON_IF +v 27721729 NON_IF +v 27983873 NON_IF +v 29229057 NON_IF +v 30343169 NON_IF +v 31195137 NON_ELSE +v 34078721 NON_IF +v 36175873 NON_IF +v 39124993 NON_IF +v 39190529 NON_IF +v 40304641 NON_IF +v 53018625 NON_IF +e 131073 65537 ba +e 3080193 65537 ba +e 4915201 65537 ba +e 5570560 65537 b +e 5636096 65537 a +e 5767169 65537 ba +e 9699328 65537 b +e 9830400 65537 a +e 9961473 65537 ba +e 10092544 65537 b +e 10158080 65537 a +e 10289153 65537 ba +e 13303809 13238273 ba +e 14024704 13238273 b +e 14352384 13238273 a +e 15138817 65537 ba +e 16842753 16711681 ba +e 17498113 65537 ba +e 19988480 65537 b +e 20054016 65537 a +e 20185089 65537 ba +e 20840449 20709376 b +e 20840449 20774912 a +e 21495809 65537 ba +e 25952256 65537 b +e 26148864 65537 a +e 26411009 65537 ba +e 26935297 26869761 ba +e 27262977 65537 ba +e 27787265 27721729 ba +e 28049409 27983873 ba +e 28639233 65537 ba +e 29360129 29229057 ba +e 30474241 30343169 ba +e 31326209 31195137 ba +e 32047105 29229057 ba +e 34209793 34078721 ba +e 34537473 29229057 ba +e 35651585 65537 ba +e 36241409 36175873 ba +e 36634625 65537 ba +e 37027840 65537 b +e 37093376 65537 a +e 37224449 65537 ba +e 37355520 65537 b +e 37552128 65537 a +e 37879809 65537 ba +e 38010880 65537 b +e 38076416 65537 a +e 38207489 65537 ba +e 39256065 39190529 ba +e 39649281 65537 ba +e 40370177 40304641 ba +e 40632320 65537 a +e 40960001 65537 ba +e 42401792 65537 b +e 42532864 65537 a +e 42663937 65537 ba +e 53084161 53018625 ba +e 53477377 65537 ba +e 65537 1 ba +e 2686977 65537 ba +e 4653057 65537 ba +e 13238273 65537 ba +e 16711681 65537 ba +e 20709376 65537 b +e 20774912 65537 a +e 26869761 65537 ba +e 27721729 65537 ba +e 27983873 65537 ba +e 29229057 65537 ba +e 30343169 29229057 ba +e 31195137 30343169 ba +e 34078721 29229057 ba +e 36175873 65537 ba +e 39124993 65537 ba +e 39190529 39124993 ba +e 40304641 65537 ba +e 53018625 65537 ba t # Marlin/example_configurations/RigidBot/Configuration_adv.h$$$5e6580abd8a5d85ded6e6979f454b579a8a1e126 -v 2 NON_ROOT +v 1 NON_ROOT t # Marlin/cardreader.cpp$$$fe9a5a103a4eb47168242cd912ff12bdd46a6602 -v 2 NON_ROOT -v 65538 NON_CODE -v 655362 NON_CODE -v 1900546 NON_CODE -v 12713986 NON_CODE -v 13369346 NON_CODE -v 13631490 NON_CODE -v 31719425 REM_CODE +v 1 NON_ROOT +v 65537 NON_CODE +v 655361 NON_CODE +v 1900545 NON_CODE +v 12713985 NON_CODE +v 13369345 NON_CODE +v 13631489 NON_CODE +v 31719424 REM_CODE v 31850496 ADD_CODE -v 31981570 NON_CODE -v 524290 NON_IF -v 1638402 NON_IF -v 8585218 NON_IF -v 12976130 NON_IF -v 13434882 NON_IF -e 65538 2 ba -e 655362 524290 ba -e 1900546 524290 ba -e 12713986 524290 ba -e 13369346 524290 ba -e 13631490 524290 ba -e 31719425 524290 b -e 31850496 524290 a -e 31981570 524290 ba -e 524290 2 ba -e 1638402 524290 ba -e 8585218 524290 ba -e 12976130 524290 ba -e 13434882 524290 ba +v 31981569 NON_CODE +v 524289 NON_IF +v 1638401 NON_IF +v 8585217 NON_IF +v 12976129 NON_IF +v 13434881 NON_IF +e 65537 1 ba +e 655361 524289 ba +e 1900545 524289 ba +e 12713985 524289 ba +e 13369345 524289 ba +e 13631489 524289 ba +e 31719424 524289 b +e 31850496 524289 a +e 31981569 524289 ba +e 524289 1 ba +e 1638401 524289 ba +e 8585217 524289 ba +e 12976129 524289 ba +e 13434881 524289 ba t # Marlin/SanityCheck.h$$$1b98577688772dc4ebae5469b918f00bb215d325 -v 2 NON_ROOT -v 65538 NON_CODE -v 458754 NON_CODE -v 1048578 NON_CODE -v 2031618 NON_CODE -v 3014658 NON_CODE -v 3473410 NON_CODE -v 5242882 NON_CODE -v 6422530 NON_CODE -v 6881282 NON_CODE -v 7340034 NON_CODE -v 8323074 NON_CODE -v 13893634 NON_CODE -v 14352386 NON_CODE -v 15859714 NON_CODE -v 16318466 NON_CODE -v 17301506 NON_CODE -v 18546690 NON_CODE -v 22151170 NON_CODE +v 1 NON_ROOT +v 65537 NON_CODE +v 458753 NON_CODE +v 1048577 NON_CODE +v 2031617 NON_CODE +v 3014657 NON_CODE +v 3473409 NON_CODE +v 5242881 NON_CODE +v 6422529 NON_CODE +v 6881281 NON_CODE +v 7340033 NON_CODE +v 8323073 NON_CODE +v 13893633 NON_CODE +v 14352385 NON_CODE +v 15859713 NON_CODE +v 16318465 NON_CODE +v 17301505 NON_CODE +v 18546689 NON_CODE +v 22151169 NON_CODE v 24248320 ADD_CODE v 24510464 ADD_CODE -v 393218 NON_IF -v 786434 NON_IF -v 1245186 NON_IF -v 2228226 NON_IF -v 3211266 NON_IF -v 3670018 NON_IF -v 5439490 NON_IF -v 5636098 NON_IF -v 6619138 NON_IF -v 7077890 NON_IF -v 7536642 NON_IF -v 8519682 NON_IF -v 14090242 NON_IF -v 14548994 NON_IF -v 16056322 NON_IF -v 16515074 NON_IF -v 17498114 NON_IF -v 18284546 NON_IF -v 18743298 NON_IF -v 20578306 NON_IF -v 20971522 NON_IF -v 21495810 NON_IF -v 22347778 NON_IF -v 22609922 NON_IF -v 22872066 NON_IF -v 23134210 NON_IF -v 23396354 NON_IF -v 23658498 NON_IF -v 23920642 NON_IF +v 393217 NON_IF +v 786433 NON_IF +v 1245185 NON_IF +v 2228225 NON_IF +v 3211265 NON_IF +v 3670017 NON_IF +v 5439489 NON_IF +v 5636097 NON_IF +v 6619137 NON_IF +v 7077889 NON_IF +v 7536641 NON_IF +v 8519681 NON_IF +v 14090241 NON_IF +v 14548993 NON_IF +v 16056321 NON_IF +v 16515073 NON_IF +v 17498113 NON_IF +v 18284545 NON_IF +v 18743297 NON_IF +v 20578305 NON_IF +v 20971521 NON_IF +v 21495809 NON_IF +v 22347777 NON_IF +v 22609921 NON_IF +v 22872065 NON_IF +v 23134209 NON_IF +v 23396353 NON_IF +v 23658497 NON_IF +v 23920641 NON_IF v 24182784 ADD_IF v 24444928 ADD_IF -e 65538 2 ba -e 458754 393218 ba -e 1048578 393218 ba -e 2031618 393218 ba -e 3014658 393218 ba -e 3473410 393218 ba -e 5242882 393218 ba -e 6422530 393218 ba -e 6881282 393218 ba -e 7340034 393218 ba -e 8323074 393218 ba -e 13893634 393218 ba -e 14352386 393218 ba -e 15859714 393218 ba -e 16318466 393218 ba -e 17301506 393218 ba -e 18546690 393218 ba -e 22151170 393218 ba +e 65537 1 ba +e 458753 393217 ba +e 1048577 393217 ba +e 2031617 393217 ba +e 3014657 393217 ba +e 3473409 393217 ba +e 5242881 393217 ba +e 6422529 393217 ba +e 6881281 393217 ba +e 7340033 393217 ba +e 8323073 393217 ba +e 13893633 393217 ba +e 14352385 393217 ba +e 15859713 393217 ba +e 16318465 393217 ba +e 17301505 393217 ba +e 18546689 393217 ba +e 22151169 393217 ba e 24248320 24182784 a e 24510464 24444928 a -e 393218 2 ba -e 786434 393218 ba -e 1245186 393218 ba -e 2228226 393218 ba -e 3211266 393218 ba -e 3670018 393218 ba -e 5439490 393218 ba -e 5636098 393218 ba -e 6619138 393218 ba -e 7077890 393218 ba -e 7536642 393218 ba -e 8519682 393218 ba -e 14090242 393218 ba -e 14548994 393218 ba -e 16056322 393218 ba -e 16515074 393218 ba -e 17498114 393218 ba -e 18284546 393218 ba -e 18743298 393218 ba -e 20578306 393218 ba -e 20971522 393218 ba -e 21495810 393218 ba -e 22347778 393218 ba -e 22609922 393218 ba -e 22872066 393218 ba -e 23134210 393218 ba -e 23396354 393218 ba -e 23658498 393218 ba -e 23920642 393218 ba -e 24182784 393218 a -e 24444928 393218 a +e 393217 1 ba +e 786433 393217 ba +e 1245185 393217 ba +e 2228225 393217 ba +e 3211265 393217 ba +e 3670017 393217 ba +e 5439489 393217 ba +e 5636097 393217 ba +e 6619137 393217 ba +e 7077889 393217 ba +e 7536641 393217 ba +e 8519681 393217 ba +e 14090241 393217 ba +e 14548993 393217 ba +e 16056321 393217 ba +e 16515073 393217 ba +e 17498113 393217 ba +e 18284545 393217 ba +e 18743297 393217 ba +e 20578305 393217 ba +e 20971521 393217 ba +e 21495809 393217 ba +e 22347777 393217 ba +e 22609921 393217 ba +e 22872065 393217 ba +e 23134209 393217 ba +e 23396353 393217 ba +e 23658497 393217 ba +e 23920641 393217 ba +e 24182784 393217 a +e 24444928 393217 a t # Marlin/pins_OMCA_A.h$$$afb8275528815a23a9946ee36e7336169d948dca -v 2 NON_ROOT -v 65538 NON_CODE -v 2293762 NON_CODE -v 2490369 REM_CODE +v 1 NON_ROOT +v 65537 NON_CODE +v 2293761 NON_CODE +v 2490368 REM_CODE v 2555904 ADD_CODE -v 2686978 NON_CODE -v 2883585 REM_CODE +v 2686977 NON_CODE +v 2883584 REM_CODE v 2949120 ADD_CODE -v 3080194 NON_CODE -v 3276801 REM_CODE +v 3080193 NON_CODE +v 3276800 REM_CODE v 3342336 ADD_CODE -v 3473409 REM_CODE +v 3473408 REM_CODE v 3670016 ADD_CODE -v 3932161 REM_CODE +v 3932160 REM_CODE v 4128768 ADD_CODE -v 4390913 REM_CODE +v 4390912 REM_CODE v 4587520 ADD_CODE -v 4849666 NON_CODE -v 5111809 REM_CODE +v 4849665 NON_CODE +v 5111808 REM_CODE v 5177344 ADD_CODE -v 5242882 NON_CODE -v 5439489 REM_CODE +v 5242881 NON_CODE +v 5439488 REM_CODE v 5505024 ADD_CODE -v 5570562 NON_CODE -v 2031618 NON_IF -e 65538 2 ba -e 2293762 2 ba -e 2490369 2 b -e 2555904 2 a -e 2686978 2 ba -e 2883585 2 b -e 2949120 2 a -e 3080194 2 ba -e 3276801 2 b -e 3342336 2 a -e 3473409 2 b -e 3670016 2 a -e 3932161 2 b -e 4128768 2 a -e 4390913 2 b -e 4587520 2 a -e 4849666 2 ba -e 5111809 2 b -e 5177344 2 a -e 5242882 2 ba -e 5439489 2 b -e 5505024 2 a -e 5570562 2 ba -e 2031618 2 ba +v 5570561 NON_CODE +v 2031617 NON_IF +e 65537 1 ba +e 2293761 1 ba +e 2490368 1 b +e 2555904 1 a +e 2686977 1 ba +e 2883584 1 b +e 2949120 1 a +e 3080193 1 ba +e 3276800 1 b +e 3342336 1 a +e 3473408 1 b +e 3670016 1 a +e 3932160 1 b +e 4128768 1 a +e 4390912 1 b +e 4587520 1 a +e 4849665 1 ba +e 5111808 1 b +e 5177344 1 a +e 5242881 1 ba +e 5439488 1 b +e 5505024 1 a +e 5570561 1 ba +e 2031617 1 ba t # Marlin/Conditionals.h$$$d3fe3a0962fdbdcd9548abaf765e0cff72d9cf8d -v 2 NON_ROOT -v 65538 NON_CODE -v 851970 NON_CODE -v 2818050 NON_CODE -v 5636098 NON_CODE -v 6488066 NON_CODE -v 7995394 NON_CODE -v 8847362 NON_CODE -v 12976130 NON_CODE -v 14221314 NON_CODE -v 14745602 NON_CODE -v 16121858 NON_CODE -v 17104898 NON_CODE -v 18284546 NON_CODE -v 19005442 NON_CODE -v 19529730 NON_CODE -v 20185090 NON_CODE -v 21233665 REM_CODE +v 1 NON_ROOT +v 65537 NON_CODE +v 851969 NON_CODE +v 2818049 NON_CODE +v 5636097 NON_CODE +v 6488065 NON_CODE +v 7995393 NON_CODE +v 8847361 NON_CODE +v 12976129 NON_CODE +v 14221313 NON_CODE +v 14745601 NON_CODE +v 16121857 NON_CODE +v 17104897 NON_CODE +v 18284545 NON_CODE +v 19005441 NON_CODE +v 19529729 NON_CODE +v 20185089 NON_CODE +v 21233664 REM_CODE v 21299200 ADD_CODE -v 21495810 NON_CODE -v 21692418 NON_CODE -v 21889026 NON_CODE -v 22085634 NON_CODE -v 22282242 NON_CODE -v 22675458 NON_CODE -v 22806530 NON_CODE -v 22937602 NON_CODE -v 23134210 NON_CODE -v 23461890 NON_CODE -v 23592962 NON_CODE -v 23789570 NON_CODE -v 24117250 NON_CODE -v 24248322 NON_CODE -v 24444930 NON_CODE -v 24772610 NON_CODE -v 24903682 NON_CODE -v 25100290 NON_CODE -v 25427970 NON_CODE -v 25559042 NON_CODE -v 25755650 NON_CODE -v 26017794 NON_CODE -v 26279938 NON_CODE -v 26411010 NON_CODE -v 26542082 NON_CODE -v 26673154 NON_CODE -v 26869762 NON_CODE -v 32505858 NON_CODE -v 32636930 NON_CODE -v 32768002 NON_CODE -v 33095682 NON_CODE -v 33226754 NON_CODE -v 33423362 NON_CODE -v 33619970 NON_CODE -v 33816578 NON_CODE -v 34078722 NON_CODE -v 34275330 NON_CODE -v 34471938 NON_CODE -v 34668546 NON_CODE -v 327682 NON_IF -v 458754 NON_IF -v 720898 NON_IF -v 1114114 NON_IF -v 1638402 NON_IF -v 2883586 NON_IF -v 3276802 NON_IF -v 3604482 NON_IF -v 3997698 NON_IF -v 4325378 NON_IF -v 4653058 NON_IF -v 5111810 NON_IF -v 5898242 NON_IF -v 6553602 NON_IF -v 8060930 NON_IF -v 9175042 NON_IF -v 9568258 NON_IF -v 11075586 NON_IF -v 13172738 NON_IF -v 13434882 NON_IF -v 14090242 NON_ELSE -v 14483458 NON_IF -v 15073282 NON_IF -v 16777218 NON_IF -v 17301506 NON_IF -v 18481154 NON_IF -v 19333122 NON_IF -v 19791874 NON_IF -v 20840450 NON_IF -v 21168130 NON_IF -v 21626882 NON_IF -v 21823490 NON_IF -v 22020098 NON_ELIF -v 22609922 NON_IF -v 22740994 NON_ELIF -v 22872066 NON_ELIF -v 23068674 NON_ELIF -v 23396354 NON_IF -v 23527426 NON_ELIF -v 23724034 NON_ELIF -v 24051714 NON_IF -v 24182786 NON_ELIF -v 24379394 NON_ELIF -v 24707074 NON_IF -v 24838146 NON_ELIF -v 25034754 NON_ELIF -v 25362434 NON_IF -v 25493506 NON_ELIF -v 25690114 NON_ELIF -v 26214402 NON_IF -v 26345474 NON_ELIF -v 26476546 NON_ELIF -v 26607618 NON_ELSE -v 32440322 NON_IF -v 32571394 NON_IF -v 32702466 NON_IF -v 33030146 NON_IF -v 33161218 NON_ELSE -v 33357826 NON_IF -v 33554434 NON_IF -v 33947650 NON_IF -v 34013186 NON_IF -v 34209794 NON_IF -v 34406402 NON_IF -v 34603010 NON_IF -e 65538 2 ba -e 851970 720898 ba -e 2818050 720898 ba -e 5636098 720898 ba -e 6488066 720898 ba -e 7995394 720898 ba -e 8847362 720898 ba -e 12976130 720898 ba -e 14221314 14090242 ba -e 14745602 14090242 ba -e 16121858 14090242 ba -e 17104898 14090242 ba -e 18284546 14090242 ba -e 19005442 14090242 ba -e 19529730 14090242 ba -e 20185090 14090242 ba -e 21233665 21168130 b -e 21299200 21168130 a -e 21495810 14090242 ba -e 21692418 21626882 ba -e 21889026 21823490 ba -e 22085634 22020098 ba -e 22282242 14090242 ba -e 22675458 22609922 ba -e 22806530 22740994 ba -e 22937602 22872066 ba -e 23134210 23068674 ba -e 23461890 23396354 ba -e 23592962 23527426 ba -e 23789570 23724034 ba -e 24117250 24051714 ba -e 24248322 24182786 ba -e 24444930 24379394 ba -e 24772610 24707074 ba -e 24903682 24838146 ba -e 25100290 25034754 ba -e 25427970 25362434 ba -e 25559042 25493506 ba -e 25755650 25690114 ba -e 26017794 14090242 ba -e 26279938 26214402 ba -e 26411010 26345474 ba -e 26542082 26476546 ba -e 26673154 26607618 ba -e 26869762 14090242 ba -e 32505858 32440322 ba -e 32636930 32571394 ba -e 32768002 32702466 ba -e 33095682 33030146 ba -e 33226754 33161218 ba -e 33423362 33357826 ba -e 33619970 33554434 ba -e 33816578 14090242 ba -e 34078722 34013186 ba -e 34275330 34209794 ba -e 34471938 34406402 ba -e 34668546 34603010 ba -e 327682 2 ba -e 458754 327682 ba -e 720898 327682 ba -e 1114114 720898 ba -e 1638402 720898 ba -e 2883586 720898 ba -e 3276802 720898 ba -e 3604482 720898 ba -e 3997698 720898 ba -e 4325378 720898 ba -e 4653058 720898 ba -e 5111810 720898 ba -e 5898242 720898 ba -e 6553602 720898 ba -e 8060930 720898 ba -e 9175042 720898 ba -e 9568258 720898 ba -e 11075586 720898 ba -e 13172738 720898 ba -e 13434882 720898 ba -e 14090242 720898 ba -e 14483458 14090242 ba -e 15073282 14090242 ba -e 16777218 14090242 ba -e 17301506 14090242 ba -e 18481154 14090242 ba -e 19333122 14090242 ba -e 19791874 14090242 ba -e 20840450 14090242 ba -e 21168130 14090242 ba -e 21626882 14090242 ba -e 21823490 14090242 ba -e 22020098 21823490 ba -e 22609922 14090242 ba -e 22740994 22609922 ba -e 22872066 22740994 ba -e 23068674 22872066 ba -e 23396354 14090242 ba -e 23527426 23396354 ba -e 23724034 23527426 ba -e 24051714 14090242 ba -e 24182786 24051714 ba -e 24379394 24182786 ba -e 24707074 14090242 ba -e 24838146 24707074 ba -e 25034754 24838146 ba -e 25362434 14090242 ba -e 25493506 25362434 ba -e 25690114 25493506 ba -e 26214402 14090242 ba -e 26345474 26214402 ba -e 26476546 26345474 ba -e 26607618 26476546 ba -e 32440322 14090242 ba -e 32571394 32440322 ba -e 32702466 32571394 ba -e 33030146 14090242 ba -e 33161218 33030146 ba -e 33357826 14090242 ba -e 33554434 14090242 ba -e 33947650 14090242 ba -e 34013186 33947650 ba -e 34209794 33947650 ba -e 34406402 33947650 ba -e 34603010 33947650 ba \ No newline at end of file +v 21495809 NON_CODE +v 21692417 NON_CODE +v 21889025 NON_CODE +v 22085633 NON_CODE +v 22282241 NON_CODE +v 22675457 NON_CODE +v 22806529 NON_CODE +v 22937601 NON_CODE +v 23134209 NON_CODE +v 23461889 NON_CODE +v 23592961 NON_CODE +v 23789569 NON_CODE +v 24117249 NON_CODE +v 24248321 NON_CODE +v 24444929 NON_CODE +v 24772609 NON_CODE +v 24903681 NON_CODE +v 25100289 NON_CODE +v 25427969 NON_CODE +v 25559041 NON_CODE +v 25755649 NON_CODE +v 26017793 NON_CODE +v 26279937 NON_CODE +v 26411009 NON_CODE +v 26542081 NON_CODE +v 26673153 NON_CODE +v 26869761 NON_CODE +v 32505857 NON_CODE +v 32636929 NON_CODE +v 32768001 NON_CODE +v 33095681 NON_CODE +v 33226753 NON_CODE +v 33423361 NON_CODE +v 33619969 NON_CODE +v 33816577 NON_CODE +v 34078721 NON_CODE +v 34275329 NON_CODE +v 34471937 NON_CODE +v 34668545 NON_CODE +v 327681 NON_IF +v 458753 NON_IF +v 720897 NON_IF +v 1114113 NON_IF +v 1638401 NON_IF +v 2883585 NON_IF +v 3276801 NON_IF +v 3604481 NON_IF +v 3997697 NON_IF +v 4325377 NON_IF +v 4653057 NON_IF +v 5111809 NON_IF +v 5898241 NON_IF +v 6553601 NON_IF +v 8060929 NON_IF +v 9175041 NON_IF +v 9568257 NON_IF +v 11075585 NON_IF +v 13172737 NON_IF +v 13434881 NON_IF +v 14090241 NON_ELSE +v 14483457 NON_IF +v 15073281 NON_IF +v 16777217 NON_IF +v 17301505 NON_IF +v 18481153 NON_IF +v 19333121 NON_IF +v 19791873 NON_IF +v 20840449 NON_IF +v 21168129 NON_IF +v 21626881 NON_IF +v 21823489 NON_IF +v 22020097 NON_ELIF +v 22609921 NON_IF +v 22740993 NON_ELIF +v 22872065 NON_ELIF +v 23068673 NON_ELIF +v 23396353 NON_IF +v 23527425 NON_ELIF +v 23724033 NON_ELIF +v 24051713 NON_IF +v 24182785 NON_ELIF +v 24379393 NON_ELIF +v 24707073 NON_IF +v 24838145 NON_ELIF +v 25034753 NON_ELIF +v 25362433 NON_IF +v 25493505 NON_ELIF +v 25690113 NON_ELIF +v 26214401 NON_IF +v 26345473 NON_ELIF +v 26476545 NON_ELIF +v 26607617 NON_ELSE +v 32440321 NON_IF +v 32571393 NON_IF +v 32702465 NON_IF +v 33030145 NON_IF +v 33161217 NON_ELSE +v 33357825 NON_IF +v 33554433 NON_IF +v 33947649 NON_IF +v 34013185 NON_IF +v 34209793 NON_IF +v 34406401 NON_IF +v 34603009 NON_IF +e 65537 1 ba +e 851969 720897 ba +e 2818049 720897 ba +e 5636097 720897 ba +e 6488065 720897 ba +e 7995393 720897 ba +e 8847361 720897 ba +e 12976129 720897 ba +e 14221313 14090241 ba +e 14745601 14090241 ba +e 16121857 14090241 ba +e 17104897 14090241 ba +e 18284545 14090241 ba +e 19005441 14090241 ba +e 19529729 14090241 ba +e 20185089 14090241 ba +e 21233664 21168129 b +e 21299200 21168129 a +e 21495809 14090241 ba +e 21692417 21626881 ba +e 21889025 21823489 ba +e 22085633 22020097 ba +e 22282241 14090241 ba +e 22675457 22609921 ba +e 22806529 22740993 ba +e 22937601 22872065 ba +e 23134209 23068673 ba +e 23461889 23396353 ba +e 23592961 23527425 ba +e 23789569 23724033 ba +e 24117249 24051713 ba +e 24248321 24182785 ba +e 24444929 24379393 ba +e 24772609 24707073 ba +e 24903681 24838145 ba +e 25100289 25034753 ba +e 25427969 25362433 ba +e 25559041 25493505 ba +e 25755649 25690113 ba +e 26017793 14090241 ba +e 26279937 26214401 ba +e 26411009 26345473 ba +e 26542081 26476545 ba +e 26673153 26607617 ba +e 26869761 14090241 ba +e 32505857 32440321 ba +e 32636929 32571393 ba +e 32768001 32702465 ba +e 33095681 33030145 ba +e 33226753 33161217 ba +e 33423361 33357825 ba +e 33619969 33554433 ba +e 33816577 14090241 ba +e 34078721 34013185 ba +e 34275329 34209793 ba +e 34471937 34406401 ba +e 34668545 34603009 ba +e 327681 1 ba +e 458753 327681 ba +e 720897 327681 ba +e 1114113 720897 ba +e 1638401 720897 ba +e 2883585 720897 ba +e 3276801 720897 ba +e 3604481 720897 ba +e 3997697 720897 ba +e 4325377 720897 ba +e 4653057 720897 ba +e 5111809 720897 ba +e 5898241 720897 ba +e 6553601 720897 ba +e 8060929 720897 ba +e 9175041 720897 ba +e 9568257 720897 ba +e 11075585 720897 ba +e 13172737 720897 ba +e 13434881 720897 ba +e 14090241 720897 ba +e 14483457 14090241 ba +e 15073281 14090241 ba +e 16777217 14090241 ba +e 17301505 14090241 ba +e 18481153 14090241 ba +e 19333121 14090241 ba +e 19791873 14090241 ba +e 20840449 14090241 ba +e 21168129 14090241 ba +e 21626881 14090241 ba +e 21823489 14090241 ba +e 22020097 21823489 ba +e 22609921 14090241 ba +e 22740993 22609921 ba +e 22872065 22740993 ba +e 23068673 22872065 ba +e 23396353 14090241 ba +e 23527425 23396353 ba +e 23724033 23527425 ba +e 24051713 14090241 ba +e 24182785 24051713 ba +e 24379393 24182785 ba +e 24707073 14090241 ba +e 24838145 24707073 ba +e 25034753 24838145 ba +e 25362433 14090241 ba +e 25493505 25362433 ba +e 25690113 25493505 ba +e 26214401 14090241 ba +e 26345473 26214401 ba +e 26476545 26345473 ba +e 26607617 26476545 ba +e 32440321 14090241 ba +e 32571393 32440321 ba +e 32702465 32571393 ba +e 33030145 14090241 ba +e 33161217 33030145 ba +e 33357825 14090241 ba +e 33554433 14090241 ba +e 33947649 14090241 ba +e 34013185 33947649 ba +e 34209793 33947649 ba +e 34406401 33947649 ba +e 34603009 33947649 ba diff --git a/src/test/resources/serialize/expected.tex b/src/test/resources/serialize/expected.tex index 1d957e43f..528ea4595 100644 --- a/src/test/resources/serialize/expected.tex +++ b/src/test/resources/serialize/expected.tex @@ -1,40 +1,40 @@ \begin{tikzpicture} - \coordinate (149) at (1.75,0.25); + \coordinate (144) at (1.75,0.25); \coordinate (592) at (1.75,1.25); - \coordinate (900) at (0.375,2.25); + \coordinate (899) at (0.375,2.25); \coordinate (3200) at (1.375,2.25); - \coordinate (3284) at (1.375,3.25); + \coordinate (3283) at (1.375,3.25); \coordinate (8192) at (2.9306,2.25); - \coordinate (8276) at (2.6667,3.25); + \coordinate (8275) at (2.6667,3.25); - \node[annotation, non] (node_149) at (149) {}; - \node[textbox] at (149) {\verb|1|}; + \node[annotation, non] (node_144) at (144) {}; + \node[textbox] at (144) {\verb|1|}; \node[annotation, non] (node_592) at (592) {}; \node[textbox] at (592) {\verb|8|}; - \node[artefact, add] (node_900) at (900) {}; - \node[textbox] at (900) {\verb|13|}; + \node[artifact, add] (node_899) at (899) {}; + \node[textbox] at (899) {\verb|13|}; \node[annotation, add] (node_3200) at (3200) {}; \node[textbox] at (3200) {\verb|49|}; - \node[artefact, non] (node_3284) at (3284) {}; - \node[textbox] at (3284) {\verb|50|}; + \node[artifact, non] (node_3283) at (3283) {}; + \node[textbox] at (3283) {\verb|50|}; \node[annotation, add] (node_8192) at (8192) {}; \node[textbox] at (8192) {\verb|127|}; - \node[artefact, non] (node_8276) at (8276) {}; - \node[textbox] at (8276) {\verb|128|}; + \node[artifact, non] (node_8275) at (8275) {}; + \node[textbox] at (8275) {\verb|128|}; \draw[vtdarrow] - (node_592) edge[before] (node_149) - (node_592) edge[after] (node_149) - (node_900) edge[after] (node_592) + (node_592) edge[before] (node_144) + (node_592) edge[after] (node_144) + (node_899) edge[after] (node_592) (node_3200) edge[after] (node_592) - (node_3284) edge[after] (node_3200) + (node_3283) edge[after] (node_3200) (node_8192) edge[after] (node_592) - (node_8276) edge[before] (node_592) - (node_8276) edge[after] (node_8192); + (node_8275) edge[before] (node_592) + (node_8275) edge[after] (node_8192); \end{tikzpicture} diff --git a/src/test/resources/serialize/testcase.lg b/src/test/resources/serialize/testcase.lg index 0b20a7ee3..d07223927 100644 --- a/src/test/resources/serialize/testcase.lg +++ b/src/test/resources/serialize/testcase.lg @@ -1,15 +1,15 @@ t # extract/of/thirdparty/vulkan/include/vulkan/vulkan_structs.hpp$$$fd641ac85c6170c34845db5e345d3bf9cedce8d7 -v 149 NON_ROOT_"" +v 144 NON_ROOT_"" v 592 NON_IF_"if -VULKAN_STRUCTS_HPP" -v 900 ADD_CODE_"" +v 899 ADD_CODE_"" v 3200 ADD_IF_"if -VULKAN_HPP_NO_STRUCT_SETTERS" -v 3284 NON_CODE_"" +v 3283 NON_CODE_"" v 8192 ADD_IF_"if -VULKAN_HPP_NO_UNION_CONSTRUCTORS" -v 8276 NON_CODE_"" -e 592 149 ba -e 900 592 a +v 8275 NON_CODE_"" +e 592 144 ba +e 899 592 a e 3200 592 a -e 3284 3200 a +e 3283 3200 a e 8192 592 a -e 8276 592 b -e 8276 8192 a +e 8275 592 b +e 8275 8192 a