{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:40:53",
  "duplicates" : [ {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "backend/src/main/kotlin/org/jetbrains/plugins/template/ModularPluginBackendBundle.kt",
        "extension" : "kt",
        "linesOfCode" : 13,
        "components" : [ "primary::backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 9,
      "endLine" : 16,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "shared/src/main/kotlin/org/jetbrains/plugins/template/ModularPluginSharedBundle.kt",
        "extension" : "kt",
        "linesOfCode" : 13,
        "components" : [ "primary::shared" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 9,
      "endLine" : 16,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "shared/src/main/kotlin/org/jetbrains/plugins/template/dtos.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::shared" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "shared/src/main/kotlin/org/jetbrains/plugins/template/dtos.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::shared" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "frontend/src/main/kotlin/org/jetbrains/plugins/template/chatApp/ui/PromptInput.kt",
        "extension" : "kt",
        "linesOfCode" : 146,
        "components" : [ "primary::frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "frontend/src/main/kotlin/org/jetbrains/plugins/template/chatApp/ui/PromptInput.kt",
        "extension" : "kt",
        "linesOfCode" : 146,
        "components" : [ "primary::frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 101
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "backend/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 23,
        "components" : [ "primary::backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 16,
      "endLine" : 26,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "frontend/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 25,
        "components" : [ "primary::frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 19,
      "endLine" : 29,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "backend/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 23,
        "components" : [ "primary::backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 1,
      "endLine" : 9,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "shared/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 19,
        "components" : [ "primary::shared" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 1,
      "endLine" : 9,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "frontend/src/main/kotlin/org/jetbrains/plugins/template/ModularPluginFrontendBundle.kt",
        "extension" : "kt",
        "linesOfCode" : 13,
        "components" : [ "primary::frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 9,
      "endLine" : 16,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "shared/src/main/kotlin/org/jetbrains/plugins/template/ModularPluginSharedBundle.kt",
        "extension" : "kt",
        "linesOfCode" : 13,
        "components" : [ "primary::shared" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 9,
      "endLine" : 16,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "backend/src/main/kotlin/org/jetbrains/plugins/template/ModularPluginBackendBundle.kt",
        "extension" : "kt",
        "linesOfCode" : 13,
        "components" : [ "primary::backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 9,
      "endLine" : 16,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "frontend/src/main/kotlin/org/jetbrains/plugins/template/ModularPluginFrontendBundle.kt",
        "extension" : "kt",
        "linesOfCode" : 13,
        "components" : [ "primary::frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 9,
      "endLine" : 16,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "backend/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 23,
        "components" : [ "primary::backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 26,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "shared/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 19,
        "components" : [ "primary::shared" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 13,
      "endLine" : 20,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "frontend/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 25,
        "components" : [ "primary::frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "shared/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 19,
        "components" : [ "primary::shared" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 13,
      "endLine" : 20,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  } ],
  "overallDuplication" : null
}